У меня есть форма входа, которая использует проверку с помощью капчи. У меня возникли проблемы с записью проверки в моем 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');}}}}}?>