Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сессии
 
 автор: Ziq   (15.05.2005 в 21:52)   письмо автору
 
 

Подскажите, пожалуйста, все, что знаете про сессии (статьи...). Премного благодарен.

   
 
 автор: Artem S.   (15.05.2005 в 22:25)   письмо автору
 
   для: Ziq   (15.05.2005 в 21:52)
 

Тут можно кое-что подчеркнуть http://www.softtime.ru/bookphp/gl8_1.php

А вообще что не понятно?
Для каждого пользователя создается сессия.
Эта сессия привязывается к нему через id.
id передается или через url, или через cookie.
Все переменные сессии храниться на сервере и не доступны пользователю.

Если будит еще вопросы, то дерзайте.

   
 
 автор: cheops   (16.05.2005 в 00:51)   письмо автору
 
   для: Ziq   (15.05.2005 в 21:52)
 

Вот наиболее интересные темы форума
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=104
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=773
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2150
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2132
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=53
Проблеме безопасности скриптов при использовании сессии в разделе статей на нашем сайте посвящена отдельная статья http://www.softtime.ru/info/articlephp.php?id_article=36

   
 
 автор: RV   (16.05.2005 в 08:30)   письмо автору
 
   для: 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...
Тот же пользователь

откуда скрипт знал старые данные если кука не создалась (я проверил) и никаких приписок в урле??

   
 
 автор: cheops   (16.05.2005 в 11:59)   письмо автору
 
   для: RV   (16.05.2005 в 08:30)
 

Куки сессионные, т.е. действуют до того момента, пока вы не выключите браузер, такие куки обычно не хранят на жёстком диске и держат в памяти - если у вас имеется браузер Opera (по моему версия должна быть в районе 7.54) вы можете посмотреть куки в Tools|Cookies - там идентификатор сессии будет виден. Его даже можно отредактировать...

   
 
 автор: RV   (16.05.2005 в 12:51)   письмо автору
 
   для: cheops   (16.05.2005 в 11:59)
 

а как вывести этот SID ?
пробовал например echo $SID; echo $_SESSION['SID']
пусто везде

   
 
 автор: gwest   (16.05.2005 в 15:04)   письмо автору
 
   для: RV   (16.05.2005 в 12:51)
 


<?
session_id
();
session_start();
$sid=session_id();
echo 
$sid;
?>

Вот так выводится должен!

   
 
 автор: RV   (16.05.2005 в 20:04)   письмо автору
 
   для: 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(имя юзера). а вроде обновление базы задумывалось когда как минимум сессии нет. а тут она есть и обновление все равно происходит

   
 
 автор: cheops   (17.05.2005 в 12:46)   письмо автору
 
   для: RV   (16.05.2005 в 20:04)
 

После sessio_start выведите дамп суперглобального массива $_SESSION
<?php
  print_r
($_SESSION);
?>

Что в нём?

   
 
 автор: Андрюха.   (30.05.2005 в 15:42)   письмо автору
 
   для: cheops   (17.05.2005 в 12:46)
 

А если он выдает пустоту ???

   
 
 автор: cheops   (30.05.2005 в 20:57)   письмо автору
 
   для: Андрюха.   (30.05.2005 в 15:42)
 

Значит сессии не передаются... такое бывает например, если в браузере отключены сессионные куки.

   
 
 автор: Андрюха.   (01.06.2005 в 13:24)   письмо автору
 
   для: cheops   (30.05.2005 в 20:57)
 

session_id() после session_start() показывает сессию при редиректе на эту же страницу она меняется, в отличие от локала. Это может быть связано с разными версиями PHP на хосте и в локале???

   
 
 автор: cheops   (01.06.2005 в 20:39)   письмо автору
 
   для: Андрюха.   (01.06.2005 в 13:24)
 

Нет так быть не должно - если это не ваш сервер, то следует обратится в службу технической поддержки, чтобы они прокоментировали ситуацию, если код прекрасно работает на другой машине - должен и тут работать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования