PHP设置cookie未保存有效数据
我遇到一个表单问题,该表单根据用户的第一次、第二次还是第三次访问显示不同的选项。第一次测试时,cookie数据都是有效的(尽管在单词和“%20”之间有“+”符号,而不是电子邮件地址中的@符号)。但是,当我第二次访问页面时,setcookie仅保存PHP设置cookie未保存有效数据,php,cookies,Php,Cookies,我遇到一个表单问题,该表单根据用户的第一次、第二次还是第三次访问显示不同的选项。第一次测试时,cookie数据都是有效的(尽管在单词和“%20”之间有“+”符号,而不是电子邮件地址中的@符号)。但是,当我第二次访问页面时,setcookie仅保存;?>。生成的电子邮件返回相同的“?>”数据,字段数据应在其中。我不明白为什么它会这样改变饼干 if (isset($_POST["firstname"])) { $firstname = $_POST["firstname"]; } else { i
;?>。生成的电子邮件返回相同的“?>”数据,字段数据应在其中。我不明白为什么它会这样改变饼干
if (isset($_POST["firstname"])) {
$firstname = $_POST["firstname"];
}
else {
if (isset($_COOKIE["modvisitor_fn"])) {
$firstname = $_COOKIE["modvisitor_fn"];
}
}
if (isset($_POST["lastname"])) {
$lastname = $_POST["lastname"];
}
else {
if (isset($_COOKIE["modvisitor_ln"])) {
$lastname = $_COOKIE["modvisitor_ln"];
}
}
if (isset($_POST["email"])) {
$email = $_POST["email"];
}
else {
if (isset($_COOKIE["modvisitor_e"])) {
$email = $_COOKIE["modvisitor_e"];
}
}
// Set a cookie with visitor information
$date_of_expiry = time()+60*60*24*30;
setcookie( "modvisitor_fn", $firstname, $date_of_expiry );
setcookie( "modvisitor_ln", $lastname, $date_of_expiry );
setcookie( "modvisitor_e", $email, $date_of_expiry );
仅供参考,我设置cookie的原因是,他们第二次访问时,不必在我们的表格中填写相同的信息,只需询问他们的头衔和公司
设置cookie时,它们必须与其他标题一起发送,在任何内容(如html,甚至空白)之前发送
请确保将您的setcookie()
放在可能向页面输出内容的任何其他代码之前
oh和rtm:)这并不能解释cookie的异常内容,因为cookie存储的是看起来像是结束行分号和php结束标记的内容;?>代码>,是的,它几乎解释了存储哪些字符而不是所需的内容,例如发送到浏览器的最后一个字符。所有PHP都在任何HTML之前。是的,我做了RTFM,我的代码符合格式,我得到了奇怪的输出。我的Cookie在Chrome设置中看起来不错——电子邮件显示为myname%40mydomain.com。然而,我电子邮件的表单内容输出奇怪的字符<代码>$message=“从$firstname$lastname($email)请求…”代码>我的电子邮件显示“FROM;?>;?>(;?>)…”这似乎是html表单中php语句的结尾。当设置奇数数据时,您是否检查过POST的内容。在这种情况下,表单只提供了几个项目,其他数据元素应该是从cookie加载的。当我打印POST变量时,我会得到这样的结果:“数组([email]=>;?>[company]=>;?>[firstname]=>;?>[lastname]=>;?>[title]=>;?>[comments]=>[visitnum]=>3[req]=>tool[Completed]=>Completed)”如果数据不是通过POST提交的,那么我希望这些项目显示为空(“”)???我发现了问题!不是cookies,而是从上一个表单的“隐藏”字段(从cookies中读取)带入的POST变量。我清除了\“错误,数据现在可以正确传输了。感谢xd6为我指明了正确的方向!