2012-04-24 113 views
0

我对网络编程相当陌生,并且正试图让一个个人网站正常运行。我有一个似乎没有执行任何事情的联系表单。我已经在网上搜寻了我的代码中的错误,但是我碰到了一堵墙。联系表格无法正常工作

脚本头

<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 = "[email protected]"; 
$from = "[email protected]"; 
$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)时,除非表单重置为占位符值,否则当我点击“发送”时没有任何反应。帮帮我。

+0

本地它并不奇怪,除非你碰巧要运行邮件服务器。最好的测试方法是删除所有不需要的东西,只需运行mail()函数并对值进行硬编码,以确保在继续前进行工作。 – 2012-04-24 01:10:54

+0

@Dragon所以你说它看起来不错,但我需要去掉它开始排除故障?在S.O上有 – rojobuffalo 2012-04-24 01:26:19

+1

有人通常会给你确切的答案,但学习解决你的困难会有很长的路要走。 – 2012-04-24 01:29:36

回答

0

你忘了给您的提交按钮的名称

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

一个更好的办法来做到这一点可能是代替

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

用途:

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

这种方法没有按”检查一个特定的变量。它检查请求方法,如果它是POST,则表单被提交。

+0

试过你的建议,但没有改变。仍然没有错误代码,谢谢你的消息或电子邮件发送。 – rojobuffalo 2012-04-24 01:41:05

+0

你有适当的建议,但我错过了我的网站上的php.ini文件。这和那一切工作。谢谢。 – rojobuffalo 2012-04-27 09:06:22

0

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

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

在任何情况下,你可能会想使用这样的事情(这是一个更好的检查,看看如果事情是正确的):

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