|
|
|
| Да, вот не знаю я, как их юзать, признаюсь :) Дома 3 учебника по PHP и в каждом про сессии рассказывают на уровне детсада :((. Собственно что я уже умею делать - создать простую сессию, объявить переменные, потом их использовать и т.д. Но мне интересны многие вопросы:
1) Как устроена авторизация на форумах например, когда ты заходишь, а ты уже авторизирован.
2) Как сессию вяжутся с куками ?
3) Как можно авторизацию на сайте связать с авторизацией на форуме используя MySQL-таблицу с базой юзеров от форума ? (возможно не поймёте, но это наверное будет уже следующая тема...)
И, собственно, может есть в сети где нормальный учебничек-гайд с примерами по сессиям ? Заранее благодарен ! | |
|
|
|
|
|
|
|
для: DDK
(25.10.2005 в 14:46)
| | 2) Как сессию вяжутся с куками ?
Знаю только, что id сессии хранится в кукисах. А если они выключены, то по идее он дописывается к адресной строке. (если флаг session.use_trans_sid включен). Но у меня, например с этим возникали проблемы. | |
|
|
|
|
|
|
|
для: lina
(25.10.2005 в 15:00)
| | Дык, как я понял, храни SID в куках, не храни, но если закрыть броузер и зайти заново, то SID будет уже другой... а что с ним делать-то, расскажите ! | |
|
|
|
|
|
|
|
для: DDK
(25.10.2005 в 14:46)
| | 1.
Авторизация идет через куки. Тут ничего сложного, логин и хеш пароля храниться в куках и при первом заходе подстовляются автоматически.
2.
Никак. Просто если необходимо чтобы тот же логин хранить не сессию а несколько дней, то часть переменных из сессии заносят в куки.
3.
Это чаще не нужно. Вот человек зайдет на сайт и уйдет, а сообщения на форуме, помеченные как новые, пропадут (ведь будит считать что он побывал и на форуме).
Если форум находиться в том же домене (mysite.ru/forum/ а не forum.mysite.ru), то можно потавить куки от форума самостоятельно, и при заходе на форум они и будут задействованы.
По сути - переменные сессии, это те же куки, но не доступные пользователю для редактирования. | |
|
|
|
|
|
|
|
для: Artem S.
(25.10.2005 в 15:52)
| | Спасибо, теорию понял! Буду практиковать :) | |
|
|
|
|
|
|
|
для: DDK
(25.10.2005 в 14:46)
| | 1. для этого используются куки (постоянные), которые в отличае от сессионных храняться на вашей машине длительное время. Если их удалить, то форум вас "не узнает". Прочитав ваши данные из кук, они просто присваиваются аналогичным переменным из сессии и дальше работают с ними.
2. номер сессии хранится в сессионных куках (если они разрешены). в противном случае - никак.
3. см. п 1: читаем куки на машине пользователя, если данные нас устранивают, то заносим их в открытую для него сессию. Сессия активна все то время пока он бродит по сайту: это может быть форум, гостевая и пр.
учебник - это этот форум:) возьмите любой вопрос и постарайтесь разобрать самостоятельно:) | |
|
|
|
|
|
|
|
для: 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", $user, time()+31104000);
} else {
setcookie("user", $user);
}
session_register('user');
echo "Здравствуйте, $user !<br>";
}
} else {
session_start();
$user = $_COOKIE['user'];
echo "Здравствуйте, $user !<br>\n";
}
?>
|
Думаю, этот пример поможет новичкам, которые придут на этот форум с той же целью - познать сессии и куки :) А теперь прошу поставить мне жирной ручкой "ЗачОт" ;-))) | |
|
|
|