【问题标题】:Contact form not working联系表格不起作用
【发布时间】:2012-04-24 10:42:24
【问题描述】:

我对网络编程很陌生,正在尝试建立一个个人网站并使其运行。我有一个似乎没有执行任何操作的联系表。我在网上翻遍了寻找我的代码中的错误,但我碰壁了。

标题中的脚本

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://html5form.googlecode.com/svn/trunk/jquery.html5form-1.5-min.js"></script>

html5表单

<form action="message.php" method="post" id="message_form">
    <fieldset>
        <input type="email" name="email" id="email" title="Email address" maxlength="40" placeholder="Email Address" autocomplete="off" required />
        <br />
        <input type="text" name="subject" id="subject" title="Subject" maxlength="60" placeholder="Subject" autocomplete="off" required />
        <br />
        <textarea name="message" id="message" title="Message" cols="30" rows="5" maxlength="1000" placeholder="Message" required></textarea>
        <br />
        <input type="submit" value="Send" id="submit" name="submit"/>
    </fieldset>
</form>

正文中的脚本(链接)

$('#message_form').html5form({
    allBrowsers : true,
    responseDiv : '#response',
    messages: 'en',
    messages: 'es',
    method : 'GET',
    colorOn :'#0d85a5',
    colorOff :'#d2d2d2'
});

message.php

<?php
if ('POST' === $_SERVER['REQUEST_METHOD']) {
$to = "rbblakeley@gmail.com";
$from = "r.blakeley@yahoo.com";
$subject = "test subject";
$message = "test message";

$body = "$from\n $message";

echo "Your message has been sent!";
mail($to, $subject, $body);
} else {
echo "Rapscallions! Please try again.";
}
?>

在本地 MAMP 服务器上进行测试并上传到我的远程主机 (bluehost),当我点击“发送”时没有任何反应,除了表单重置为占位符值。帮助。

【问题讨论】:

  • 除非您碰巧在运行邮件服务器,否则在本地就不足为奇了。最好的测试方法是删除你不需要的所有东西,你可以运行 mail() 函数并对值进行硬编码以确保在继续之前有效。
  • @Dragon 你是说它看起来不错,但我需要把它拆掉才能开始解决问题?
  • 在 S.O 上,通常有人会给你确切的答案,但学会自己解决问题会有很长的路要走。
  • @dagon 尝试对 php 变量进行硬编码,并为提交输入命名......仍然停留在同一个地方。
  • 您是否只运行 mail() 函数而没有其他任何内容 - 如果失败,请询问您的主机。

标签: php html contact-form


【解决方案1】:

您忘记为提交按钮命名

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

一个更好的方法可能是代替

if(isset($_POST["submit"])){

用途:

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

此方法不检查特定变量。它检查请求方法,如果是 POST,则表单已提交。

【讨论】:

  • 尝试了您的建议,但没有任何改变。仍然没有错误代码,谢谢您的消息或电子邮件发送。
  • 您有正确的建议,但我的网站中缺少一个 php.ini 文件。这和那让一切正常。谢谢。
【解决方案2】:

$_POST 包含键的关联数组(来自输入上的 name)及其各自的值。

由于没有输入具有name='submit',因此您的if 语句将始终为假。

无论如何,您可能想要使用这样的东西(最好检查一下是否正确):

if(empty($_POST['subject']) || empty($_POST['email'] || empty($_POST['message'])){
    echo "Rapscallions! Please try again.";
} else {
    // do your thing
}

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 2016-10-28
    • 2014-10-04
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多