Изменение HTML-кода с использованием Javascript, который имеет некоторые переменные php для формы входа - PullRequest
0 голосов
/ 10 мая 2018

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

Когда учетные данные введены правильно, они перенаправляются, но при вводе неправильных данных страница перезагружается.

<?php
    $db=mysqli_connect('localhost','root','','hotel');
    if(isset($_POST['user_id'])) {
        session_start();
        $user_id = $_POST['user_id'];
        $password = $_POST['password'];

        $user_check = "select * from users where user_id = '$user_id' and password ='$password'";
        $result = mysqli_query($db, $user_check)
        or die("failed to query database" . mysqli_error());

        $row = mysqli_fetch_array($result);
        if ($row['user_id'] == $user_id && $row['password'] == $password) {
            $_SESSION['user_id'] = $_POST['user_id'];
            header('Location: reservation.php');
        }
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Login</title>
        <link rel="stylesheet" href="login_style.css">
        <link rel="stylesheet" href="css/bootstrap.css">
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body class="carousel-example-generic">
        <div class="container">
            <div class="loginbox form-group bg-dark">
                <div class="text-light">
                    <h1 class="text-center" style="padding-bottom: 5px">LOGIN</h1>
                    <form id="loginForm" action="" method="post" >
                        <p class="font-weight-bold">User ID</p>
                        <input type="text" id="user_id" name="user_id" placeholder="Enter Username" required>
                        <br><br>
                        <p class="font-weight-bold">Password</p>
                        <input type="password" id="password" name="password" placeholder="Enter Password" required>
                        <br><br><br>
                        <div id="alertLogin" class="alert-danger" style="visibility:hidden">
                            <p>The User ID or the Password is incorrect</p>
                        </div>
                        <input id="loginButton" type="submit" name="submit" value="Login">
                        <br>
                    </form>
                </div>
            </div>
        </div>
        <script>
            $(document).ready(function(e) {
                e.preventDefault();
                window.history.back();
                var a1 = <?php $row['user_id']?>;
                var b1 = <?php $row['password']?>;
                var a2 = $('#user_id').val();
                var b2 = $('#password').val();
                if (a1 != a2 || b1 != b2) {
                    $('#alertLogin').attr('style', 'visibility:visible');
                }
            })
        </script>
    </body>
</html>

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

window.history.back (); перезагрузка страницы каждый раз, когда она достигнута, что вы собираетесь делать здесь? Кроме того, приведенный ниже код, по-видимому, не работает, если страница была перезагружена #user_id и #password не имеют значения для строки var a1 = <? Php $ row ['user_id'] ?>; чтобы работать, вы должны заключить код php между кавычками, иначе js будет интерпретировать его как переменную. Я не знаю, имеет ли смысл сравнение между a1, a2, b1 и b2, логин не удался, потому что эти значения не равны, он потерпел неудачу, потому что значения в вашей базе данных не совпадают с введенные пользователем. И последнее: вы должны зашифровать свои пароли перед их сохранением в базе данных и использовать mysql_real_escape_string () , чтобы избежать проблем с инъекцией.

А вот одно из возможных решений (не проверено)

<?php
    session_start();
    $db=mysqli_connect('localhost','root','','hotel');
    $login_error = false;
    if(isset($_POST['user_id'])) {
        $user_id = mysql_real_escape_string($_POST['user_id']);
        $password = mysql_real_escape_string($_POST['password']);

        $user_check = "select 1 from users where user_id = '$user_id' and password ='$password'";
        $result = mysqli_query($db, $user_check)
        or die("failed to query database" . mysqli_error());

        if ( mysqli_num_rows($result) > 0 ) {
            $_SESSION['user_id'] = $_POST['user_id'];
            header('Location: reservation.php');
        }else
        {
          $login_error = true;
        }
        
        
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Login</title>
        <link rel="stylesheet" href="login_style.css">
        <link rel="stylesheet" href="css/bootstrap.css">
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body class="carousel-example-generic">
        <div class="container">
            <div class="loginbox form-group bg-dark">
                <div class="text-light">
                    <h1 class="text-center" style="padding-bottom: 5px">LOGIN</h1>
                    <form id="loginForm" action="" method="post" >
                        <p class="font-weight-bold">User ID</p>
                        <input type="text" id="user_id" name="user_id" placeholder="Enter Username" required>
                        <br><br>
                        <p class="font-weight-bold">Password</p>
                        <input type="password" id="password" name="password" placeholder="Enter Password" required>
                        <br><br><br>
                        <?php if($login_error){ ?>
                        <div id="alertLogin" class="alert-danger" style="visibility:hidden">
                            <p>The User ID or the Password is incorrect</p>
                        </div>
                        <?php } ?>
                        <input id="loginButton" type="submit" name="submit" value="Login">
                        <br>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>
0 голосов
/ 10 мая 2018

Проверить Обновлен код:

<?php
    $db=mysqli_connect('localhost','root','','hotel');
    if(isset($_POST['user_id'])) {
        session_start();
        $user_id = $_POST['user_id'];
        $password = $_POST['password'];

        $user_check = "select * from users where user_id = '$user_id' and password ='$password'";
        $result = mysqli_query($db, $user_check)
        or die("failed to query database" . mysqli_error());

        $row = mysqli_fetch_array($result);
        if ($row['user_id'] == $user_id && $row['password'] == $password) {
            $_SESSION['user_id'] = $_POST['user_id'];
            header('Location: reservation.php');
        }
        else
           {?>
            <script>
                 alert("Wrong user name or password");
            </script>
           <?php 
        } 
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...