Form работает некорректно PHP JS

227
06 ноября 2021, 08:50

Сайт работает через раз!(Если пишу логин который нет в базе то он ничего не выводит , а если такой логин есть то он выводит ошибку , но если уже после этой ошибки вбить логин которого нет в базе данных то он вывод 'Вы зареганы' )

Я новичок , помогите.

PHP:

    include 'includes/db.php';
    $data = $_POST;
                        if(isset($data['do-signup']) ){
                            $errors = array();
                            if(R::count('users','login = ? OR password = ?',array($data['login'],password_hash($data['password'],PASSWORD_DEFAULT))) > 0){
                                $errors[] = '<div class="has-error it-error">Такой пользователь или пароль уже существует</div>';
                            }
                            if(empty($errors)){
                                $user = R::dispense('users');
                                $user->login = $data['login'];
                                $user->password = password_hash($data['password'],PASSWORD_DEFAULT);
                                R::store($user);
                                echo 'Вы зареганы';
                                header('Location: /');
                            }else{
                                echo 'Одни ошибки в коде';
                            }
                        }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/media/css/style.css">
    <link rel="stylesheet" href="/media/fonts/fonts.css">
    <link href="https://fonts.googleapis.com/css?family=Oswald:600&display=swap" rel="stylesheet">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Регистрация на forum</title>
</head>
<body>
    <header>
    <div class="conteiner">
        <a href="index.php" class="main-page-link">MAIN PAGE</a>
        <div class="header-text">MY FORUM</div>        
    </div>
    </header>
    <div class="conteiner">
        <div class="signup_login_page">
            <div class="wrap">
                <span class="reg-text">Регистрация</span>
                <form class="signup-and-login-form signup-form" action="/signup.php" method="POST">
                        <?php if(!empty($errors)){
                                echo array_shift($errors);
                            }
                            ?>
                    <input type="text" class="input-form has-sucsess" placeholder="Введите логин" name="login" id="login">
                    <input type="password" name="password" placeholder="Введите пароль"  class="input-form" id="password">
                    <input type="password" name="confirm_password" placeholder="Введите пароль"  class="input-form" id="confirm_password">
                    <label for="do-signup" name="signup" class="do-signup-label">SIGN UP</label>
                    <input type="submit"  name="do-signup" value="displey-none" id="do-signup">
                </form>    
            </div>
        </div>
    </div>
    <?php require_once 'includes/footer.php' ?>
    <script src="libs/jQuery.js"></script>
    <script src="media/js/register.js"></script>
</body>
</html>

И JS:


    var passwordRegex = /^[A-Za-z0-9_-]{6,18}$/;
    var loginRegex = /^[A-Za-z0-9_-]{4,16}$/;
    var validPassword = false;
    var validConfirm = false;
    var validName = false;
    function validationlogin(){
        var name = $('#login').val();
        if(loginRegex.test(name) && name != ''){
        validName=true;
        $('#login').removeClass('has-error').addClass('has-sucsess');
        }else{
        validName=false
        $('#login').removeClass('has-sucsess').addClass('has-error');
        }
        if(name ==''){
            validName = false;
            $('#login').removeClass('has-error').addClass('has-sucsess');
        }
    };
    setInterval(validationlogin , 300);

    function validationpassword(){
        var password = $('#password').val();
        if(passwordRegex.test(password) && password != '' ){
            validPassword=true;
            $('#password').removeClass('has-error').addClass('has-sucsess');
        }else{
            validPassword=false;
            $('#password').removeClass('has-sucsess').addClass('has-error');
        }
        if(password ==''){
            validPassword = false;
            $('#password').removeClass('has-error').addClass('has-sucsess');
        }
    };
    setInterval(validationpassword , 300);
    function validationconfirm(){
        var confirm = $('#confirm_password').val();
        var password = $('#password').val();
        if(confirm == password){
            validConfirm = true;
            $('#confirm_password').removeClass('has-error').addClass('has-sucsess');
        }else{
            $('#confirm_password').removeClass('has-sucsess').addClass('has-error');
        }
        if(confirm == ''){
            validConfirm = false;
            $('#confirm_password').removeClass('has-error').addClass('has-sucsess');
        }
    }
    setInterval(validationconfirm , 300);

    $('.signup-form').submit(function(event){
        event.preventDefault();
        if(validName == true && validPassword == true && validConfirm == true){
            $('.signup-form').unbind('submit').submit();
        }
    });
    $('.login-form').submit(function(event){
        event.preventDefault();
        if(validName == true && validPassword == true){
            $('.login-form').unbind('submit').submit();
        }
    })
});
Answer 1

Отменяя событие отправки формы по действию пользователя и вызывая .submit(), Вы не даете name=value кнопки попасть в данные запроса, поэтому в блок

if( isset($data['do-signup']) ) {

выполнение не заходит.

$('.signup-form').submit(function(event) {
  if (!validName || !validPassword || !validConfirm) {
    return false;
  }
});
READ ALSO
Кеширование в laravel запросов к БД

Кеширование в laravel запросов к БД

Нужен совет, возможно решить мою проблему кешированием или как то по другому

74
не работает exec() в php

не работает exec() в php

не отрабатывает

291
Отобразить данные из двух таблиц

Отобразить данные из двух таблиц

Есть две таблицы sql: Одна с заказами, а другая со статусами заказов:

91
Интервал между начальной и финальной меткой времени

Интервал между начальной и финальной меткой времени

Есть у меня в программе функция отключения уведомлений по заданому времениТо есть условие такое, если current hour == 12 отключаю

92