|
| |
|
|
| |
для: 10100100
(29.10.2005 в 08:01)
| | | Сессионные войны. Часть 2.
Краткое содержание предыдущей серии:
Мы научились сохранять данные о пользователе на его собственном компьютере используя куки. Т.е при первом входе на сайт мы читаем куку пользователя, и если такая существует определяем по ней его ID.
Конец краткого содержания предыдущей серии
Для начала создадим библиотеку работы с сессиями session.php:
Создаём таблицу session в БД. В этой таблице создаём два поля
user_id | sess_id | crete_time
<?
function saveSession($user_id,$sid){
$sql='insert into session values('.$user_id.','\''.$sid.'\'')';
mysql_query($sql);
}
function getUserBySessionId($sid){
$sql='select user_id from session where sess_id=\''.$sid.'\'';
$query=mysql_query($sql);
$r=mysql_fetch_assoc($query);
if(!empty($r['user_id']))
return $r['user_id'];
else
return 0;
}
function clearSessions($hours){
// $hours - время жизни сессии в базе:
$sql='delete from session where create_time<DATE_SUB(NOW(),interval '.$HOURS.' HOUR)';
mysql_query();
}
?>
|
Далее в начале страницы до любого вывода в браузер пишем:
<?
require_once('session.php');
clearSession(1);
if(empty($_SERVER['PHPSESSION'])){
session_start();
$sid=session_id();
// функция извлечения ID из куки например getCockie() получаем $ID
if($ID>0) saveSession($ID,$sid);
}else{
$ID=getUserBySessionId($_SERVER['PHPSESSION']);
}
?>
|
Если добавить этот код на любую страницу, мы будем знать ID юзера всегда. | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 23:57)
| | | это как? | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 19:11)
| | | Хм... а в смысле чего делать? Ведь режим работы сессий не является критичным... | |
| |
|
|
| |
|
|
| |
для: cheops
(28.10.2005 в 19:01)
| | | Получается эту инфу пробивать у хостера надо?
а если у него настройки другие то что мне тогда делать? | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 15:38)
| | | >но на сколько мне
>известно при закрытии браузера - сессии дохнут..
Это от настроек сервера зависит - можно и так и эдак настроить. | |
| |
|
|
| |
|
|
| |
для: Loki
(28.10.2005 в 17:45)
| | | Локи - спасип! ток не ругайся... я не кляньчу код, просто я реально не врубаюсь... и в данный момент не имею достаточного колличества времени.... а если я допустим попробую снова сделать чтолибо сам и выложу сдесь Вы мне поможите?
просто я с этими СЕССИЯМИ теперь ещё окончательно запутался, с куками я всё понял но вот сессии... | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 16:04)
| | | Моя гражданская позиция велит мне вас игнорировать, но я все же скажу: "я ж пока что ломак в этом деле" - никоим образом вас не оправдывает и, вместо того чтобы кянчить код в каждом сообщении, вы могли бы потратить час на изучение учебника (находящегося на этом же сайте), и пару часов на то чтобы сделать все те функции, которые вы уже неделю вымогаете у людей. Тем более что реализиция всего этого, требует от вас самых начальных знаний.
Все. Возвращаюсь к своей гражданской позиции:) | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 17:09)
| | | хм.. так это я понял, но я даже не представляю себе как должен выглядеть код.... так... смутновато.... | |
| |
|
|
| |
|
|
| |
для: 10100100
(28.10.2005 в 16:04)
| | | Тут то же есть не мало проблем. ID сессии сохраняется в кукисах. Для того, чтобы сессия сохранилась и после закрытия браузера устанавливается время хранения кукисов:
# Период хранения куки в секундах. Значение 0 означает "пока браузер не будет закрыт"
ini_set('session.cookie_lifetime',$n); //$n часов
|
Но при этом если кукисы выключены, возникают проблемы, сам понимаешь. ;-) | |
| |
|
|
| |
|
|
| |
для: lina
(28.10.2005 в 15:42)
| | | о а это как? я ж пока что ломак в этом деле.. | |
| |
|
|
|