我有一个非常正常的表单链接到我网站上的html页面中的简单php脚本。它看起来如下
<form id="main-contact-form" class="contact-form" name="contact-form" enctype="multipart/form-data" method="post" action="sendemail.php" role="form">
<div class="row">
<div class="col-sm-5">
<div class="form-group">
<input type="text" class="form-control" name="first_name" id="first_name" required="required" placeholder="First Name">
</div>
<div class="form-group">
<input type="text" class="form-control" name="last_name" id="last_name" required="required" placeholder="Last Name">
</div>
<div class="form-group">
<input type="text" class="form-control" name="email "id="email" required="required" placeholder="Email address">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-lg">Send Message</button>
</div>
</div>
<div class="col-sm-7">
<textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
</div>
</div>
</form>
这是sendemail.php(表单数据发送的位置)。 § '成功', 'message'=&gt;'发送电子邮件!' );
$first_name = @trim(stripslashes($_POST['first_name']));
$email = @trim(stripslashes($_POST['email']));
$last_name = @trim(stripslashes($_POST['last_name']));
$message = @trim(stripslashes($_POST['message']));
$subject = "A new ewnquiry from your website!";
$email_from = "jackb@example.com";
$email_to = 'jackb@example.com';
$body = 'Name: ' . $first_name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
?>
电子邮件正在发送到正确的地址,并显示尚未从表单传递的变量($ subject)。
但是表格中的变量没有通过。
任何人都可以帮我看看问题所在。我是网站的新手。
答案 0 :(得分:3)
我正在提交这个答案,因为这是唯一可能产生空值的东西,如果这就是问题所在。
如果......你的整个代码都在同一个文件中,既是HTML表单又是PHP,那么这就解释了我怀疑的空值。
因此,您需要检查是否有空(或不是)。
所以你需要做这样的事情并使用条件!empty()
:
顺便说一下,您使用echo json_encode($status);
的错误变量应该是$success
,因为它的读数为null
。
if(!empty($_POST['first_name'])
&& !empty($_POST['email'])
&& !empty($_POST['last_name'])
&& !empty($_POST['message'])
){
$first_name = @trim(stripslashes($_POST['first_name']));
$email = @trim(stripslashes($_POST['email']));
$last_name = @trim(stripslashes($_POST['last_name']));
$message = @trim(stripslashes($_POST['message']));
$subject = "A new ewnquiry from your website!";
$email_from = "email@example.com";
$email_to = 'email@example.com';
$body = 'Name: ' . $first_name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($success);
die;
}
else{
echo "Something was left empty.";
}
顺便说一句,这是成功的测试。
如果您愿意,可以替换&&
||
。
&&
=&gt; AND
||
=&gt; OR
。