срочно ... explode - разделить по последнему разделителю..

Сенсей

Новичок
срочно ... explode - разделить по последнему разделителю..

Вобщем нашелся баг в системе авторизации юзеров...

вобщем формат хранения данных для авторизации таков :

Код:
логин:пароль_в_md_5
потом делаю explode по : и получаю массив с логином и хешем пароля ...

теперь юзер зарегился с ником «::•:•vLaDa•:•::»

и вся эта система на смарку...

1 - как люди с опытом справляются с этим ?

у меня 2 идеи.....

1 - может как то explode-у сказать чтоб разделял по последнему : ? (не нашел)
2 - юзать строковые функции...

хотелось бы знать как правильно ...
 

Сенсей

Новичок
Tor

в базе естественно в разных полях... но в куках я их храню

$user = base64_encode($user_nick_name.':'.$user_password);
setcookie('user', $user, time()+2592000);

Фанат
tnx
 

SNiP

Новичок
теперь юзер зарегился с ником «::•:•vLaDa•:•::»
1. не давать возможность использовать символ ":" в логине.
2. использовать формат login:md5\n тогда каждая строка это отдельная пара, значение md5 = 32 символа, дальше думаю понятно.
3.
не придумывают проблем на свою задницу
 

Фанат

oncle terrible
Команда форума
кстати, если пароль в мд5, то тогда вообще не нужен разделитель.
 

KeTal

Guest
Сенсей
Самый простой вариант в качестве разделителя использовать что нибудь типа: "[-:::-]" и запретить его в имени, врядли кто-то будет с таким набором символов имя писать, я так раньше всегда делал.
 

Нечто

Психолог РНРClub
В качестве разделителя лучше \t, а вообще согласен с Фанатом.
 

ONK

Пассивист PHPСluba
Подобные проблемы, при грамотной реализации автоматической авторизации, просто не возникают. Передача пароля в каком либо виде через куки действительно в некоторой степени понижает общую безопасность приложения.
 

tristram

Guest
изврат. я в куках храню sid и этого достаточно. а для автологина пихаю в куки
PHP:
base64_encode(base64_encode($user).":".base64_encode($passwd));
для дешифровки
PHP:
list ($user,passwd) = explode(":", base64_decode($cookie));
$user = base65_decode($user);
$passwd = base65_decode($passwd);
при таком раскладе неважно какой будет ник и пасс.
андерстанд?
 

Сенсей

Новичок
Да уже все давно решено... совет фаната помог... здесь просто уже флеймить начали ... так тему почистили...

Проблему можно считать исчерпанной....

Для тех у кого возникнет такая же проблема - рузультат работы функции md5 - 32 символа... поэтому можно обойтись простым substr
 
Сверху