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

Форум PHP

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

 

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

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

тема: аутентификация
 
 автор: sl1p   (16.08.2008 в 21:11)   письмо автору
 
 

мб баян но всё же..
решил усовершенствовать свою немного))
правильно ли будет сделать так:

юзер ввёл акк,пароль --- сверили --- если правильно генерируем ему уник код --- этот код пишем в бд --- пишем в куки его же.
А потом сверяем куки и запись в бд.
?

  Ответить  
 
 автор: newmen   (17.08.2008 в 00:35)   письмо автору
 
   для: sl1p   (16.08.2008 в 21:11)
 

Можно еще писать в БД и в сессию писать. И соответственно сверить сессию и запись в БД

  Ответить  
 
 автор: cheops   (17.08.2008 в 12:05)   письмо автору
 
   для: sl1p   (16.08.2008 в 21:11)
 

PHP предоставляет встроенный механизм для реализации этой идеи - сессии. Для записи в базу данных уникальный код сессии вы можете получить при помощи функции session_id().

  Ответить  
 
 автор: sl1p   (17.08.2008 в 13:36)   письмо автору
 
   для: cheops   (17.08.2008 в 12:05)
 

это, понятно. Я не могу понять зачем тут вообще нужна сессия если можно просто обойтись куки и бд? Можно просто сгенерировать уникальный код руками,записать его в куки\бд и так сверять? Или я не догнал чегото)

  Ответить  
 
 автор: cheops   (17.08.2008 в 16:01)   письмо автору
 
   для: sl1p   (17.08.2008 в 13:36)
 

Все правильно, можно и так. Если вам кажется более прозрачным обойтись без сессии можно реализовать самостоятельный механизм генерации кода и помещения его в базу данных - просто сессия генерирует уникальный код в пределах сервера - это очень удобно - все посетители будут иметь уникальный код.

  Ответить  
 
 автор: sl1p   (17.08.2008 в 16:09)   письмо автору
 
   для: cheops   (17.08.2008 в 16:01)
 

ну короче как сделал я..
при логине пишем в куки1=уникальный код, куки2=имя ползователя
в бд пишем код в строку этого юзера.

далее на всех страницах проверяется так:
если куки1 и куки2 не пусты,
выдераем код из бд,где имя пользователя=куки2.
если количетсво строк !=0 то сверяем код из куки1 и запись из бд,
если всё правильно делаем то-то..
--
•так в принципе нормально будет?
--


>сессия генерирует уникальный код в пределах сервера - это очень удобно - все посетители будут иметь уникальный код.

тоесть в таком случае сессия используется просто как генератор уникального кода и не больше?

  Ответить  
 
 автор: BinLaden   (17.08.2008 в 16:58)   письмо автору
 
   для: sl1p   (17.08.2008 в 16:09)
 

То, что Вы сделали - и есть механизм сессии, только самостоятельно реализованный. А значит и скорость работы у Вашего механизма будет меньше.

  Ответить  
 
 автор: sl1p   (17.08.2008 в 17:40)   письмо автору
 
   для: BinLaden   (17.08.2008 в 16:58)
 

я просто не хочу юзать сессию так как сайт уже почти написан.. и переписывать както нет сил) + мне нужна длительная авторизация

  Ответить  
 
 автор: BinLaden   (17.08.2008 в 18:07)   письмо автору
 
   для: sl1p   (17.08.2008 в 17:40)
 

> мне нужна длительная авторизация

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

  Ответить  
 
 автор: sl1p   (17.08.2008 в 18:24)   письмо автору
 
   для: BinLaden   (17.08.2008 в 18:07)
 

ну а как тогда сессию можно юзнуть для длительной авт.? у меня с ней практики не было поэтому нешарю.

  Ответить  
 
 автор: sl1p   (17.08.2008 в 21:08)   письмо автору
 
   для: sl1p   (17.08.2008 в 18:24)
 

pы. какого она всё время генерит один и тот же код?.. открыл сессию взял код, потом зашёл под другим пользователем код такой же..=\

такое вот для себя написал помоему покатит)
<?
function id_gen($count)
{
$id="";
$gen=array(0=>"a",1=>"b",2=>"c",3=>"d",4=>"e",5=>"f",6=>"g",7=>"h",8=>"i",9=>"j",10=>"k",
11=>"l",12=>"m",13=>"n",14=>"o",15=>"p",16=>"q",17=>"r",18=>"s",19=>"t",20=>"u",21=>"v",
22=>"w",23=>"x",24=>"y",25=>"z",26=>"A",27=>"B",28=>"C",29=>"D",30=>"E",31=>"F",32=>"G",
33=>"H",34=>"I",35=>"J",36=>"K",37=>"L",38=>"M",39=>"N",40=>"O",41=>"P",42=>"Q",43=>"R",
44=>"S",45=>"T",46=>"U",47=>"V",48=>"Q",49=>"X",50=>"Y",51=>"Z",52=>"0",53=>"1",54=>"2",
55=>"3",56=>"4",57=>"5",58=>"6",59=>"7",60=>"8",61=>"9",62=>"-",63=>"_");
for(
$i=1;$i<=$count;$i++){
$id.=$gen[rand(0,63)];
}
return 
$id;
}
?>

  Ответить  
 
 автор: Eugene77   (18.08.2008 в 20:00)   письмо автору
 
   для: sl1p   (17.08.2008 в 16:09)
 

>ну короче как сделал я..
>при логине пишем в куки1=уникальный код, куки2=имя ползователя
>в бд пишем код в строку этого юзера.
>
>далее на всех страницах проверяется так:
>если куки1 и куки2 не пусты,
>выдераем код из бд,где имя пользователя=куки2.
>если количетсво строк !=0 то сверяем код из куки1 и запись из бд,
>если всё правильно делаем то-то..
>--
>•так в принципе нормально будет?
>--

Для длительной авторизации желательно код в базе зашифровать через MD5 хотя бы.
Тогда если взломщик прочитает содержимое вашей базы, он всё равно не сможет войти под чужим логином (надеюсь у вас пароли захэшированы), пока не найдёт способ ещё и куки выкрасть.

  Ответить  
 
 автор: sl1p   (19.08.2008 в 01:10)   письмо автору
 
   для: Eugene77   (18.08.2008 в 20:00)
 

ну пароли закодированы.

  Ответить  
Rambler's Top100
вверх

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