联系表格提交错误
问题描述:
我已经设置了一个简单的联系表单,但在收尾过程中遇到了一些麻烦。每当提交表单时,我都会收到错误消息。希望有人可以看看我的代码并指出我的错误。谢谢!联系表格提交错误
(编辑)忘了提及的错误是,一旦表单被提交,我被重定向到错误页面(error.html),而不是成功(contactthanks.php)页面。
HTML:
<form method="post" action="contactengine.php">
<label for="Name">Name:</label>
<input type="text" name="Name" id="Name" />
<label for="City">City:</label>
<input type="text" name="City" id="City" />
<label for="Email">Email:</label>
<input type="text" name="Email" id="Email" />
<label for="Message">Message:</label><br />
<textarea name="Message" rows="20" cols="20" id="Message"></textarea>
<input type="submit" name="submit" value="Submit" class="submit-button" />
</form>
PHP:
<?php
$EmailFrom = "";
$EmailTo = "[email protected]";
$Subject = "";
$Name = Trim(stripslashes($_POST['Name']));
$Tel = Trim(stripslashes($_POST['Tel']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
exit;
}
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Tel: ";
$Body .= $Tel;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>
答
见什么导致了问题
ini_set("display_errors", "1");
error_reporting(E_ALL);`.
我的猜测是你有错SMTP设置和mail
功能失效。
答
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
它重定向到您的错误页面,因为调用mail
将返回false
(表示电子邮件是不接受交付),而这正是你告诉它在这种情况下做的。
您需要检查服务器上设置的SMTP。
通常,您的PHP.ini文件中要检查的设置是sendmail_from
和sendmail_path
。鉴于您已经设置了From
标题,sendmail_path
很可能没有正确设置。
...错误是? –
你从这得到了什么错误? – Gaurav
我想你只是给变量和输入类型命名。尝试不同的名字。像$ name = Trim(stripslashes($ _ POST ['Name'])); smaill'name'而不是大写'Name'。 希望它有帮助。 – Gaurav