我制作了一个小系统来报名参加活动。这一切都像一个魅力,就像我想要的那样。但是当我今天检查它时,人们在注册参加活动后获得的确认电子邮件将不再发送。一切都像以前一样工作,但只是邮件不再发送。我在代码中添加了一些内容,然后它就不再发送了。
我添加了(!filter_var($email, FILTER_VALIDATE_EMAIL)
以验证电子邮件地址是否格式正确。因此,如果电子邮件不正确,或者邮件因任何其他原因而未发送,您将被重定向到fail.html。否则,您将被重定向到succes.html。在重做变更并重复检查所有内容后,我无法找到错误的内容。任何可以告诉我代码有什么问题的人?
<?php
$connect=mysqli_connect('xxxx','xxxxx','xxxxx','xxxxxx');
if(mysqli_connect_errno($connect))
{
echo 'Failed to connect';
}
// create a variable
$naam=$_POST['naam'];
$email=$_POST['email'];
$club=$_POST['club'];
$eten=$_POST['eten'];
$moment=$_POST['moment'];
$slapen=$_POST['slapen'];
$acro=$_POST['acro'];
$opmerkingen=$_POST['opmerkingen'];
$datum=$_POST['datum'];
$dateTime = new DateTime("now", new DateTimeZone('Europe/Brussels'));
$mysqldate = $dateTime->format("d-m-Y H:i:s");
//Execute the query
mysqli_query($connect,"INSERT INTO registered (`naam`,`email`,`club`,`eten`,`moment`,`slapen`,`acro`,`opmerkingen`) VALUES('$naam','$email','$club','$eten','$moment','$moment','$acro','$opmerkingen')");
//Mail sending function
$subject = 'Bevestiging inschrijving JWDW van ' . htmlspecialchars($_POST["naam"]);
$to = $_POST['email'];
$from = "xxxxxxx@hotmail.com";
//data
$msg = "<html>
<body>
xxxxxxxxxx
</center>
</body>
</html>";
//Headers
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: <".$from. ">" ;
mail($to,$subject,$msg,$headers);
echo "Verwerken...";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)or(mysqli_affected_rows($connect) < 0)){
echo '<script type="text/javascript">
window.location = "fail.html"
</script>';
echo mysqli_error ($connect);
} elseif (mysqli_affected_rows($connect) > 0){
echo '<script type="text/javascript">
window.location = "succes.html"
</script>';
}
?>
提前致谢!
Senne
答案 0 :(得分:0)
php mail调试在stackoverflow上的其他地方得到了很好的解答。但是,对于您的问题“代码有什么问题?”的更一般的答案。如果有错误......
此外,代码易受SQL注入攻击。见How can I prevent SQL injection in PHP?
考虑使用以下逻辑重新排列代码......