没有工作的PHP形式

问题描述 投票:0回答:5

所以我有一个基本的姓名,电子邮件和信息输入这个PHP形式,但我无法得到它的工作!我试图把ID和名称标签我的每一个表单元素,但它不会工作。

这里的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>
php forms input
5个回答
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>

0
投票

有连接到您的提交按钮没有name属性,你写的PHP代码监听POST数据名称“提交”。 更改此:

<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> <!-- Add a name attribute -->
</form>

为此:

<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" name="submit"></button> <!-- Name attribute added -->
</form>
© www.soinside.com 2019 - 2024. All rights reserved.