0

なぜこれが機能しないのですか?

以下のコードは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   " />
4

5 に答える 5

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">ます。

于 2011-01-26T15:55:58.553 に答える
0

HTMLではname="nameField"と書く必要があります。nameはidではなく投稿された値の名前です。そうであれば、上記のコードは正しく機能しているようです。

于 2011-01-26T15:57:02.387 に答える
0

フォームフィールドの名前は「Name」、IDは「nameField」です。したがって、どちらかを使用する必要があります

$ name = $ _POST ['Name'];

または、入力の名前をnameFieldに変更します

于 2011-01-26T15:57:38.753 に答える
0

Cookieについて:Cookieは、次のページの読み込み時にのみ有効になります。したがって、Cookieを設定した場合、別のページをロードするまでCookieを参照または使用することはできません。これは、それらがどのように機能するかという癖の1つにすぎません。

POSTについて:IDの代わりに$_POST['name_attribute']を使用する必要があります

于 2011-01-26T15:58:04.290 に答える
0

それが機能していないことをどうやって知っていますか?

Cookie(および$ _COOKIE)は、次のページが読み込まれるまで設定されません。クライアントがCookieを含むリクエストを送信する前に、Cookieを設定するヘッダーをクライアントに返す必要があります。

したがって、このスクリプトに対するHTTPリクエストがあり、出力とともに名前cookieを設定するヘッダーが返され、name cookieを取得(および$ _COOKIEに入力)する次のページのみになります。

さらに、前述のように、$ _POST[]はフォーム要素のname属性を参照します。テキストボックスには、idだけでなく、name='nameField'が必要です。

于 2011-01-26T15:58:25.477 に答える