2015-07-26 4 views
0

У меня проблема с проверкой и дальнейшей обработкой Captcha на моей форме. Я хотел бы подтвердить, что ответ правильный, а затем отправить электронное письмо и отправить пользователя на страницу с благодарностью, иначе перейдите на страницу с ошибкой, если пользователь не смог ввести правильный ответ на Captcha. Я беру код captcha в скрытом поле ввода в форме. Даже после ввода правильного кода он по-прежнему перенаправляет меня на страницу error.html, которую я установил.Captcha Validation and Send Email

См. Следующий код. Я использую «captcha_code», где я пытаюсь получить значение true/false. Как только ответ будет либо истинным, либо ложным на основании этого, он продолжит утверждение IF о том, что он отправит электронное письмо или отправит его на страницу «Спасибо».

(Если есть код, я не хватает, чтобы получить возможность отправлять, пожалуйста, дайте мне знать, я бы, что код размещен немедленно.)

PHP код: (обновленный код Комментарии к сообщению ниже) * Еще направлены на страницу «Ошибка», даже если код «captcha» правильный.

<?php 
if ($_POST["submit"]) { 
$companyName = $_POST['tscpCompanyName']; 
$businessType = $_POST['tscpBusinessType']; 
$yearsBusiness = $_POST['tscpYears']; 
$numberOfUnits = $_POST['tscpNumberOfUnits']; 
$firstName = $_POST['tscpFirstName']; 
$lastName = $_POST['tscpLastName']; 
$email = $_POST['tscpEmail']; 
$number = $_POST['tscpNumber']; 
$vals = $_POST['vals']; 
$human = intval($_POST['captcha_code']); 

$from = "From:[email protected]"; 
$to = "[email protected]"; 
$subject = 'Custom Package Request'; 

$body ="Company Name: $companyName\n\n Business Type: $businessType\n\n Years In Business: $yearsBusiness\n\n First Name: $firstName\n\n Last Name: $lastName\n\n Email: $email\n\n Number: $number\n\n Services: $vals\n\n"; 


if (!isset($_SESSION)) session_start(); 
if ($_POST['captcha_code'] == $_SESSION['code']) { 
echo 'true'; 
} else { 
echo 'false'; 
} 

//Check if simple anti-bot test is correct 
if ($human !== false) { 
    $errHuman = 'Your anti-spam is incorrect'; 
} 
// If there are no errors, send the email 

if (!$errName && !$errEmail && !$errMessage && !$errHuman) { 
    if (mail ($to, $subject, $body, $from)) { 
     header("Location: /thank-you/mortgage-lending.html"); 
    } else { 
     header("Location: /error.html"); 
    } 
} 
else { 
    header("Location: /error.html"); 
} 
}?> 
+2

использование сообщений об ошибках http://php.net/manual/en/function.error-reporting.php –

+0

Что происходит в настоящее время? – chris85

+0

Итак ... в чем проблема? – Siguza

ответ

2

Вы отправляете форму с постом. Итак, используйте $_POST для captcha, а не $_GET

+1

OP сделал stealth редактирование вопроса, не отметив его как редактирование. * Прекрасный, не так ли? * –

0

Я выяснил решение проблемы. Я в первую очередь обновил оператор IF, который отправил бы почту и перенаправит меня на правильную страницу. Я также убедился, что обновил мой $ POST & session_start().

Вот PHP код:

<?php 
    if (!isset($_SESSION)) session_start(); 

    if ($_POST["submit"]) 
    { 
    $companyName  = $_POST['tscpCompanyName']; 
    $businessType = $_POST['tscpBusinessType']; 
    $yearsBusiness = $_POST['tscpYears']; 
    $numberOfUnits = $_POST['tscpNumberOfUnits']; 
    $firstName   = $_POST['tscpFirstName']; 
    $lastName   = $_POST['tscpLastName']; 
    $email     = $_POST['tscpEmail']; 
    $number     = $_POST['tscpNumber']; 
    $vals     = $_POST['vals']; 
    $human     = intval($_POST['captcha_code']); 
    $captchaError= FALSE; 

    $from = "From:[email protected]"; 
    $to = "[email protected]"; 
    $subject = 'Custom Package Request'; 

    $body ="Company Name: $companyName\n\n Business Type: $businessType\n\n Years In Business: $yearsBusiness\n\n First Name: $firstName\n\n Last Name: $lastName\n\n Email: $email\n\n Number: $number\n\n Services: $vals\n\n"; 

    if ($_POST['captcha_code'] != $_SESSION['code']) 
    { 
    $captchaError = TRUE; 
    $errHuman = 'Your anti-spam is incorrect'; 
    } 

    if (!$errName && !$errEmail && !$errMessage && !$captchaError) { 
    if (mail ($to, $subject, $body, $from)) { 
    header("Location: /thank-you/mortgage-lending.html"); 
    } else { 
    header("Location: /error.html"); 
    } 
    } 
    else { 
header("Location: /error.html"); 
    } 
    }?> 
+1

так, какая разница? Вы опубликовали код, который исправил вашу проблему, но не объяснил это, и не указал, какие изменения были внесены для устранения проблемы. Вам также нужно подумать о будущих посетителях на вопрос/ответ. –