PHP キャプチャを使用してサイトの連絡先フォームを検証しようとしていますが、過去数日間、フォームが FF、Chrome、Safari では正常に機能するが IE では機能しないというレンガの壁にぶつかりました。ここでたくさんの投稿を検索しましたが、私の問題を解決すると思われるものは何も見つかりませんでした. これが IE でのみ発生するという事実は、私が考えることができる唯一の問題は、ie で正常に動作するように見えるセッション変数であるため、私を困惑させました。
以下は、私の連絡先フォームから送信されたキャプチャ コードを検証するメイン コードです。ヘッダーとコードを確認したので、キャプチャ コードは間違いなく郵便で送信されていることを指摘しておく必要がありvar_dump($securimage->check($_POST['captcha_code']))
ます。
主な問題は、キャプチャ コードが正しく入力さ$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.
}
}
}
?>