Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

написание скрипта регистрации

32K
10 мая 2008 года
Spoofing
10 / / 05.05.2008
доброе время суток..

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

вобщем, смысл в том, что информация "авторизирован ли пользователь на сайте" - хранится у "нас"
как уже было сказано в одном из тем, - в куках храним только рандомный id, и будет еще одна база (.txt) со списком.

теперь пошагово:

при каждом заходе на страницу генерируется рандомный id.
юзер авторизируется на сайте через обычную форму - ему в куки задается этот id и записывается в auth.txt строка
Цитата:
id из куки|логин|пароль



дальше всегда только сверяем эту базу авторизированных пользователей с настоящей (для примера, запись в настоящей базе будет простой "логин|пароль")

Код:
$auth = file('auth.txt'); // авторизированные пользователи
$userlist = file('userlist.txt'); // зарегестрированные пользователи
for ($i = 0; $i < sizeof($auth); $i++) {
$a = explode('|',trim($auth[$i]));
if ($a[0] == $_COOKIE['id']) {
for ($c = 0; $c < sizeof($userlist); $c++) {
$u = explode('|',trim($userlist[$c]));
if ($u[0] == $a[1] && $u[1] == $a[2]) { пользователь авторизирован на сайте }
}
}
}


как видите, со стороны клиента лишь его постоянный ID, а информация авторизирован он на сайте или нет - хранится у нас, то есть те логин и пароль которые он ввел для авторизации.. хранятся в отдельном файле и сверяются с настоящей БД зарегестрированных пользователей.

p.s. я нуб в пхп, за возможно не оптимизированный код прошу не ругать.. хотел лишь показать технологию

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

с нетерпением жду критики и ответов!
353
10 мая 2008 года
Nixus
840 / / 04.01.2007
Зачем тебе в auth.txt хранить пароль? Сравнить только имя пользователя по твоему не достаточно?
21K
10 мая 2008 года
t3s
26 / / 12.03.2007
лично я куками отвык пользоваться, впрочем как и файлами
пароль держится в базе, зашифрованный MD5
при авторизации сравниваются хеши введенного пароля и того что в базе - если совпадают, открываем сессию (можно извратиться и дать пользователю выбрать срок сессии)
32K
11 мая 2008 года
Spoofing
10 / / 05.05.2008
а есть ли возможность сделать чтобы сессия не удалялась при закрытии браузера пользователем?..

пробывал делать в момент авторизации пользователя то есть обработки формы входа на сайт
 
Код:
if ($_POST['autologin'] == 'on') { session_set_cookie_params(time()+12960000); }

но не работает - закрыл браузер, вновь открыл и он меня не запоминает..

и еще подскажите пожайлуста)

Код:
// вход на сайт
if ($do == 'enter') {

// если ввели логин, пароль и нажали кнопку входа
if ($_POST['submit'] && $_POST['login'] && $_POST['password']) {

// шифруем введенный пароль
$pswd = md5($_POST['password']);

// проходимся по базе в поисках юзера
for ($i = 0; $i < sizeof($userlist); $i++) {

// если все совпадает
if (usr($i) == $_POST['login'] && usr($i,1) == $pswd) {

// создаем сессию
session_register($unique.'login');
session_register($unique.'password');
$_SESSION[$unique.'login'] = $login;
$_SESSION[$unique.'password'] = $pswd;

// если отмечен checkbox value="1" для автологина...
if ($_POST['auto']) { session_set_cookie_params(time()+12960000); }

// дальше незачем продолжать когда нашли нужного юзера..
break;
}
}
}
}

функция usr() представленная здесь. просто на сайте форум, комментарии к чему-то, блоги.. вобщем часто приходится обращаться к яйчекам в БД пользователей, по тому и нужна эта функция.
 
Код:
$userlist = file('db/usr.txt');
function usr($usr_id=0,$usr_data=0) {
global $userlist;
$usr = explode('|',trim($userlist[$usr_id]));
return $usr[$usr_data];
}


вот код, а вопрос: Нужно ли в сессию задавать $_SESSION[$unique.'password'] = $pswd; - пароль? для проверки авторизации пользователя.. или же достаточно одного логина и юзер не сможет это подменить?

спасибо:)
271
11 мая 2008 года
MrXaK
721 / / 31.12.2002
session_set_cookie_params() надо перед session_start()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог