【问题标题】:Contact form Error when submit提交时联系表错误
【发布时间】:2014-01-05 23:13:36
【问题描述】:

大家好,我遇到了一个问题,希望你们能帮助解决,我正在输入所有字段,然后在按下提交时,我得到的只是“错误!”在我的屏幕上。

请看代码:

HTML

<h2 class="formhead">Contact Form</h2>
<br>
  <form class="form" action="mail.php" method="POST">

    <p class="name">
        <input type="text" name="name" id="name" placeholder="John Doe" />
        <label for="name">Name</label>
    </p>
<br>
    <p class="email">
        <input type="text" name="email" id="email" placeholder="mail@example.com" />
        <label for="email">Email</label>
    </p>
<br>
    <p class="number">
        <input type="text" name="number" id="number" placeholder="0774XXXXXXX" />
        <label for="name">Contact Number</label>
    </p>
<br>
    <p class="web">
        <input type="text" name="web" id="web" placeholder="www.example.co.uk" />
        <label for="name">Website</label>
    </p>
<br>
    <p class="message">
        <textarea name="message" id="message" placeholder="Write something to us" /> </textarea>
    </p>
<br>
    <p class="submit">
        <input type="submit" value="Send"/>
    </p>
  </form>

PHP

<?php $name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$website = $_POST['web'];
$formcontent="From: $name \n Contact: $number \n Website: $web \n Message: $message";
$recipient = "enquiries@c(hidden)y.co.uk";
$subject = "Contact Form";
$mailheader = "From: $email ";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='contact.html' style='text-decoration:none;color:#ff0099;'> Return Home</a>";
?>

任何帮助将不胜感激!

谢谢

山姆

【问题讨论】:

  • 您会收到Error!,因为这是您的邮件声明中的“或死”部分。切换它以显示实际错误。
  • @DigitalChris 我猜是die("Error!");
  • 你的 mail() 函数失败了。检查您的 php_error.log 了解更多详细信息。您可以尝试删除$mailheader 上的\r\n,因为您没有多个额外的标头。
  • 您的一些$_post val 与您的HTML 不匹配。应该是,$message = $_POST['text']; $website = $_POST['web'];
  • @ilarsona 嘿,我是 PHP 的新手,如何将多个错误编码得更深入一点,一个例子就足够了。非常感谢谢谢你

标签: php html forms form-submit contact


【解决方案1】:

您的脚本总是报告'Error!',因为mail() 函数总是失败。那是因为您在 php 文件中使用的某些索引与表单中的输入名称不匹配:

改变这些:

$website = $_POST['website'];

到:

$website = $_POST['web'];

或者在你的表单中改变它。

您还必须为消息文本区域指定一个名称:

<textarea name="message" id="message" placeholder="Write something to us" />

如果无法连接到邮件服务器,这可能会再次失败。如果 SMTP 已禁用,您可能就是这种情况。

【讨论】:

    【解决方案2】:

    根据我的评论,这里有一个更好的 die 语句示例:

    <?
    $your_function or die("Error! a") // Just replace the letter a with anything. It serves as a simple link to your function that only you know.  so you can go back and check it
    

    【讨论】:

    • 你应该让它作为评论,因为它绝对是评论!
    • 你的意思是像 die("Error! $name") die ("Error! $web") etc?
    • 是的,我知道,我只是想让它脱颖而出。猜猜我可以做得很大胆
    • @Metexora 它可以是你想要的任何东西......它只是作为一个精确点为你服务......“它在这里失败了”
    • 错误如何指示表单的哪一部分失败,仅包含任何文本?
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2018-12-24
    • 1970-01-01
    相关资源
    最近更新 更多