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

Форум PHP

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

 

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

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

тема: Научите использовать сессии !
 
 автор: DDK   (25.10.2005 в 14:46)   письмо автору
 
 

Да, вот не знаю я, как их юзать, признаюсь :) Дома 3 учебника по PHP и в каждом про сессии рассказывают на уровне детсада :((. Собственно что я уже умею делать - создать простую сессию, объявить переменные, потом их использовать и т.д. Но мне интересны многие вопросы:
1) Как устроена авторизация на форумах например, когда ты заходишь, а ты уже авторизирован.
2) Как сессию вяжутся с куками ?
3) Как можно авторизацию на сайте связать с авторизацией на форуме используя MySQL-таблицу с базой юзеров от форума ? (возможно не поймёте, но это наверное будет уже следующая тема...)

И, собственно, может есть в сети где нормальный учебничек-гайд с примерами по сессиям ? Заранее благодарен !

   
 
 автор: lina   (25.10.2005 в 15:00)   письмо автору
 
   для: DDK   (25.10.2005 в 14:46)
 

2) Как сессию вяжутся с куками ?
Знаю только, что id сессии хранится в кукисах. А если они выключены, то по идее он дописывается к адресной строке. (если флаг session.use_trans_sid включен). Но у меня, например с этим возникали проблемы.

   
 
 автор: DDK   (25.10.2005 в 15:13)   письмо автору
 
   для: lina   (25.10.2005 в 15:00)
 

Дык, как я понял, храни SID в куках, не храни, но если закрыть броузер и зайти заново, то SID будет уже другой... а что с ним делать-то, расскажите !

   
 
 автор: Artem S.   (25.10.2005 в 15:52)   письмо автору
 
   для: DDK   (25.10.2005 в 14:46)
 

1.
Авторизация идет через куки. Тут ничего сложного, логин и хеш пароля храниться в куках и при первом заходе подстовляются автоматически.

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

3.
Это чаще не нужно. Вот человек зайдет на сайт и уйдет, а сообщения на форуме, помеченные как новые, пропадут (ведь будит считать что он побывал и на форуме).
Если форум находиться в том же домене (mysite.ru/forum/ а не forum.mysite.ru), то можно потавить куки от форума самостоятельно, и при заходе на форум они и будут задействованы.

По сути - переменные сессии, это те же куки, но не доступные пользователю для редактирования.

   
 
 автор: DDK   (25.10.2005 в 16:44)   письмо автору
 
   для: Artem S.   (25.10.2005 в 15:52)
 

Спасибо, теорию понял! Буду практиковать :)

   
 
 автор: Loki   (25.10.2005 в 16:55)   письмо автору
 
   для: DDK   (25.10.2005 в 14:46)
 

1. для этого используются куки (постоянные), которые в отличае от сессионных храняться на вашей машине длительное время. Если их удалить, то форум вас "не узнает". Прочитав ваши данные из кук, они просто присваиваются аналогичным переменным из сессии и дальше работают с ними.
2. номер сессии хранится в сессионных куках (если они разрешены). в противном случае - никак.
3. см. п 1: читаем куки на машине пользователя, если данные нас устранивают, то заносим их в открытую для него сессию. Сессия активна все то время пока он бродит по сайту: это может быть форум, гостевая и пр.

учебник - это этот форум:) возьмите любой вопрос и постарайтесь разобрать самостоятельно:)

   
 
 автор: DDK   (25.10.2005 в 22:58)   письмо автору
 
   для: DDK   (25.10.2005 в 14:46)
 

Всем огромное спасибо, полученный опыт получилось выразить в таком простеньком примере, который успешно работает:

<? 
if(!isset($_COOKIE['user']) && !isset($_COOKIE['pass'])) {
    if(!isset(
$_POST['user']) && !isset($_POST['pass'])) {
        echo 
"<html><head><title>Auth</title></head><body>\n";
        echo 
"<form action='$PHP_SELF' method='post'>\n";
        echo 
"<input type='Text' name='user'><br>\n";
        echo 
"<input type='Password' name='pass'><br>\n";
        echo 
"<input type='Checkbox' name='save' value='1'>Запоминть меня<br>\n";
        echo 
"<input type='Submit' value='Вход'>\n";
        echo 
"</form></body></html>\n";
    } else {
        
session_start();
        
$user $_POST['user'];
        if(isset(
$_POST['save'])) {
            
setcookie("user"$usertime()+31104000);
            } else {
            
setcookie("user"$user);
        }
        
session_register('user');
        echo 
"Здравствуйте, $user !<br>";
    }
} else {
    
session_start();
    
$user $_COOKIE['user'];
    echo 
"Здравствуйте, $user !<br>\n";    
}
?> 

Думаю, этот пример поможет новичкам, которые придут на этот форум с той же целью - познать сессии и куки :) А теперь прошу поставить мне жирной ручкой "ЗачОт" ;-)))

   
Rambler's Top100
вверх

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