Перейти к содержимому



Как сделать авторизацию на сайте?

#11 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 29 Январь 2010 - 13:43

sc2r2bey, безопасен от инъекций
		$login = mysql_escape_string($_POST['login']);
$pass = md5(md5($_POST['password']));

Я бы не добавлял а переписывал этот процедурный код. Ну зачем его использовать в таком явном виде. Ведь это разовый скрипт, так сказать. Ведь его не встроить во все свои проекты, ведь многие проекты имеют разную структуру. А если и встроить то всё будет криво и не универсально.

Напишите класс, контроллер пользователя. То есть он всё будет проверять, наличие сессий у обратившегося, сверять есть ли занесенные данные в БД и так далее. Тут надо продумать и не перебарщивать. Главное в класс не пихать лишнего, за то что он не должен отвечать.
  • 0

#12 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 29 Январь 2010 - 13:46

пока без класса - линейно
а есть вообще алгоритм какой-то?
  • 0

#13 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Январь 2010 - 13:55

sc2r2bey, алгоритм чего?
Авторизация всегда идёт путем проверки записи в файле или в БД. А затем уже зависит от способа как вы затем проверяете эту авторизацию: сессии, куки.
Алгоритм можно написать, но он будет словесный. Чем вам это поможет?
  • 0

#14 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 29 Январь 2010 - 15:05

поможет тем, что это можно потом в код превратить :rolleyes:
  • 0

#15 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Январь 2010 - 00:49

sc2r2bey, ну тогда попробую написать
Алгоритм авторизации:
1) Приём присланных данных от пользователя
2) Обеспечиваем проверку данных и так как они пришли от 3 лица нам надо их обезопасить (экранировка)
3) Теперь мы можем сверять присланные данные с хранимыми в базе
4) Если одна из записей базы соответствует введённым данным от пользователя идём дальше, если нет такой записи, сообщаем об этом пользователю(ошибка, сообщение) и далее по алгоритму не идём
5) Надо дать пользователю некие свойства и их значения для идентификации его в последующем при переходе по страницам (занесение в сессии или куки)

Далее можно написать скрипт по аналогии для проверки уже существующих свойств и их значений.
На каждой странице должна быть проверка наличия этих свойств и однозначная идентификация пользователя на каждой странице куда бы он не обратился.
Можно доверять свойствам и считать что значения этих свойств действительные, поэтому не проверять их правильность, а только пользоваться ими. Но это в корне не правильно, особенно для куков.
Сессиями пользоваться можно и без проверки, но нужно быть уверенным в том, что пользователь никоим образом не сумеет изменить/подменить значения в сессиях (сессии хранятся на сервере, а у пользователя есть ID сессии в куках)
  • 0

#16 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 03 Февраль 2010 - 19:51

Я тоже начал писать свою авторизацию пользователей.
И у меня при выходе возникли такие ошибки:
Warning: session_destroy() [function.session-destroy]: 
Trying to destroy uninitialized session in Z:\home\localhost\www\php\logout.php on line 2

Warning: Cannot modify header information - headers already sent by 
(output started at Z:\home\localhost\www\php\logout.php:2) in Z:\home\localhost\www\php\logout.php on line 3

<?php
session_destroy( );
header("Location: index.php");
?>


Кто что знает подскажите плиз.
  • 0
Вникаю в тему создания сайтов...


#17 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 04 Февраль 2010 - 01:28

phpuser, хех, чтобы удалить сессию, её надо сначала инициализировать. А вторая ошибка вылетает из-за первой, так как первая ошибка вывелась в браузер, данные уже ушли вместе с заголовками.
Правильный код:
<?php

session_start();

session_destroy();
header("Location: index.php");

?>


P.s.: Я так понял это код файла для выхода из авторизованной зоны...
  • 0

#18 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 04 Февраль 2010 - 01:32

Правильный код:
<?php

session_start();

session_destroy();
header("Location: index.php");

?>

А какие параметры можно передать через session_start( тут что то можно вписать ); ?
  • 0
Вникаю в тему создания сайтов...


#19 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 04 Февраль 2010 - 01:33

phpuser,
bool session_start (void)
Никакие, думаю, понятно без объяснений...
  • 0

#20 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 04 Февраль 2010 - 22:23

я вот по этой статье учился http://habrahabr.ru/blogs/php/13726/

Я прочитал что там пишут в комментах про реализацию той авторизации. И как я понял автор нуб и все кто писал там комменты супер мега умные.
  • 0
Вникаю в тему создания сайтов...


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru