Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2010, 15:57   #1
сла
Пользователь
 
Регистрация: 03.09.2010
Сообщений: 12
Стрелка ajax+сессии+пхп

Всем привет, тут вот решил воплотить в жизнь еще один скрипт, есть все и впринципе работает но как это в ajax сделать не могу и ума преложить. Скрипт вывода пользователей онлайн. Имеется БД куда записываются сессии пользователей, там же они и чистяться, но проблема встала в том чтоб проверить пользователя на онлайн/оффлайн надо чтоб кто-то проходил авторизацию и после F5 страницы, а вот наслышан об Аяксе что все делается не перезагружая страницу, может ли кто нибудь поставить на путь истинный, с чего нужно начать, что надо почитать в аяксе чтоб правильно написать и описать все функции. И вообще реализуемо это все вместе?
сла вне форума Ответить с цитированием
Старый 07.09.2010, 18:37   #2
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Аякс не нужен, и в БД сессию хранить не зачем

В БД у вас у каждого пользователя есть запись, добавьте в неё ещё одно поле и храните в нем время последнего действия.

При загрузке любой (или некоторых) страниц сайта обновляйте это поля у текущего пользователя.

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

время лучше хранить в формате строки, как Unix Time, оно возвращается функцией time().
Никки вне форума Ответить с цитированием
Старый 08.09.2010, 08:31   #3
сла
Пользователь
 
Регистрация: 03.09.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Никки Посмотреть сообщение
и в БД сессию хранить не зачем
В чем причины? просто хочу узнать как можно больше.

Цитата:
Сообщение от Никки Посмотреть сообщение
При загрузке любой (или некоторых) страниц сайта обновляйте это поля у текущего пользователя.
А если это одна страница? как делать рефреш пользователей из базы (как правильно составить такой запрос и учесть их время, чтоб и пользователь из списка не исчез и вообще понятия не имею как это все будет на странице без Ф5 работать? Нужна технология чата.
Цитата:
Сообщение от Никки Посмотреть сообщение
время лучше хранить в формате строки, как Unix Time, оно возвращается функцией time().
В этом формате и держу время
сла вне форума Ответить с цитированием
Старый 08.09.2010, 19:09   #4
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Смысл ajax работе со страницей через JS.
Использовать ajax можно по разному - Я советую использовать jQuery.
Здесь читаем как это делается при помощи jQuery.
В архиве пример использования ajax. Если что не понятно пишите.
Вложения
Тип файла: rar ajax.rar (1.0 Кб, 24 просмотров)
Виталий Желтяков вне форума Ответить с цитированием
Старый 09.09.2010, 08:17   #5
сла
Пользователь
 
Регистрация: 03.09.2010
Сообщений: 12
По умолчанию

Спасибо Виталий, пошел изучать...
сла вне форума Ответить с цитированием
Старый 09.09.2010, 16:49   #6
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

если страница одна тогда действительно можно использовать AJAX, лучше из библиотеки JQuery.

делаете файл i_am_here.php пишите в него примерно такое

Код:
<?
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
$sql="UPDATE `users` SET `last_activity` = '".time()."' WHERE `user_id` = '".$_SESSION['id']."'";
mysql_query($sql);
}
?>
Дальше пишите скрипт на JS, ставите его выполнение на таймер (как это сделать думайте сами). Подключайте JQuery и вызывайте по этому самому таймеру такую функцию:

Код:
$.get('i_am_here.php', function(data) {
  alert('data was updated.');
});
Цитата:
В чем причины? просто хочу узнать как можно больше.
Я просто не понимаю зачем хранить сессии в БД когда они хранятся уже хранятся на сервере??? Я даже не представляю как это реализовать. Тем более в БД у каждого юзера есть запись, где и следует помечать на сайте он или нет (точнее время последней операции/визита и т.д.). Оттуда же данные удобно брать, всего одним SELECT запросом

Последний раз редактировалось Никки; 09.09.2010 в 16:54.
Никки вне форума Ответить с цитированием
Старый 10.09.2010, 07:49   #7
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Я просто не понимаю зачем хранить сессии в БД когда они хранятся уже хранятся на сервере??? Я даже не представляю как это реализовать. Тем более в БД у каждого юзера есть запись, где и следует помечать на сайте он или нет (точнее время последней операции/визита и т.д.). Оттуда же данные удобно брать, всего одним SELECT запросом
Это делается для возможности получения списка пользователей он-лайн. Хотя лучше просто создать отдельную таблицу.
Виталий Желтяков вне форума Ответить с цитированием
Старый 11.09.2010, 12:04   #8
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

А чем таблица Users не подходит чтобы там хранить и оттуда брать информацию о том кто онлайн? Ни в одном скрипте не видел, чтобы в БД хранили сессии.
Никки вне форума Ответить с цитированием
Старый 11.09.2010, 21:18   #9
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
А чем таблица Users не подходит чтобы там хранить и оттуда брать информацию о том кто онлайн?
А если пользователей полмиллиона? С маленькой таблицей работать будет быстрее.
Цитата:
Ни в одном скрипте не видел, чтобы в БД хранили сессии.
Я у Кузнецова в книге пример такой видел. Скорее всего человек от туда и это взял.
Виталий Желтяков вне форума Ответить с цитированием
Старый 11.09.2010, 23:11   #10
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Придумал лишь один случай, когда есть смысл хранить в БД сессии. Это когда регистрация пользователей не требуется, но их нужно учитывать для каких либо целей.

В остальных случаях это делают только Кузнецов и автор темы. Хотелось бы услышать и от него что - то...
Никки вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переадресация в пхп Kapitann PHP 7 08.09.2010 12:53
Полиморфизм в пхп Golovastik PHP 1 02.07.2010 20:40
Ajax и сессии ADSoft PHP 7 23.01.2009 17:10
счетчик на ПХП! inetexer Помощь студентам 4 08.05.2008 17:18