簡體   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