2012-01-04 5 views
-1

У меня есть сайт, например, www.mysite.com, с простой системой входа. Я использую PHP и MYSQL. В сессии у меня есть:Является ли пользователь на странице?

$_SESSION['user_id'] 

можно проверить, если в данный момент пользователь имеет страницу www.mysite.com/test.php открытую?

Я могу использовать также jQuery и Ajax, но как?

В базе данных у меня есть, например:

Users: 
id | username | is_on_test 
1 | admin | 0 
2 | user  | 1 

Если пользователь находится на test.php Я хотел бы иметь в базе данных в колонке is_on_test значение 1, если не на test.php, то должно быть 0.

ответ

0

вызовите Ajax скрипт каждые 20 или 30 секунд или независимо от частоты у, как. test.php

// fire below insertion to database 
if (there exist any row of current logged in user on <table>) 
    update <table> set time_stamp = Now() where user_id = $_SESSION['userid'] 
else 
    insert into <table> (id,time_stamp) VALUES ($_SESSION['userid'],Now()) 

для отображения списка пользователей на admin.php

//fire below query for displaying users 
select * from <table> where time_stamp in between 'Now()-20' and 'Now()+20' 

убедитесь, что вставка/Updation запросов для вставки/обновления метки времени в каждой (20 сек или любой другой) интервал

+0

Я обновил свой вопрос –

+0

Я отредактировал ответ –

+0

нормально, но как проверить это, если пользователь закроет эту страницу? ваш код добавляет 1 к базе данных только одну и каждую открытую страницу. Пользователь также может открывать /other.php и test.php на двух вкладках в одном браузере. –

0

Когда пользователь нажимает на страницу, в заголовке вы можете проверить, существует ли $_SESSION['user_id'];. Если это так, напишите значение, хранящееся в $_SERVER["REQUEST_URI"], в базу данных по этой записи пользователя. Это будет отслеживать самую последнюю страницу, на которую они приземлились.

$sql = "Update users set lastPage='".$_SERVER["REQUEST_URI"]."' where id=".$_SESSION['user_id']; 

Более подробную информацию о $_SERVER массива: http://php.net/manual/en/reserved.variables.server.php

+0

, но как я могу проверить текущее это? Я обновил свой вопрос. –

0

Как вы хотите проверить, что пользователь находится на текущей странице?

Если это через базу данных, вы можете просто написать функцию, которая Вставляет пользователей детали и страницы они были на в базу данных, из данных $ _SESSION ...

+0

i dont знаю :) я нахожу решение –

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