まず、マークアップが有効であることを確認します。スペースを入れないでください(例:name ="name"
)。最低でも、あなたは<body>
タグの中にあなたの内容で、空白のHTML文書を持っている必要があります。
<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="read.php" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
これは、上記のフォームはread.php
または別のスクリプト内にあるかどうか、あなたの質問から不明ですか?
別々の場合(フォームがindex.php
など)、ブラウザでindex.php
を実行します。それは同じ相対ディレクトリになければならないread.php
に投稿する必要があります。フォームとPHPが同じスクリプトのの中にある場合は、ブラウザでread.php
を実行してください。
PHP自体では、投稿の内容を出力することでこれをデバッグすることをお勧めします。
var_dump($_POST);
動作すると、投稿後にフォームの内容を含む配列が取得されます。の後に表示されるのは、name
フィールドに入力して[送信]ボタンを押したときのみと表示されます。
array(1) { ["name"]=> string(4) "andy" }
あなたの質問にコードに戻って...あなたのコードのすべてが同じスクリプト内であれば何もその時点に掲示されていないため、それは、ページのロード時に「送らない」と言うだろう。 name
フィールドに入力して[送信]ボタンを押すと、「送信済み」のみが出力されます。
なぜこれがGETメソッドで機能するのか不思議でした。なぜなら、GETはフォームフィールドをURLに追加するからです。ページの読み込み時にindex.php
を実行します。 $_GET
のパラメータはありません。フォームを送信すると、URLが操作されます(例:index.php?name=andy
)。したがって、ページの読み込みでは「送信されません」と表示されますが、URLに?name=andy
が含まれると、GETパラメータであるため「送信済み」と表示されます。
最初に行うこと: '
'にあなたをラップしてください - htmlは無効なマークアップです - 次へ!var_dump $ _POSTを実行して何かが渡されたかどうかを確認します – ThisGuyHasTwoThumbs'if($ _ POST){}'を使う方が簡単だと思います。 – SuperDJ