我正在尝试使用 PHP 验证码来验证网站上的联系表单,过去几天我遇到了障碍,表单在 FF、Chrome、Safari 但不是 IE 上运行良好。我在这里搜索了很多帖子,但没有找到任何似乎可以解决我的问题的东西,所以我希望你们中的一些专家可以在这里帮助我:)。这仅在 IE 上的事实让我感到困惑,因为我能想到的唯一问题是会话变量,它在 ie 中似乎工作正常。
下面是验证我的联系表单发送的验证码的主要代码。我应该指出,验证码肯定是通过邮件发送的,因为我已经检查了标题和代码:var_dump($securimage->check($_POST['captcha_code']))
当验证码正确或不正确时,如您所料,正确返回 true 和 false。
主要问题似乎是,如果验证码输入正确并且$securimage->check($_POST['captcha_code'])
在 IE 上返回 true,则该语句if ($captcha_result == FALSE)
正在执行,但也使用相应 else 中的 mail() 函数发送电子邮件。由于某种原因,$formSent = 2;
似乎没有在 mail() 函数所在的 else 中运行。我尝试了 if 和 else 值的组合,但都没有运气。这一定是我某处的用户错误......
<?php
session_start();
include('securimage/securimage.php');
if (isset($_POST['query_form'])) {
if ($_POST['name'] == "Your name" || $_POST['email'] == "Your E-mail" || $_POST['message'] == "Message") {
$formSent = 1; //display the notification bar wth error.
}
else {
//validate the captcha code now.
$securimage = new Securimage();
//var_dump($securimage->check($_POST['captcha_code']));
$captcha_result = $securimage->check($_POST['captcha_code']);
//ERROR - IE runs the first if and the mail function below for some reason.
if ($captcha_result == FALSE) {
$formSent = 3; //display the notification bar wth captcha error.
}
else if ($captcha_result !== FALSE) {
$to = 'email';
$subject = 'subject';
$message = "Name: " . $_POST['name'] . "\r\n" . "Email: " . $_POST['email'] . "\r\n" . "Phone: " . $_POST['phone'] . "\r\n" . "Message: " . $_POST['message'] ;
$headers = 'From: email' . "\r\n" .
'Reply-To: ' . $_POST['email'] . "\r\n";
mail($to, $subject, $message, $headers);
$formSent = 2; //display the notification bar with success.
}
}
}
?>