为什么不这样做?

以下代码在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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top