Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » маленький вопросик про сессии

Ответить
Настройки темы
маленький вопросик про сессии

Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


есть

session_start();
$_SESSION['last']="last";
$_SESSION['new']="new";

как распечать на экране заведенные сессии если я незнаю названий их элементов в массиве??

т.е. на экране должно быть:
last
new

вариант с echo $_SESSION[0].$_SESSION[1] не проходит(((

подскажите плз

Отправлено: 21:51, 21-10-2004

 

Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Мне почему-то кажется, что это должно тебе помочь:
foreach ($_SESSION as $key => $value)
   echo "Key: $key; Value: $value<br />\n";

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 23:34, 21-10-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


не, не помогло

идея такая, я хотел сделать мониторинг тех кто присутствует из зарегиинных на сайте.

т.е.
для каждого авторизированого:

session_start();
$_SESSION['nick']="индивидуальный ник или логин";

а на другой страничке я хотел сделать чтото типа печать всех $_SESSION['nick'] которые заведены в течении 24 минут.

П.С.
24 минуты, это значение по умолчанию столько максимум хранится сессия после последнего отправления с браузера посетителя до сервера(проще говоря с момента последнего обновления)

Добавлено:

можно после

session_start();
$_SESSION['nick']="индивидуальный ник или логин";

записывать $_SESSION['nick'] в файл и тогда получится файл имен тех кто на сайте.

но как проследить когда ктото  ушел с сайта, отключился от интернета и удалить его имя из файла??

Отправлено: 20:57, 23-10-2004 | #3


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Переменная $_SESSION уникальна для каждой сессии. В этом ее смысл. Ты не сможешь со своей отдельной страницы получить информацию о сессиях пользователей, находящихся на сайте. Долее того, если ты запустишь две копии браузера на своем компьютере, то для каждого из них будет создана своя переменная $_SESSION.
session.gc_maxlifetime о которой ты говоришь, это время, через которое сессия считается устаревшей, но это еще не значит, что информация о ней будет сразу же удалена с сервера. Это (уборка мусора) происходит периодически. Почитай о session.gc_probability и session.gc_divisor.
Идея хранить список пользователей в файле хороша, но спешу огорчить - не нова. В PHP есть готовый механизм для работы с сессиями, и ты движешься в правильном направлении. Все сессии всех пользователей (по умолчанию) сохраняются в отдельные файлы (можно организовать их хранение и в MySQL). Анализируя эти файлы ты как раз и можешь получить информацию о всех пользователях на твоем сайте. Вот только одно но: ты не можешь узнать (в общем случае) о том, что человек покинул сайт. Об этом можно судить лишь по времени его бездействия (и соответственно, по времени последнего изменения его файла сессии на диске). Если организовать хранениее сессий в БД, то, как мне кажется, информацию об активности пользователей можно будет извлекать быстрее и удобнее.


[s]Исправлено: Oaxa, 23:27 23-10-2004[/s]

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 23:17, 23-10-2004 | #4


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
о которой ты говоришь, это время, через которое сессия считается устаревшей, 
но это еще не значит, что информация о ней будет сразу же удалена с сервера. Это (уборка мусора) происходит периодически
по умолчанию 24 минуты.

Код: Выделить весь код
Все сессии всех пользователей (по умолчанию) сохраняются в отдельные файлы (можно организовать
 их хранение и в MySQL)
а в каком по умолчанию?? я искал не нашел..

а разве программно не хранится ни в какой переменной все переменные для каждого пользователя SESSION ?
разве нет глобального массива?((

[s]Исправлено: FADE, 23:35 23-10-2004[/s]

Отправлено: 23:34, 23-10-2004 | #5


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


FADE
Цитата:
по умолчанию 24 минуты.
Это означает, что через 24 минуты сессия считается устаревшей и при следующем удобном случае файл сессии будет удален. Уборка мусора (удаение устаревших файлов сессий) происходит (по умолчанию) 1 раз на 1000 вызовов session_start();
Цитата:
а в каком по умолчанию?? я искал не нашел..
В php.ini session.save_path = "/tmp" (опять таки, по умолчанию)
Цитата:
а разве программно не хранится ни в какой переменной все переменные для каждого пользователя SESSION ?
Переменная $_SESSION, точнее ее содержимое между вызовами session_start() сохраняется в файле.
Цитата:
разве нет глобального массива?((
Массив глобален, но время его глобальности ограничивается временем исполнения скрипта.

оффтопик: Оверквотинг оверквотинга оверквотингом не является

[s]Исправлено: Oaxa, 0:02 24-10-2004[/s]

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 23:45, 23-10-2004 | #6


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


Oaxa
а все, понял почему у меня нет папки tmp, я в ини файле не раскоментировал строку
;session.save_path = /tmp

а вот в папке с пхп, есть какаето папка sessiondata там тоже какието сессии хранятся, там что?

Добавлено:

Код: Выделить весь код
Уборка мусора (удаение устаревших файлов сессий) 
происходит (по умолчанию) 1 раз на 1000 вызовов
 session_start();
т.е. для того чтобы проследить потерял ли связь с сервером один из посетителей я должен написать цикл в 1000 вызовов сесионстарт?) ну допустим это реально, а как опять же сделать так что если файл в tmp - мусор тотакоето имя в мониторинге посетителейсайта стирается из файла?

Отправлено: 11:20, 24-10-2004 | #7


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


FADE
Цитата:
а вот в папке с пхп, есть какаето папка sessiondata там тоже какието сессии хранятся, там что?
Мне трудно предположить, что хранится у тебя в папке sessiondata, ибо у меня такой папки нет, но судя по ее названию, это именно то, о чем я и говорил - файлы сессий.
Цитата:
того чтобы проследить потерял ли связь с сервером один из посетителей я должен написать цикл в 1000 вызовов сесионстарт?)
Совсем необязательно. Я уже предлагал тебе почитать про session.gc_probability и session.gc_divisor. Изменяя значения этих переменных ты можешь добиться любой частоты уборки мусора, в том числе можешь заставить убирать его каждый раз при вызове session_start. Но я бы не стал так поступать, ибо на производительности это скажется не самым лучшим образом.
Я бы решал эту задачу так (вариант с MySQL не рассматриваю):
я бы читал содержимое папки /temp, выбирал бы из нее файлы сессий, смотрел бы время последнего изменения этих файлов, выбирал бы только те, которые были изменены за последние 24 минуты (или 5 минут, или 10) и дальше читал бы из них имена пользователей. Если файл был изменен за последние 24 минуты, значит пользователь на сайте проявлял какую-то активность и с большой степенью вероятности можно предполагать, что он на сайте.

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 15:13, 24-10-2004 | #8


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


все файлы в папке sessiondata весят 0 кб а названия их - сесии.
откуда читать имя сессии?

а хостер всегда разрешает доступ к этой папки из скрипта на сайте?

Отправлено: 17:37, 24-10-2004 | #9


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


FADE
Цитата:
а хостер всегда разрешает доступ к этой папки из скрипта на сайте?
Всё, конечно же, зависит от каждого конкретного хостера. Скорее всего он не разрешит тебе доступ к /tmp, но в твоем случае это проще всего обойти, указав в конфигурации, где именно PHP должен хранить файлы сессий. Сделать это можно примерно так:
В в файле .htaccess укажи примерно следующую директиву:
Код: Выделить весь код
php_value session.save_path = "/path/to/sessions"
P.S. Настоятельно рекомедую почитать внимательно все комментарии в php.ini, там все достаточно подробно описано.
Вау! Я получил Junior Member

[s]Исправлено: Oaxa, 19:40 24-10-2004[/s]

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 19:39, 24-10-2004 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » маленький вопросик про сессии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Один вопросик про видео карту. Sandstorm Видеокарты 9 05-01-2010 15:38
маленький вопросик Romulandrem WSUS 7 19-02-2009 06:39
[решено] Про принтер HP LJ 1022 (Проблемы в терминальной сессии) Anna89 Microsoft Windows NT/2000/2003 18 21-06-2006 09:14
Вот вопросик про винды. Makanaki Microsoft Windows 2000/XP 9 12-01-2004 23:44
Маленький CD-R Father Хочу все знать 4 12-03-2002 23:37




 
Переход