Php表单不工作

Php表单不工作,php,forms,input,Php,Forms,Input,所以我有一个PHP表单,包含基本名称、电子邮件和消息输入,但是我无法让它工作!我已经尝试为我的每个表单元素放置ID和名称标签,但它不起作用 下面是php代码片段 <?php if(isset($_POST['submit'])) { $to = "xxx@example.com.br"; $subject = "Success!"; $name_field = $_POST['nome']; $email_field = $_POST['email'];

所以我有一个PHP表单,包含基本名称、电子邮件和消息输入,但是我无法让它工作!我已经尝试为我的每个表单元素放置ID和名称标签,但它不起作用

下面是php代码片段

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

    $to = "xxx@example.com.br"; 
    $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>

名称:
电子邮件:
信息:

您尚未定义“提交”字段(表单中没有
name=“submit”
),因此您的
if()
测试失败

检查POST的更好方法是

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

该条目始终存在,并且比检查特定字段更可靠。

我建议您替换此代码:

if(isset($_POST['submit'])) {
用一些显而易见的东西,比如:

if(isset($_POST['email'])) {
此外,还有两个错误:
这:

应该是:

$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];
另外,您需要检查
mail()
是否返回
true
。更改:

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


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

而不是
$name\u field=$\u POST['name']
在POST checking语句中,使用
$name\u field=$\u REQUEST['name']
请求
$\u
将始终获取您提交表单的输入字段的
名称=

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

    $to = "xxx@xxx.com.br"; 
    $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;
}

?>


这应该行得通

这只是一个DOM错误,只要更改您的输入字段name=“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>

名称:
电子邮件:
信息:

提交按钮没有名称属性,您编写的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>

名称:
电子邮件:
信息:

是否有任何错误消息或消息只是不发送?在html中,这是“name”=>name\u field=$\u POST['nome'];这是“消息”=>$message=$\u POST['mensage'];首先更正您的代码,检查它是否有效,然后再次询问!它是linux还是windows服务器。将您的
$body
\n
替换为
PHP\u EOL
$\u POST['mensage']
不应该是
$\u POST['message']
@kjy112:
\n
将在Windows和Linux服务器上被平等地解析和处理。
PHP\u EOL
的真正目的是不同的——处理文件而不用担心平台。另外,
PHP\u EOL
不适用于正则表达式,这是一个缺点。只要我的两分钱:)@Andrejs在windows服务器上返回的是
\r\n
,因此如果换行符是
\n
,则不会发送电子邮件。然后,PHP脚本将检测到此帖子数据已发送。
<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>