我只是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>
答案 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将不会将提交按钮作为帖子变量发送。
答案 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";
}
?>