繁体   English   中英

简单的PHP Cookie问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM