[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оцените скрипт авторизации
slavikru
САБЖ

PHP
<?php
// Сессия
session_name("user_");
session_start();
// Данные с формы
$username trim(mysql_real_escape_string(substr($_POST['username'], 020)));
$password trim($_POST['password']);
// Проверка
if ($_POST['go']) {
    if (!isset(
$username) or (empty($username))) {
        echo 
"Пожалуйста, введите логин";
    }
    else {
        if (!isset(
$password) or (empty($password))) {
            echo 
"Пожалуйста, введите пароль";
        }
        else {
            
// MD5 пароль
            
$password md5($password);
            
// Ищем пользователя в БД
            
$select_user mysql_query("SELECT `id` FROM `users` WHERE `username` = '".$username."'
                                        AND `password` = '"
.$password."' LIMIT 1");
            
// Если запрос выполнен
            
if ($select_user) {
                
// Если кол-во строк больше 0
                
if (mysql_num_rows($select_user) > 0) {
                    
// Открываем доступ
                    
$_SESSION['uid'] = mysql_result($select_user0);
                    echo 
"Привет, ".$username;
                }
                else {
                    echo 
"Неверный логин или пароль";
                }
            }
            else {
                echo 
"Ошибка запроса: ".mysql_error();
            }
        }
    }
}




Спустя 5 минут, 26 секунд (9.04.2009 - 10:35) Kuliev написал(а):
slavikru
ЖЕСТЬ!

Спустя 7 минут, 10 секунд (9.04.2009 - 10:42) slavikru написал(а):
Kuliev, т.е?

Спустя 20 минут, 52 секунды (9.04.2009 - 11:03) FatCat написал(а):
Навскидку дыр в безопасности не вижу.

Спустя 13 минут, 55 секунд (9.04.2009 - 11:17) slavikru написал(а):
ЧТо можно добавить / убрать?

Спустя 44 минуты, 34 секунды (9.04.2009 - 12:01) Kuliev написал(а):
slavikru
Вот не большой примерчик, попробуй его доработать!
PHP
<?php
// Сессия
session_start();

// Данные с формы
// проверяем была ли нажата кнопка submit

if (isset($_POST['submit']) ? $_POST['submit']: null)
{
   
// Будем сохронять выводить ошибки
   
$_SESSION['err'] = "";
   
   
// Проверяем на пустоту
   
if (trim(empty($_POST['login'])) and trim(empty($_POST['pass'])))
   {
      
$_SESSION['err'] .= "Ошибка Логин / Пароль";
   }

   
// Леземь в базу
   
$sql mysql_query("SELECT `login`,`pass` FROM `users` WHERE `username` = '".$_POST['login']."'");
   
   
$row mysql_fetch_assoc($sql);
   
   
// Если Логин с паролем не совподают
   
if ($row['login'] != $_POST['login'] || $row['pass'] != md5($_POST['pass']))
   {
      
$_SESSION['err'] .= "Ошибка Логин / Пароль";
   }
                                        
   
// Проверяем естьли ошибки
   
if ($_SESSION['err'] != "")
   {
       
// Отправляем на форму с выводом ошибок
    
header("Location: ".$_SERVER['HTTP_REFERER']."");
   
   }
   else
   {
        echo 
"Hello admin!";
   }
   

}


Спустя 20 минут, 10 секунд (9.04.2009 - 12:22) slavikru написал(а):
Kuliev.

Сразу ясно, подставлять в запрос $_POST['login'] небезопасно.
Я бы использовал mysql_real_escape_string, перед этим обрезал бы строку к примеру до 20 символов.

Зачем это:
SQL
$sql = mysql_query("SELECT `login`,`pass` FROM `users` WHERE `username` = '".$_POST['login']."'");

$row = mysql_fetch_assoc($sql);


Если можно сразу проверять кол-во возвращенных строк запроса:
SQL
$select_user = mysql_query("SELECT `id` FROM `users` WHERE `username` = '".$username."' AND `password` = '".$password."' LIMIT 1");


Для вывода ошибок я бы использовал массив....

Спустя 38 минут, 52 секунды (9.04.2009 - 13:00) Kuliev написал(а):
slavikru
Я тебе лишь показал пример кода, который мне как кажется гораздо читабильней твоего!

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

В третьих если тебе нравиться выводить ошибки в массиве то флаг тебе в руки!!!




_____________
Быстрый ответ:

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