您好,我已经编辑了一些我在网上找到的代码,除了验证之外,一切都有效。即使所有字段在我创建的联系表单上都是空白的,它似乎总是发送电子邮件。这绝对是一个简单的修复,但我是新手,所以任何帮助对我来说意义重大!!
感谢。
下面是用于php脚本的代码:
/////////////////////////////////////////////// //////
<?php
// Contact subject
$subject ="$Email Enquiry";
// Details
$message=("$cComment") ;
// Mail of sender
$mail_from="$cEmail";
// From
$header="from: $cName <$mail_from>";
// Enter your email address
$to ='info@blahblahblah.net';
$send_contact=mail($to,$subject,$message, $header);
// Check, if message sent to your email
// display message "We've recived your information"
if($mail_from != "Email"){
header('Location:thanksemail.php');
}
else {
header('Location:emailfail.php');
}
?>
答案 0 :(得分:3)
在发送电子邮件之前,您需要检查变量是否为空。你可以这样做:
if(!empty($variable) and
!empty($variable2)) {
// send the email out here
}
我在这里使用empty()
函数来检测值是否为空。以下值被视为空值:
"" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) var $var; (a variable declared, but without a value in a class)
我还会避免使用标准的PHP邮件功能,而是使用PHPMailer或SwiftMailer这样的库来发送您的电子邮件。它们为您提供了更大的灵活性,并且可以使用更好的API。
答案 1 :(得分:0)
作为旁注,您可以通过验证电子邮件的发送方式来保存自己的一行或两行代码:
if(mail($to,$subject,$message, $header)){
header('Location:thanksemail.php');
}else {
header('Location:emailfail.php');
}
如果它回来了,它就被发送了。如果为false,则不会发送。
答案 2 :(得分:0)
您还没有任何支票代码。发送邮件的代码是$ send_contact = mail($ to,$ subject,$ message,$ header); 检查必须在此代码之前
试试这个
if($subject!="" && $cComment!="" && $cEmail!="" && $cName!="" && $mail_from!=""){
$send_contact=mail($to,$subject,$message, $header);
if($mail_from != "Email"){
header('Location:thanksemail.php');
}
else {
header('Location:emailfail.php');
}
}else{
header('Location:emailfail.php');
}
答案 3 :(得分:0)
您已将 mail()功能置于 if()语句之外。
移动它(并用其他字段填写if):
<?php
if(!empty($mail_from) && !empty($Email)) {
mail($to, $subject, $message, $header);
header('Location:thanksemail.php');
} else {
header('Location:emailfail.php');
}