[英]Simple PHP cookie question
为什么不做这项工作?
下面的代码在send.php上
<?php
$expire=time()+60*60*24*30;
$name = $_POST['nameField'];
setcookie("name", $name, $expire);
?>
Cookie的值为空白。 为什么? 我该如何解决?
新问题:
为什么$ _POST ['nameField']为NULL?
<form action="/contact/send.php" method="post" id="contactForm">
<input type="text" id="nameField" name="Name" value="<?php if (isset($_COOKIE["name"])){ echo $_COOKIE["name"];} ?>" class="extra_large" />
<input type="submit" class="submit" name="Submit" value=" Send " />
<input type="text" id="nameField" name="Name"
此输入的名称也必须是nameField 。
<input type="text" id="nameField" name="nameField"
$ _GET和$ _POST变量按名称获取表单输入的值。 例如, $_GET['stack']
和$_POST['stack']
获得<input name="stack">
的值。
在HTML中,您应该输入name =“ nameField”,name是发布值的名称,而不是id,如果是,则上面的代码似乎正常工作
表单字段的名称为“名称”,id为“ nameField”。 因此,您需要使用
$ name = $ _POST ['Name'];
或将输入的名称更改为nameField
关于cookie:cookie仅在下一页加载时生效。 因此,如果您设置一个cookie,则在加载另一个页面之前,您不能引用或使用该cookie。 这只是它们如何工作的怪癖之一。
关于POST:您需要使用$ _POST ['name_attribute']代替ID
您怎么知道它不起作用?
Cookies(以及$ _COOKIE)直到下一页加载时才被设置-它必须返回将cookie设置为客户端的标头,然后客户端才能发送包含cookie的请求。
因此,此脚本将有一个HTTP请求,它将返回标头以设置名称cookie以及任何输出,并且仅是将使用名称cookie获得(并填充$ _COOKIE)的下一页。
另外,如上所述,$ _ POST []引用表单元素的名称属性。 您的文本框需要具有name ='nameField',而不仅仅是id。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.