php щелкает зарегистрированным пользователем с помощью ajax - PullRequest
0 голосов
/ 06 июня 2018

добрый день из gmt + 8 часовых поясов.

Я создал систему входа в систему / систему, теперь я хочу реализовать функцию, которая будет выбирать пользователей, поэтому я делаю столбец состояния в БД, 2 типазначений, блокировка => блокировка, активная => не блокировка.Я могу использовать crud метод для обновления статуса и вывода в таблицу.конечно, я могу заблокировать пользователя и изменить статус на lock , что работает нормально, но проблема в том, что заблокированный пользователь все еще имеет доступ к системе, так как сеанс все еще действителен, он / она должен закрытьбраузер или их сеанс завершен.на странице входа в систему я проверяю, заблокирован ли пользователь, затем могу войти.

, поскольку у пользователя все еще есть доступ, когда сеанс все еще действителен, я хочу ввести ajax , чтобы вызвать сервер для проверки состояния setInterval.на бэкэнде php: проверить, заблокирован ли пользователь, прервать сеанс, дать окно предупреждений и перенаправить.

но проблема теперь в том, что мой код не работает , вот мой вызов ajax, если я откомментирую //console.log('success '); успех будет сохранен в console.log, что означаетвызов - это успех.

<script>
        function getUserStatus(){
            $.ajax({
                type: "POST",
                url: 'ajax/ajax.php',
                data: {username: '<?php echo $_SESSION['admin_username'] ;?>' },
                success: function(response){
                    //console.log('success');
                }
            });
        }

        setInterval(function(){
            getUserStatus();
        },3000);

    </script>

на моей странице ajax.php, я уверен, что соединение с БД работает,

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        $admin_username = check_input($_POST['username']);

  if( isLocked($admin_username) ){
       session_destroy();
echo "<script>window.alert('you had been clicked out');window.location.href='../index.php';</script>";
        }

    }

функция, чтобы проверить, что пользователь заблокирован

function isLocked($username){
    global $connection ; 
    $query = "SELECT status FROM table where name = '$username' ";
    $result = mysqli_query($connection,$query);
    confirm($result);

    while(  $row = fetch_array($result)){
        if($row['status'] == 'locked' ){
            return true;
        }else{
            return false;
        }  
    }
}

, еслия напрямую получаю доступ к ajax.php через пользователя журнала, ниже действует действие.

    if( isLocked($admin_username) ){
                session_destroy();
echo "<script>window.alert('you had been clickedout');window.location.href='../index.php';</script>"; }

не уверен, что не так с моими кодами и как это исправить?

любая помощь / предложение будет высоко оценено.

1 Ответ

0 голосов
/ 06 июня 2018

ваш ajax.php напоминает что-то, что может быть данными, json или, в вашем случае, js-скриптом.Ajax вызывает ajax / ajax.php, если http-запрос успешно выполняется, он вводит

success: 
        function(response){
                        //console.log('success');
                }

, поэтому переменная response хранит выходные данные этого вызова в ajax / ajax.php.если вы используете

$.ajax({
                type: "POST",
                url: 'ajax/ajax.php',
                dataType: "script",
                data: {username: '<?php echo $_SESSION['admin_username'] ;?>' },
                success: function(response){
                    //console.log('success');
                }

, значение «response» будет выполнено, если это рабочий скрипт. (без тегов)

дополнительную информацию вы можете найти здесь: http://api.jquery.com/jQuery.ajax/

без dataType: «script», в вызове вы можете сделать что-то подобное:

function(response){
                    //console.log('success');
                    $('#somediv').html(response);
                }

, которое вставит результат в div, если это хорошо отформатированный js-скрипт, он будетбыть казненным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...