0

私はPHPとHtmlの初心者です。これに関連するSOに関する多くの質問を見てきましたが、最終的に非常に単純に見える問題をどうにかして修正できません。だから、親切に助けてください。

次のコードは機能していないようです。このコードを実行すると、フォームの前に「現在問題が発生しているようです。しばらくしてからもう一度お試しください」というメッセージが常に表示されます。送信ボタンを押しても押さなくても変わりません。

<h2 >Inquiry form</h2>

<?php
    if (isset($_POST['submit'])){

        echo "Thank You!";
    }
    else {
        echo "There seems to be a problem right now. Please try again after sometime";
    }                                   

?> 

<form name="input" method="POST" action="contact.php">
    <label for="Name">Name (required):</label>
    <br />
    <input type="text" name="Name" />
    <br />
    <div class="clear"></div>
    <label for="inputmail">Email(required):</label>
    <br />
    <input type="text" name="email" />
    <br />
    <div class="clear"></div>
    <label for="inputtelefon">Phone:</label>
    <br />
    <input type="text" name="phone" />
    <br />
    <div class="clear"></div>
    <label for="inputmessage">Message:</label>
    <br/>
    <textarea name="message" cols="28" rows="3" ></textarea>
    <div class="clear"></div>
    <div id="send">
        <input type="submit" value=" Submit " />
        <input type="reset" value="  Clear  "  />
    </div>
</form>

変更されたコード:

<h2 >Inquiry form</h2>

                                  <?php
                                  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                            //if ($_SERVER['REQUEST_METHOD'] == 'POST') {  This is not working as well
                                        echo "Thank You!";
                                    }
                                    else {
                                        echo "There seem to be a problem right now. Please try again after sometime";
                                    }
                             ?> 

                       <form name="input" method="POST" action="contact.php">
                            <label for="Name">Name (required):</label>
                            <br />
                            <input type="text" name="Name" />
                            <br />
                             <div class="clear"></div>
                             <label for="inputmail">Email(required):</label>
                            <br />
                            <input type="text" name="email" />
                            <br />
                            <div class="clear"></div>
                            <label for="inputtelefon">Phone:</label>
                            <br />
                            <input type="text" name="phone" />
                            <br />
                            <div class="clear"></div>
                            <label for="inputmessage">Message:</label>
                            <br/>
                            <textarea name="message" cols="28" rows="3" ></textarea>
                            <div class="clear"></div>
                  </div>
                  <div id="send">
                <input type="submit" value=" Submit " name="submit"/>
                </div>
            </form>
4

4 に答える 4

7

これは、送信ボタンに名前がないためです。

<input type="submit" value=" Submit " name="submit"/>

編集

RandomCoder のコメントに基づいています (Marc B の回答)。

この同様の質問が見つかりました: isset($_POST['submit']) vs $_SERVER['REQUEST_METHOD']=='POST'

于 2013-02-25T18:29:16.333 に答える
4

送信を確認する方法が無効です。フォーム フィールドの有無を確認しないでください。信頼できません。フィールド名を変更することはできますが、PHP を更新するのを忘れてしまいます。代わりにこれを使用してください:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ...
}

これは 100% 信頼性が高く、POST が実行された場合は常に "true" になります。

于 2013-02-25T18:30:36.327 に答える
1

更新された if ステートメントを見てください。つまり、フォームが送信された場合は「ありがとうございます」と表示され、フォームが送信されていない場合は「問題があるようです」と表示されます。

elseこれが、フォームを送信せずに表示すると、if ステートメントのブロックが起動するため、常に「問題があるようです」と表示される理由です。

else意味がないため、ブロックを削除する必要があるため、次のようになります。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // form has been submitted, handle the data and say thanks...
    echo "Thank You!";
}

ユーザーがフォームを送信するために Enter キーを押した場合、Internet Explorer は送信ボタンを post 変数として送信しないため、送信ボタンをチェックする代わりにこのメソッドを使用する方が適切です。

詳細情報 -Why isset($_POST['submit'])悪いです。

于 2013-02-26T09:47:33.103 に答える
0

私が見る理由は1つだけです。つまり、変数に送信する名前を定義していないということです。送信フォームを見つけるには、次の2つの方法があります。

いずれかの変更:

 <input type="submit" value=" Submit " />

 to

 <input type="submit" value=" Submit " name="submit"/>

または、このようなことを行うために余分な行を追加します

 <input type = "hidden" name="passed" />

とチェックする

 <?php
      if (isset($_POST['passed'])){
          echo "Thank You!";
      }else {
           echo "There seems to be a problem right now. Please try again after sometime";
      }                                   

 ?> 
于 2013-02-25T18:36:52.360 に答える