2017-02-14 2 views
-3

Я работаю над скриптом, который приостанавливает пользователей после 36 часов бездействия.Как приостановить пользователей после 36 часов неактивного

Код ниже - это то, с чем я столкнулся. Я знаю, что это может не сработать, но я застрял. Мне нужна помощь. Я использую PHP и MYSQL.

$n = "SELECT * FROM tb_ph WHERE username ='$user' 
            AND status ='sukses' ORDER BY id LIMIT 1"; 
$regi = mysql_query($n); 
$regr = mysql_fetch_array($regi); 
$verify = time($regr["verify"]); 
$username = $regr["username"]; 

$check = $verify + 1; 
$now = time(); 
if($check < $now){ 
    mysql_query("UPDATE tb_users SET suspend='1' WHERE username='$username'"); 
} 
+0

Где хранить время последнего действия? Он хранится в базе данных? – kojow7

+0

хранится в базе данных. У меня есть таблица, в которой хранятся транзакции, и я хочу, чтобы пользователи были приостановлены, если они не начали новую транзакцию после 36 часов предыдущей успешной транзакции. –

ответ

0

, если это то, что я понимаю, пользователи неактивными вы должны использовать JavaScript, если только он неактивный, чтобы поймать события попробовать это, если никаких действий пожар Аякс приостановить пользователь, вы не можете использовать PHP для этой цели он запускается только при загрузке страницы, вы можете использовать систему событий javascript. BROKEN DOWN: Я создал var time и сохранил дату и время. тогда я помещаю ключ привязки, если нет действия, означающего, что если ничего не сделано, как перемещение мыши, нажатие клавиши, вы можете искать больше событий, а затем запускать ajax для их удаления, поэтому, вероятно, вы используете файлы cookie или, возможно, сеансы, чтобы узнать, какой пользователь удалить. Пожалуйста, если это работает upvote он

 <script> 
    var time = new Date().getTime(); 
    $(document.body).bind("mousemove keypress", function(e) { 
     time = new Date().getTime(); 
    }); 

    function refresh() { 
     if(new Date().getTime() - time >= 129600) 

     //delete user with ajax 
      $.ajax({ 
type: "POST", 
url: "//your url", 
data: {id: id}, //maybe from cookie or session 
cache: false, 
success: function(r){ 
//callback if you wish 

} 
}); 


    else 
      setTimeout(refresh, 10000); 
    } 

    setTimeout(refresh, 10000); 
</script 
+0

Спасибо. У меня есть таблица, в которой хранятся транзакции, и я хочу, чтобы пользователи были приостановлены, если они не начали новую транзакцию после 36 часов предыдущей успешной транзакции. –

+0

, так что вы строите что-то вроде MMM или веб-сайта транзакций. Я тоже нигерийский @faloyesogo, вам может понадобиться работа cron, которая когда-либо слышала об этом, прежде чем это будет очень просто, особенно если вы используете cpanel try using google search php никогда не может работать для меня, я думал, что вы подразумеваете бездействие, когда они все еще в сети пытаются запустить поиск в Google на работу cron и дать мне ответ –

0

Есть два подхода, которые можно использовать здесь:

1) Используйте cronjob, который проверяет базу данных каждый час (или каждые 10 minutes..you могут даже сделать каждую минуту если вы не возражаете против накладных расходов) в последний раз. Вам нужно только проверить учетные записи, у которых по-прежнему установлен активный флаг 1. Если время больше 36 часов, установите активный флаг на 0.

2) В зависимости от вашего приложения вы, возможно, даже не захотите беспокоиться об активном флаге. Вместо этого, когда ваш пользователь попытается войти в систему, вы можете просто проверить, когда последний раз они были активны. Если это больше, чем 36 часов назад, просто отказать им в доступе. В этом случае вам не нужен активный флаг в вашей базе данных, потому что timestamp выполняет эту задачу для вас.

Смежные вопросы