Принцип авторизации(сесии+куки)

Nicca

Новичок
Принцип авторизации(сесии+куки)

Подскажите как реализовать грамотно механизм авторизации пользователя средствами сессий и кук.
Я перечитал много информации но никак не могу понять что хранить в куках а что в сессиях если использовать их вместе. И какие делать потом проверки когда юзер вводит логин и пароль.
 

Nicca

Новичок
Можно и на 4, главное чтобы я понял. Я уже столько инфы перерыл, но кругом обсуждают что-то одно. Никак не могу найти ответ на вопросы

1. что хранить в куках а что в сессиях если использовать их вместе.

2.какие делать потом проверки когда юзер вводит логин и пароль. И какие при переходе на другую страницу после авторизации

3. Реализация автологина(чекбокс "Запомнить меня")
 

Nicca

Новичок
А те вопросы которые я привел разве не конкретные?
 

Andreika

"PHP for nubies" reader
Nicca
1.что надо то и храни - ИЛИ в куках ИЛИ в сессиях
2.проверку на правильный логин и пароль. Если в сессиях, то ничего лишнего.
3. уже реализован
 

Nicca

Новичок
В случае реализации сессиями я делал так:

В каждом файле были строки:
PHP:
session_start();
_permission();
где:
PHP:
 function _permission()
 {
	global $ok_user;
	if(!session_is_registered("ok_user"))
		{
			login('');//Функция логин ввыводит форму для входа
			exit();
		} 
 }
И непосредственно сам вход (login.php):
PHP:
if(isset($_POST['login']))
		{
		  $loginusername = $_POST['username'];
		  $loginpassword = $_POST['password'];
		  $sql="select * from users where user='".addslashes($loginusername)."' and pass='".md5($pass)."'";
		  $res=db_select($sql);  
		  $n=mysql_num_rows($res);
		  if($n>0)
		    {
			$ok_user=$loginusername;
			session_register("ok_user");
			Header("Location: index.php");
			
		    }
		  else
		    {
			login('Неправильный логин или пароль.');
			exit();
		    }	
				
				
		}
else
	{
		login('');
		exit();
	}
Теперь мне нужно сделать автологин, тоесть человек нажал чекбокс "запомнить меня" и ему через 3 дня уже опять не нужно вводить логин и пароль. Это нужно реализовать, как я понимаю с помощью кук.

И теперь начинаются вопросы:

1. Что писать в куку(Хеш пароля, ид, имя или что)?

2. Подойдет ли такая проверка в login.php

В куку ставлю
user_id = ид_пользователя
user_hash = md5(хэш_пароля_пользователя)
PHP:
if(!empty($_COOKIE["user_id"]) && !empty($_COOKIE["user_hash"]) && strlen($_COOKIE["user_hash"])===32)
{
  if(запрос в бд where user_id=$_COOKIE[user_id] and pass=$_COOKIE["user_hash"])
    { авторизация }
  else
    {неавторизация}
}
else
{
авторизация приведена выше для сессий но с установкой куки на время 30 дней
}
-~{}~ 11.02.06 19:22:

Автор оригинала: Фанат
конкретный ответ

не использовать
А как же тогда можно одними сессиями реализовать автологин?
 

Фанат

oncle terrible
Команда форума
автологин нельзя.
но тебя ведь интересовала авторизация, а не автологин

-~{}~ 11.02.06 19:34:

авторизация приведена выше для сессий но с установкой куки на время 30 дней
ты хочешь сказать, что один и тот же код ты будешь писать два раза?
 

Фанат

oncle terrible
Команда форума
с твоих слов.
а зачем ты оправдываешься?

-~{}~ 11.02.06 19:41:

кстати, судя по приведённому коду, не очень-то похоже, что ты не знаешь, что кудаписать
 

Mozart

Новичок
PHP:
$loginusername = $_POST['username']; 
          $loginpassword = $_POST['password']; 
          $sql="select * from users where user='".addslashes($loginusername)."' and pass='".md5($pass)."'"; 
          $res=db_select($sql);
- это шутка?
PHP:
$n=mysql_num_rows($res);
 

Danilevsky

Новичок
Nicca, если хорошо почитаешь это, то думаю придумаешь что нибудь:
[ссылка удалена]
 

Nicca

Новичок
Автор оригинала: Mozart
PHP:
$loginusername = $_POST['username']; 
          $loginpassword = $_POST['password']; 
          $sql="select * from users where user='".addslashes($loginusername)."' and pass='".md5($pass)."'"; 
          $res=db_select($sql);
- это шутка?
PHP:
$n=mysql_num_rows($res);
$loginpassword = $_POST['password']; вместо этого должно быть $pass = $_POST['password'];
ты это имел в виду?
 

Фанат

oncle terrible
Команда форума
Mozart
could you be more specific, please?

-~{}~ 11.02.06 23:40:

Nicca
у тебя ещё остались вопросы?
 
Сверху