[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: простой скрипт авторизации
maximka787
Ребят, привет. Оцените пожалуйста, написал вчера скрипт, а точнее максимум урезал тот что был раньше у меня.
Скажите, он правильно сделан? У меня работает, но я не проверял что будет если несколько пользователей будут одновременно работать.

<body>
<?
session_start();
if (isset($username) && isset($passwd)){
connection();
$result = mysql_query("select * from users where username='”. mysql_real_escape_string($username).”' and passwd=md5('$passwd')");

if (mysql_num_rows($result)>0 ){
$_SESSION['valid_user'] = $username; } // это ключевое присвоение
}


if (isset($_SESSION['valid_user'])){ // а тут проверка
echo '<br>Добро пожаловать на сайт';
echo ' <a href="menu.php">Войти в главное меню</a><br/>';
}
else{
<form>..ввод логина и пароля..</form>
}
?>
</body>
</
html>


////////ВСЕ ПРОЧИЕ СТРАНИЦЫ
<body>
<?

if (isset($_SESSION['valid_user'])){
//тело страницы
}
else{
echo '<br>Ошибка. Введите имя пользователя и пароль';
<
form>..ввод логина и пароля..</form>
}
?>
</body>




Спустя 1 минута, 58 секунд (13.08.2010 - 14:41) Lenarfate написал(а):
ну для первого этапа создания модуля регистрации нормально.

Спустя 1 минута, 32 секунды (13.08.2010 - 14:42) DedMorozzz написал(а):
Цитата
and passwd=md5('$passwd')");
это не будет. Выдели пасс как и с именем юзера сделал. Т.е. пхп код и проканкатенировать (соединить).

Спустя 9 минут, 11 секунд (13.08.2010 - 14:51) maximka787 написал(а):
Вот так наверно лучше, ты про это писал?

$username = mysql_real_escape_string($username);
$passwd = mysql_real_escape_string($passwd);

$result = mysql_query("select * from users where username='”. $username.”' and passwd=md5('$passwd')");

Спустя 39 минут, 17 секунд (13.08.2010 - 15:31) Guest написал(а):
Ты, наверное, понимаешь, что скрипт сделан тока на 5 процентов.. Там ещё ой как много надо сделать, стока проверок... Учи, читай

Спустя 7 минут, 22 секунды (13.08.2010 - 15:38) maximka787 написал(а):
Цитата (Guest @ 13.08.2010 - 12:31)
Ты, наверное, понимаешь, что скрипт сделан тока на 5 процентов.. Там ещё ой как много надо сделать, стока проверок... Учи, читай

тут реализован только сам механизм, и защита от инъекций, остальное я не стал выкладывать, тк и так все понятно. Главное проверить сам механизм.

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

Сейчас как только получена $_SESSION['valid_user'], на всех страницах идет только проверка

if (isset($_SESSION['valid_user'])){
//тело страницы
}

если это безопасно в принципе, то я буду рад, или скажите свое мнение.

Спустя 2 минуты, 25 секунд (13.08.2010 - 15:40) DedMorozzz написал(а):
нет, я говорил о ином. Выглядеть строка должна не так:
Цитата
$result = mysql_query("select * from users where username='”. mysql_real_escape_string($username).”' and passwd=md5('$passwd')");
А вот так:
$result = mysql_query("select * from users where username='”. mysql_real_escape_string($username).”' and passwd='".md5('$passwd')."'");

Спустя 24 минуты, 46 секунд (13.08.2010 - 16:05) Guest написал(а):
Где защита от инъекций?

Спустя 1 минута, 6 секунд (13.08.2010 - 16:06) maximka787 написал(а):
Цитата (Guest @ 13.08.2010 - 13:05)
Где защита от инъекций?

Тут уже решено.
$result = mysql_query("select * from users where username='”. mysql_real_escape_string($username).”' and passwd='".md5('$passwd')."'");

акцент на грамотность авторизации.

Спустя 6 минут, 45 секунд (13.08.2010 - 16:13) maximka787 написал(а):
А сейчас прочитал про то чтоб в каждом скрипте обязательно была
session_start();

посмотрите пожалуйста код в самом верху. мне просто надо понять этот небольшой момент.

Спустя 43 минуты, 33 секунды (13.08.2010 - 16:56) Guest написал(а):
session_start() должна стоять в самом начале твоей страницы, пока ты ничего в браузер не вывел, иначе ничего не будет, а на каждой странице, где требуется авторизация

Спустя 1 день, 17 часов, 32 минуты, 4 секунды (15.08.2010 - 10:29) maximka787 написал(а):
Такой вопрос.

1. Правильно ли я всетаки вставляю в начало php!! кода session_start();
<html><head>....</head>
<body>
<?
session_start();
....
?>
</body></html>

2. Сейчас я добавил session_start(); только на страницу регистрации сессионной переменой. На всех остальных страницах пока нет, но сделаю щас. Только вопрос, если все и так работает это может быть уязвимость какая нибудь? (если что код в самом верху темы)

Спустя 2 минуты, 2 секунды (15.08.2010 - 10:31) linker написал(а):
maximka787
Давайте мы уже научимся оформлять код (соответствующими bb-кодами) как положено.

Спустя 22 минуты, 54 секунды (15.08.2010 - 10:53) maximka787 написал(а):
Хорошо, учту)

Спустя 8 часов, 55 минут, 43 секунды (15.08.2010 - 19:49) maximka787 написал(а):
Цитата (maximka787 @ 15.08.2010 - 07:29)
Такой вопрос.

1. Правильно ли я всетаки вставляю в начало php!! кода session_start();
<html><head>....</head>
<body>
<?
session_start();
....
?>
</body></html>

2. Сейчас я добавил session_start(); только на страницу регистрации сессионной переменой. На всех остальных страницах пока нет, но сделаю щас. Только вопрос, если все и так работает это может быть уязвимость какая нибудь? (если что код в самом верху темы)

а, по поводу этого есть мнение?

Спустя 9 дней, 3 часа, 15 минут, 19 секунд (24.08.2010 - 23:04) maximka787 написал(а):
Ребя скажите а в целях безопасности надо на каждой странце требующей авторизации проверять каждый раз логин и пароль?
или достаточно

if (isset($_SESSION['valid_user'])){
//тело страницы
}
else{
echo '<br>Ошибка. Введите имя пользователя и пароль';
<
form>..ввод логина и пароля..</form>
}


это очень важно, мне один раз только объясните)

Спустя 1 час, 13 минут, 58 секунд (25.08.2010 - 00:18) Rivalryzerg написал(а):
maximka787, достаточно просто проверять установленную переменную в $_SESSION.
Удаленный пользователь не может изменить значение этого массива, если только на сайте нет уязвимостей.

На всякий случай: главное не забыть session_start() до работы с $_SESSION )

Спустя 12 дней, 12 часов, 6 минут, 25 секунд (7.09.2010 - 12:25) Timonovsky написал(а):
А не могли бы подсказать, как реализовать что бы авторизированные пользователи подсвечивались, в момент когда они на сайте. Устанавливать сессию в true?И записывать ее в друную ьтаблицу какую-нить?


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.