1

PHP でデータを送信するときに正しいことを行っているかどうかを確認するためだけに、非常に単純なフォームを作成しました。3 つのラジオ ボタンだけで構成されており、他には何もありません。そうではありません、期待どおりに $_POST の値を取得できません。

フォーム:

<form name='testform' action='test.php' method='post'>
    <input type='radio' name='testbutton' value='larry' />
    <input type='radio' name='testbutton' value='curly' />
    <input type='radio' name='testbutton' value='moe' />
    <input type='submit' value='Submit'>
</form>

スクリプト、test.php:

if($_POST['testbutton'] == 'larry') {
    echo "You picked Larry";
} elseif($_POST['testbutton'] == 'curly') {
    echo "You picked Curly";
} else {
    echo "You picked Moe";
}

コードはエラーを返しませんが、どのボタンを選択しても、ボタンをまったく選択していない場合でも、常に Moe が返されます。var_dump($_POST) を使用しても何も得られず、空のスペースになります。print_r($_POST) を使用すると、何を選んでも 1 が返されます。ここで間違っていることを見つけることができません。

ところで、このコードが最適ではないことはわかっていますが、ここでテストしているだけです。

4

3 に答える 3

3

$_POST 変数に値を代入して上書きしている、ここには表示されていない他のコードがあると思われます。

まったく新しい php ファイルを作成し、ここに投稿したコードだけを入力すると、問題なく動作するはずです。

于 2012-06-10T23:40:58.283 に答える
0

これが古い投稿であることは承知していますが、不可解な問題をデバッグする場合、別の提案が「POST の欠如」データの謎を解決するのに役立つ場合があります。

私の場合、フォームを送信するために ajax を使用していました。JavaScript コード: "type: " を "GET" に設定し、サーバー側の PHP スクリプトで "$_POST" データを処理するコードの記述に進みました。だまされて、要求のビュー (Chrom 開発者ツールで見られるように) には正しい値があるため、値が送信されていることを確信できます。ただし、さらに詳しく調べると、応答ヘッダーに「GET」が表示されていることがわかります。

確かにダムエラー。これが、同様のデバッグ地獄から他の誰かを救うのに役立つことを願っています.

于 2017-08-07T17:39:50.287 に答える
-1
  • It is always good to add 'name' attribute to input element.
<input type="submit" name="MySubmit" value="Submit">
  • You are always getting Moe when not selecting anything. Assuming that you have not shown the entire code, this is what I can tell you:
if(isset($_POST['MySubmit'])) {

    $selected = $_POST['testbutton'];

    switch($selected){

        'larry': echo "You picked Larry";

                 break;

        'curly': echo "You picked Curly";

                 break;

         default: "You picked Moe";

                  break;

    }

}

else {

    echo "Form submit failed";

}
于 2012-06-10T23:55:42.580 に答える