PHP无法联系我们表单

时间:2013-02-25 18:27:55

标签: php html

我只是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 个答案:

答案 0 :(得分:7)

那是因为你的提交按钮没有名字:

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

修改

基于RandomCoder的评论(在Marc B的回答中)。

发现了类似的问题:isset($_POST['submit']) vs $_SERVER['REQUEST_METHOD']=='POST'

答案 1 :(得分:4)

检查提交的无效方法。切勿检查表单字段的存在/不存在。这是不可靠的。您可以更改字段名称,但忘记更新PHP。请改用:

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

它是100%可靠的,如果执行了POST,它将始终为“true”。

答案 2 :(得分:1)

查看更新后的if语句。它说:如果表格已经提交,那么显示“谢谢”,如果表格尚未提交,则显示“似乎有问题”。

这就是你总是看到“似乎有问题”的原因,因为当你在不提交表单的情况下查看表单时,你的if语句的else块会触发。

您应该删除else块,因为它没有任何意义,因此它变为:

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

使用此方法而不是检查提交按钮更好,因为如果用户按下回车键提交表单,Internet Explorer将不会将提交按钮作为帖子变量发送。

更多信息 - Why isset($_POST['submit']) is bad

答案 3 :(得分:0)

我看到的原因只有一个,即您没有将名称提交给任何变量。有两种方法可以找到提交表单:

要么改变:

 <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";
      }                                   

 ?>