2011-03-11 91 views
0

所以我有这个基本名称,电子邮件和消息输入的PHP表单,但是我无法让它工作!我已经尝试为每个表单元素放置ID和NAME标记,但它不起作用。Php表单不能正常工作

这里的PHP代码片段

<?php 
if(isset($_POST['submit'])) { 

    $to = "[email protected]"; 
    $subject = "Success!"; 
    $name_field = $_POST['nome']; 
    $email_field = $_POST['email']; 
    $message = $_POST['mensagem']; 
    $body = "From: $name_field\n E-Mail: $email_field\n $check_msg\n Message:\n $message\n"; 
    echo "Your form was sent!"; 
    mail($to, $subject, $body); 

} else { 
    echo "Ouch."; 
} 
?> 

<form action="../php/send.php" method="post"> 
<label>Name:</label><input id="name" name="name" /><br /> 
<label>Email:</label><input id="email" name="email" /><br /> 
<label>Message:</label> 
<textarea id="message" name="message" ></textarea><br /> 

<button type="submit" id="submit"></button> 
</form> 
+0

任何错误消息或消息是不是发送? – Prisoner

+0

in html这是'name'=> $ name_field = $ _POST ['nome'];这是'message'=> $ message = $ _POST ['mensagem']; 先纠正你的代码,检查它是否有效,然后再询问! – evilone

+0

是它的Linux或Windows服务器。用'PHP_EOL'和'$ _POST ['mensagem'];''不应该是'$ _POST ['message']' – kjy112

回答

2

您还没有定义的“提交”字段的形式(有形式没有name="submit"),所以你if()测试失败。

一种更好的方法来检查POST是

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

该条目是始终存在的,并且比检查特定领域更为可靠。

0

我建议你更换验证码的东西明显,像

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

if(isset($_POST['email'])) { 

此外,还有几个错误:
此:

$name_field = $_POST['nome']; 
$email_field = $_POST['email']; 
$message = $_POST['mensagem']; 

应该是:

$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 

此外,您还需要检查mail()回报true。变化:

echo "Your form was sent!"; 
mail($to, $subject, $body); 

要:

if(mail($to, $subject, $body)) { 
    echo "Your form was sent!"; 
} else { 
    echo "mail() returned error! Your form was not sent!"; 
} 

如果您确信mail()实际上是被没有任何错误执行,但邮件仍然没有被送出/到达收件人,检查服务器日志,也许你需要配置php(通常不是)或sendmail

0

取而代之的POST检查语句中$name_field = $_POST['name'];,使用$name_field = $_REQUEST['name'];$_REQUEST总会抓住你从提交表单的输入域的name=

<?php 
if(isset($_POST['submit'])) { 

    $to = "[email protected]"; 
    $subject = "Success!"; 
    $name_field = $_REQUEST['name']; 
    $email_field = $_REQUEST['email']; 
    $message = $_REQUEST['message']; 
    $body = "From: $name_field\n E-Mail: $email_field\n $check_msg\n Message:\n $message\n"; 
    echo "Your form was sent!"; 
    mail($to, $subject, $body); 
    // now do something else like adding thank you 

} else { 
    echo <<< END 
<form action="../php/send.php" method="post"> 
<label>Name:</label><input id="name" name="name" /><br /> 
<label>Email:</label><input id="email" name="email" /><br /> 
<label>Message:</label> 
<textarea id="message" name="message" ></textarea><br /> 

<button type="submit" id="submit"></button> 
</form> 

END; 
} 

?> 

这应该工作

0

这仅仅是一个DOM错误只是改变你的输入字段名=“MYNAME”或其他任何东西,它会解决你的问题。

<form action="../php/send.php" method="post"> 
<label>Name:</label><input id="name" name="my_name" /><br /> 
<label>Email:</label><input id="email" name="email" /><br /> 
<label>Message:</label> 
<textarea id="message" name="message" ></textarea><br /> 

<button type="submit" id="submit"></button> 
</form>