1

ここに簡単な質問があります:このようなコード

<input type="hidden" name="HDN_FormClicked" value="WasClicked" />

if (strlen($_POST["HDN_FormClicked"]) > 0){
  echo "You have clicked the button";
}

毎回入力値を確認しますか?では、なぜ最初に入力が0以下になるのでしょうか。初期設定ですか?

手伝ってくれてありがとう:)。

4

3 に答える 3

4

POSTこの値は、フォームを送信せずにページを初めてロードしたときではなく、フォームを作成したときにのみ (そして常に) 設定されます。その混乱を避けるために少し変更することができます

if(isset($_POST))
{
if (strlen($_POST["HDN_FormClicked"]) > 0){
  echo "You have clicked the button";
}
}
else
{
echo "Form was not submitted this time";
}
于 2013-03-13T16:14:55.653 に答える
3

悪い解決策ですが、質問への答えは次のとおりです。フォームの値がまだサーバーに送信されていないためです。したがって、最初に送信した後、それが満たされます。入力を表示するだけでは、データは送信されません。

于 2013-03-13T16:15:03.747 に答える
2

Pluto さん、ここで何かが抜けているか、フォームが PHP と通信する方法について少し誤解があるかもしれません。

PHP は、ページに表示されているフォーム データを認識していません。認識しているのは、テキストを出力していることだけです。フォーム送信を実行すると、PHP はフォーム データが渡されたことを認識します。

次のコードを含むページがあるとします。

<?php
if($_POST['HDN_FormClicked']) {
  print 'You have clicked the button';
} else {
  print 'Form was not submitted this time';
}
?>
<form method="post">
  <input type="hidden" name="HDN_FormClicked" value="1" />
  <button type="submit">Click</button>
</form>

デフォルトでは、フォームの上のテキストに「今回はフォームが送信されませんでした」と表示されます。

「クリック」ボタンを押すと、フォームがスクリプトに送信され、PHP はフォーム要素が渡されたことを検出し、「ボタンをクリックしました」と出力します。

于 2013-03-13T16:35:46.633 に答える