Как правильно проверить капчу? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть форма входа, которая использует проверку с помощью капчи. У меня возникли проблемы с записью проверки в моем php-файле, который получит ошибку, если код ввода введен неправильно. В настоящее время у меня есть проверка, что, если не введена капча, это показывает ошибку, но я, когда я ввожу некоторую неправильную капчу, вход в систему продолжается и пользователь входит на сайт. Вот мой код, и любая помощь приветствуется.

login.php

<code><?php

session_start();

require 'connection.php';

$username_error = "";
$password_error = "";
$captcha_error = "";

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['submit']))
    {
        $v_username = $_POST['username'];
        $v_password = $_POST['password'];
        $v_captcha = $_POST['captcha'];

        function validation($form_data)
        {
            $form_data = trim(stripcslashes(htmlspecialchars($form_data)) );
            return $form_data;
        }

        $username = validation($v_username);
        $password = validation($v_password);
        $captcha = validation($v_captcha);

        if(empty($username))
        {
            $username_error = "<p>Please enter your username!</p>";
        }

        if(empty($password))
        {
            $password_error = "<p>Please enter your password!</p>";
    }

        if(empty($captcha))
        {
            $captcha_error = "<p>Please enter your captcha!</p>";
        }

        if(!empty($username) && !empty($password) && !empty($captcha)) {
            $sql = "SELECT * FROM member_auth WHERE username = :username";

            $stmt = $pdo->prepare($sql);

            $stmt->bindValue(':username', $username);

            $stmt->execute();

            $user = $stmt->fetch(PDO::FETCH_ASSOC);

            //echo "<pre>", var_dump($user), "
"; die ("! "); If ($ user === false) {$ username_error ="

Пользователь не существует

";} else {$ validPassword = crypt ($ password, $ cryptpass); if ($ cryptpass = $ validPassword) {$ _SESSION ['username'] = $ user ['username']; header ('Location: login_success.php');}}}}}?>
...