为什么不这样做?
以下代码在send.php上
<?php
$expire=time()+60*60*24*30;
$name = $_POST['nameField'];
setcookie("name", $name, $expire);
?>
Cookie的值为空。为什么?我该如何解决这个问题?
新问题:
为什么$ _POST ['nameField']为空?
<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 " />
答案 0 :(得分:1)
<input type="text" id="nameField" name="Name"
此输入的名称也必须是 nameField 。
<input type="text" id="nameField" name="nameField"
$ _ GET 和 $ _ POST 变量按名称获取表单输入的值。例如,$_GET['stack']
和$_POST['stack']
获取<input name="stack">
的值。
答案 1 :(得分:0)
在HTML中你应该写name =“nameField”,name是发布值的名称而不是id,如果是,上面的代码似乎工作正常
答案 2 :(得分:0)
表单字段的名称是“Name”,id是“nameField”。因此,您需要使用
$ name = $ _POST ['Name'];
或将输入上的名称更改为nameField
答案 3 :(得分:0)
关于cookie:Cookies只会在下一页加载时生效。因此,如果您设置了cookie,则在加载其他页面之前,您无法引用或使用该cookie。这只是他们工作方式的一个怪癖。
关于POST:您需要使用$ _POST ['name_attribute']而不是ID
答案 4 :(得分:0)
你怎么知道它不起作用?
在 next 页面加载之前,不会设置Cookie(以及$ _COOKIE) - 它必须返回将cookie设置为客户端的标头,然后客户端才会发送请求饼干在里面。
因此,对此脚本将有一个HTTP请求,它将返回标头以设置名称cookie以及任何输出,并且只会是将获得(并填充$ _COOKIE)名称cookie的下一页。 / p>
此外,如上所述,$ _POST []引用表单元素的name属性。您的文本框需要具有name ='nameField',而不仅仅是id。