авторизация

Печать RSS
731


Пацак
0
Не так =)

2000 лет д.н.э.
0
Как же тогда???

Пацак
0
Куки хранятся у пользователя, сессии - на сервере.
Сессии, вроде как, хранятся в файлах в папке tmp/ с именем sess_идентификатор.
Юзер заходит на сайт, если механизм сессии не получает идентификатор сессии (32 символа по умолчанию =)), то создает для него файл) и посылает ему куки с именем 'имя сессии' и значением - идентификатором. Либо, если идентификатор есть, открывает файл и извлекает переменные. Когда скрипт записывает в сессию переменные, то они записываются в этот файл.

Пацак
0
Надеюсь, понятно объяснил =)

2000 лет д.н.э.
0
Это я знаюsmile префикс и папку можно изменить вродеsmile
файл сессии не хранится 10 лет! Если пользователь 10 лет не заходил а тут взял и зашел (кука скажем еще жива), то какие тогда данные?
По моему сессии по умолчанию час хранятся. И если сессия не найдена то она создается автоматически и в нее пишутся данные из куков.
Другого варианта просто не вижу.. Не может быть что бы файл сессии хранился вечно. Сервер просто весь забит был бы файлами сессий.
Б

Пацак
0
Разес, а тут смотр какой у тбя скрипт, если у тебя
$login='admin';
if(!isset($_SESSION['login']) && $_COOKIE['login']==$login){
$_SESSION['login']=$_COOKIE['login'];
}
То да, сессия задастся из кукисов, если у тебя сессия берется с другим каким-то путем, там с пост или гед данных, то кук роли играть не будут, с них данные в сессию не запишутся.
И время хранения сессий можна задать в конфиге и сессия хранится до тех пор, пока не закрыт браузер.

Пацак
0
45, да я не про это хранение. Вобщем, я так делаю:
<?
$_SESSION['auth'] = isset($_SESSION['auth']) ? $_SESSION['auth'] : false;
if ( $_SESSION['auth'] ) {
Обновляем последнее время юзера итд
}
else if ( isset($_COOKIE['login'], $_COOKIE['pass']) {
Авторизуемся по кукам и, если все пральна, $_SESSION['auth'] = true;
Вот тут уже, если сессии нет, то она создается
}
?>
Изменил: DmitryDick (20.11.2009 / 08:07)

Землянин
0
Чё вы на меня накинулись? Я сделал замечание на счёт кода, как бы лучше было, а вы сразу типа я оффтоплю.
Смысл каждый раз проверять $_SESSION['login'] через регуляку, а потом ещё фильтрировать через хтмлспешлчарс? Регулярка бы не пропустила символы, какие эта функция заменяет.
Если не учитывать такое - появится очередной говнокодер. Короче, делайте как хотите, не моё дело.

2000 лет д.н.э.
0
Не шумиsmile ни кто не накинулся на тебя.
#46
if(!isset($_SESSION['login']) AND !isset($_SESSION['pass']) AND isset($_COOKIE['login']) AND isset($_COOKIE['pass'])){
$_SESSION['login'] = $_COOKIE['login'];
$_SESSION['pass'] = $_COOKIE['pass'];
}
if(provLog($_SESSION['login'])){ // та самая регулярка.
$user = $sql->query("SELECT * FROM users WHERE login = '".$_SESSION['login']."';")->fetch_assoc();
if($user['id']!='' AND $user['pass']==md5($_SESSION['pass'])){
define('AUT','1');
}}
вот примерно вот так делаю. Мелочи опустил некоторые но вобщем схема такаяsmile

Пацак
0
ну я бы перебрал твой код так:
<?
if ( isset($_SESSION['login']) ) {
$user = $sql->query("SELECT * FROM users WHERE login = '".$_SESSION['login']."' limit 1;")->fetch_assoc();
if ( !empty($user) ) {
define('AUT',true);
}
}
else if ( isset($_COOKIE['login'], $_COOKIE['pass']) ) {
$login = обрабатываешь $_COOKIE['login'];
$pass = обрабатываешь $_COOKIE['pass'];
$user = $sql->query("SELECT * FROM users WHERE login = '".$login."' AND pass='".$pass."' limit 1;")->fetch_assoc();
if ( !empty($user) ) {
define('AUT',true);
$_SESSION['login'] = $login;
}
}
?>
В переменной $_SESSION['pass'] смысла не вижу)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск