Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP设置cookie未保存有效数据_Php_Cookies - Fatal编程技术网

PHP设置cookie未保存有效数据

PHP设置cookie未保存有效数据,php,cookies,Php,Cookies,我遇到一个表单问题,该表单根据用户的第一次、第二次还是第三次访问显示不同的选项。第一次测试时,cookie数据都是有效的(尽管在单词和“%20”之间有“+”符号,而不是电子邮件地址中的@符号)。但是,当我第二次访问页面时,setcookie仅保存;?>。生成的电子邮件返回相同的“?>”数据,字段数据应在其中。我不明白为什么它会这样改变饼干 if (isset($_POST["firstname"])) { $firstname = $_POST["firstname"]; } else { i

我遇到一个表单问题,该表单根据用户的第一次、第二次还是第三次访问显示不同的选项。第一次测试时,cookie数据都是有效的(尽管在单词和“%20”之间有“+”符号,而不是电子邮件地址中的@符号)。但是,当我第二次访问页面时,setcookie仅保存
;?>。生成的电子邮件返回相同的“?>”数据,字段数据应在其中。我不明白为什么它会这样改变饼干

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为我指明了正确的方向!