题
为什么不这样做?
以下代码在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"
此输入的名称必须是 名字 , 也。
<input type="text" id="nameField" name="nameField"
$ _get 和 $ _ post 变量通过名称获得表单输入的值。例如 $_GET['stack']
和 $_POST['stack']
得到 <input name="stack">
的价值。
其他提示
在html中,您应该写名=“ namefield”,名称是发布值而不是ID的名称,如果是,上面的代码似乎正常工作
表单字段的名称为“名称”,ID为“名字”。因此,您需要使用
$ name = $ _post ['name'];
或将输入上的名称更改为namefield
关于cookie:cookie只能在下一页加载上生效。因此,如果您设置了cookie,则无法引用或使用cookie,直到加载另一页。这只是他们工作方式的怪癖之一。
关于帖子:您需要使用$ _post ['name_attribute']而不是ID
您怎么知道它不起作用?
在 下一个 页面加载 - 它必须返回将cookie设置为客户端的标头,然后客户将其请求与cookie一起发送。
因此,将为此脚本提出HTTP请求,它将返回标题与任何输出一起设置名称Cookie,并且只会是下一页,将获得(并填充$ _COOKIE)使用名称Cookie。
另外,如前所述,$ _post []引用表单元素的名称属性。您的文本框需要具有名称='nameField',而不仅仅是ID。
不隶属于 StackOverflow