ここに簡単な質問があります:このようなコード
<input type="hidden" name="HDN_FormClicked" value="WasClicked" />
if (strlen($_POST["HDN_FormClicked"]) > 0){
echo "You have clicked the button";
}
毎回入力値を確認しますか?では、なぜ最初に入力が0以下になるのでしょうか。初期設定ですか?
手伝ってくれてありがとう:)。
ここに簡単な質問があります:このようなコード
<input type="hidden" name="HDN_FormClicked" value="WasClicked" />
if (strlen($_POST["HDN_FormClicked"]) > 0){
echo "You have clicked the button";
}
毎回入力値を確認しますか?では、なぜ最初に入力が0以下になるのでしょうか。初期設定ですか?
手伝ってくれてありがとう:)。
POST
この値は、フォームを送信せずにページを初めてロードしたときではなく、フォームを作成したときにのみ (そして常に) 設定されます。その混乱を避けるために少し変更することができます
if(isset($_POST))
{
if (strlen($_POST["HDN_FormClicked"]) > 0){
echo "You have clicked the button";
}
}
else
{
echo "Form was not submitted this time";
}
悪い解決策ですが、質問への答えは次のとおりです。フォームの値がまだサーバーに送信されていないためです。したがって、最初に送信した後、それが満たされます。入力を表示するだけでは、データは送信されません。
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 はフォーム要素が渡されたことを検出し、「ボタンをクリックしました」と出力します。