@Horcrux

В чем ошибка обработчика капчи?

Добрый день. Вот код формы.
<div class="form-home">
    <div class="container">
        <div id="callformname" class="callform callformStatic">
            <p class="h2"> Оставьте заявку на звонок </p>
            <p>Заполните форму и наш менеджер свяжется с Вами </p>
            <form class="callbackForm" method="post" action="mail.php">
                <div class="input">
                    <input placeholder="Ваше имя" name="Name" type="text" value=""/>
                    <input placeholder="Телефон *" name="tel" type="text" value="" required class="in_phone"/>
                </div>
                <div class="textarea">
                    <textarea placeholder="Комментарий" name="com" rows="7"></textarea>
                </div>
                <div class="input img_kcaptcha" style="padding-top: 10px">
                    <img id="kcaptcha" alt='' src="captcha/captcha.php"/>
                </div>
                <div class="textarea input_kcaptcha">
                    <input type="text" name="kaptcha" required placeholder="Введите код"/>
                </div>
                <div class="clearfix"></div>
                <div class="submit">
                    <input class="callback" name="enter" type="submit" value="Отправить"/>
                </div>
            </form>
            <p class="desc">Поля, обозначенные * являются обязательными для заполнения.</p>
            <p class="desc politika">Отправляя заявку, вы соглашаетесь с "<a
                    href="https://www.remont-uralec.ru/go.php?url=/privacy-policy.html">Политикой конфиденциальности</a>"
            </p>
            <p class="desc">
                <small>(Ссылки не принимаются)</small>
            </p>
        </div>
    </div>
</div>

Капча генерируется с помощью кода
session_start();
	$string = "";
	for ($i = 0; $i < 5; $i++)
		$string .= chr(rand(97, 122));
	
	$_SESSION['rand_code'] = $string;

	$dir = "fonts/";

	$image = imagecreatetruecolor(170, 60);
	$black = imagecolorallocate($image, 0, 0, 0);
	$color = imagecolorallocate($image, 200, 100, 90);
	$white = imagecolorallocate($image, 255, 255, 255);

	imagefilledrectangle($image,0,0,399,99,$white);
	imagettftext ($image, 30, 0, 10, 40, $color, $dir."verdana.ttf", $_SESSION['rand_code']);

	header("Content-type: image/png");
	imagepng($image);

При нажатии на кнопку должна идти проверка капчи и если она правильная, то отправляется информация на почту.
Отправка на почту работает, но не проходит проверка( в любом случае отправляет). Вот код
<?php
session_start();
if ($_POST['kaptcha'] = $_SESSION['rand_code']) {
    require_once('phpmailer/PHPMailerAutoload.php');
    $mail = new PHPMailer;
    $mail->CharSet = 'utf-8';

    $name = $_POST['Name'];
    $phone = $_POST['tel'];
    $email = $_POST['com'];

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.mail.ru';                                                                                            // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = '*********'; // Ваш логин от почты с которой будут отправляться письма
    $mail->Password = '*********'; // Ваш пароль от почты с которой будут отправляться письма
    $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465; // TCP port to connect to / этот порт может отличаться у других провайдеров

    $mail->setFrom('********'); // от кого будет уходить письмо?
    $mail->addAddress('*******');     // Кому будет уходить письмо
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
    $mail->isHTML(true);                                  // Set email format to HTML

    $mail->Subject = 'Заявка с сайта Честный ремонт';
    $mail->Body = '' . $name . ' оставил заявку, его телефон ' . $phone . '<br>Комментарий пользователя: ' . $email;
    $mail->AltBody = '';

    if (!$mail->send()) {
        echo 'Error';
    } else {
        header('location: thank-you.html');
    }
} else {
    echo "Введите капчу правильно";
}
?>

Помогите плиз. В PHP полный 0
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
if ($_POST['kaptcha'] == $_SESSION['rand_code']) {
Два ровно сравнение, одно присваивание
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы