|
|
|
| Подскажите, пожалуйста, все, что знаете про сессии (статьи...). Премного благодарен. | |
|
|
|
|
|
|
|
для: Ziq
(15.05.2005 в 21:52)
| | Тут можно кое-что подчеркнуть http://www.softtime.ru/bookphp/gl8_1.php
А вообще что не понятно?
Для каждого пользователя создается сессия.
Эта сессия привязывается к нему через id.
id передается или через url, или через cookie.
Все переменные сессии храниться на сервере и не доступны пользователю.
Если будит еще вопросы, то дерзайте. | |
|
|
|
|
|
|
|
|
для: cheops
(16.05.2005 в 00:51)
| | в php.ini следующие настройки
session.use_trans_sid = 0
session.name = PHPSESSID
session.use_only_cookies = 1
|
php 5.0.4
исходя из session.use_only_cookies = 1 , ид сессии передается только в куках, а если еще взять во внимание session.use_trans_sid = 0 , то никаких приписок к урлу (типа index.php?phpsessid=...) . только куки.
Фаерволом заблокировал куки, провернул скрипт:
<?
<?
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['start'] = TRUE;
$_SESSION['ip'] = $ip;
$_SESSION['user_agent'] = $user_agent;
echo "<a href = next.php>Далее</a>";
?>
|
next.php
<?
session_start();
$ip2 = $_SERVER['REMOTE_ADDR']; // новые данные
$user_agent2 = $_SERVER['HTTP_USER_AGENT']; //новые данные
$ip = $_SESSION['ip']; //старые данные
$user_agent = $_SESSION['user_agent'];//старые данные
echo "</br>Старый адрес: " . $ip;
echo "</br>Старый броузер: " . $user_agent;
echo "</br>Новый адрес: " . $ip2;
echo "</br>Новый броузер: " . $user_agent2;
if (($_SESSION['start'] === TRUE) AND (($ip2 === $ip) AND ($user_agent2 === $user_agent)))
{
echo "</br>Тот же пользователь";
}
else
{
echo "</br>новый пользователь";
}
?>
|
после нажатия Далее выдал:
Старый адрес: 127.0.0.1
Старый броузер: Mozilla/4.0 ...
Новый адрес: 127.0.0.1
Новый броузер: Mozilla/4.0...
Тот же пользователь
откуда скрипт знал старые данные если кука не создалась (я проверил) и никаких приписок в урле?? | |
|
|
|
|
|
|
|
для: RV
(16.05.2005 в 08:30)
| | Куки сессионные, т.е. действуют до того момента, пока вы не выключите браузер, такие куки обычно не хранят на жёстком диске и держат в памяти - если у вас имеется браузер Opera (по моему версия должна быть в районе 7.54) вы можете посмотреть куки в Tools|Cookies - там идентификатор сессии будет виден. Его даже можно отредактировать... | |
|
|
|
|
|
|
|
для: cheops
(16.05.2005 в 11:59)
| | а как вывести этот SID ?
пробовал например echo $SID; echo $_SESSION['SID']
пусто везде | |
|
|
|
|
|
|
|
для: RV
(16.05.2005 в 12:51)
| |
<?
session_id();
session_start();
$sid=session_id();
echo $sid;
?>
|
Вот так выводится должен! | |
|
|
|
|
|
|
|
для: gwest
(16.05.2005 в 15:04)
| | вот есть session.php который инклудится в основных скриптах:
<?
session_start();
if ($_SESSION['SET'] === TRUE) // если сессия раньше была поставлена значит и поставлена переменная SET
{
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
if (($agent !== $_SESSION['USER_AGENT']) OR ($ip ! == $_SESSION['REMOTE_IP']))
{
session_destroy(); // кривая сессия юзер - хакер
}
}
if ($_SESSION['SET'] ! ==TRUE) // если юзер новый и сессии нет
{
проверяем его куки, сравниваем с базой, если все ок и такой юзер есть
{
if (update(имя юзера)) // обновляем бд, ставим последнее посещение now() и если бд обновилась удачно начинаем новую сессию
{
session_start();
$_SESSION['USER_AGENT'] = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['REMOTE_IP'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['SET'] = TRUE;
}
}
}
?>
|
авторизуюся, перехожу по ссылке с сидом на главную вроде все ок. в базу добавляется последнее посещение.
тут же обновляю страницу и в базу опять обновляется последнее посещение update(имя юзера). а вроде обновление базы задумывалось когда как минимум сессии нет. а тут она есть и обновление все равно происходит | |
|
|
|
|
|
|
|
для: RV
(16.05.2005 в 20:04)
| | После sessio_start выведите дамп суперглобального массива $_SESSION
<?php
print_r($_SESSION);
?>
|
Что в нём? | |
|
|
|
|
|
|
|
для: cheops
(17.05.2005 в 12:46)
| | А если он выдает пустоту ??? | |
|
|
|
|
|
|
|
для: Андрюха.
(30.05.2005 в 15:42)
| | Значит сессии не передаются... такое бывает например, если в браузере отключены сессионные куки. | |
|
|
|
|
|
|
|
для: cheops
(30.05.2005 в 20:57)
| | session_id() после session_start() показывает сессию при редиректе на эту же страницу она меняется, в отличие от локала. Это может быть связано с разными версиями PHP на хосте и в локале??? | |
|
|
|
|
|
|
|
для: Андрюха.
(01.06.2005 в 13:24)
| | Нет так быть не должно - если это не ваш сервер, то следует обратится в службу технической поддержки, чтобы они прокоментировали ситуацию, если код прекрасно работает на другой машине - должен и тут работать. | |
|
|
|