2017-07-27 17 views
0

私はこのシンプルなhtmlフォームを使用し、postメソッドを使用しています。postメソッドはhtmlフォームでは機能しません

<html> 
    <form action = "read.php" method="post"> 
     <input type="text" name ="name"> 
     <input type="submit"> 
    </form> 
</html> 

とここに私のPHPです:

if(isset($_POST["name"])){ 
    echo "sent"; 
} 
else 
{ 
    echo "not sent"; 
} 

私はコード「送信されません」というメッセージを実行するとappear.Itはすべてが OKですが、それは正しくGETメソッドの仕事に対し、動作しないようですします"送信された"メッセージを表示します。問題は何ですか?

+3

最初に行うこと: ''にあなたをラップしてください - htmlは無効なマークアップです - 次へ!var_dump $ _POSTを実行して何かが渡されたかどうかを確認します – ThisGuyHasTwoThumbs

+2

タグは ''タグに属します。正しくフォーマットされたHTML文書を作成することから始めてください。 – RiggsFolly

+1

'if($ _ POST){}'を使う方が簡単だと思います。 – SuperDJ

答えて

0

まず、マークアップが有効であることを確認します。スペースを入れないでください(例: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パラメータであるため「送信済み」と表示されます。

+0

'var_dump($ _ POST)'を使うと、ファイルは別々で同じパスになります。 私は 'array(0){}'というメッセージを受け取ります。 –

+0

@ erfan.sajjadieは完全に正しいです。記入してフォームを提出した後にのみ出力が表示されます。試してみて、配列が出力されるのですか? '$ _GET'の説明を追加しました – Andy

+0

どうすればよいのでしょうか?ページの読み込みに何も言わないといいですか?ユーザーがSubmitを押すと、チェックが行われますか?あなたのコードは、フォームが提出されたかどうかをチェックすることさえしていないので、常に出力されます。あなたは単に「名前のフィールドが投稿されましたか?任意の時点ではい/いいえ(送信された/送られなかった)結果を有する。 – Andy

-3

bodyタグがないことを除いて、スクリプトは正常に動作します。

フォームが送信される前に「送信されません」というメッセージは避けたいですか?

使用この:

<?php 
    if ($_POST) { 
     if(isset($_POST["name"])){ 
      echo "sent"; 
     } 
     else 
     { 
      echo "not sent"; 
     } 
    } 
?> 

あなたが前に存在して$ _POST配列(ポストを意味するが、送信された)かどうかをチェックし、次にもし$ _POST [ "名前"]この方法は、値を持っている

関連する問題