Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 22 Май, 2012, 11:36:24

Страниц: [1]
Печать
Автор Тема: Авторизация  (Прочитано 760 раз)
0 Пользователей и 1 Гость смотрят эту тему.
franzose    ↓ 
20 Октябрь, 2008, 09:24:23
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

У меня такой вопрос к форумцам.
 
Для админки сайта написал скрипт проверки данных логин-пароль.
 
auth.php
PHP

<?php
//подключаем настройки
include('db_settings.php');
 
$connect = mysql_connect($server, $user, $password) or die('соединиться с базой не удалось');
mysql_select_db($db, $connect) or die('соединиться с базой не удалось');
 
if (isset($_POST['submit']))
{
    if (!empty($_POST['login']) && !empty($_POST['password']))
    {
    $login    = sha1($_POST['login']);
      $password = sha1($_POST['password']);
 
      $query = "SELECT * FROM `$db`.`users` WHERE login='".mysql_real_escape_string($login)."' AND password='".mysql_real_escape_string($password)."'";
 
      $qres = mysql_query($query, $connect) or exit;
 
        if ($data = mysql_fetch_assoc($qres))
      {
        //если верная пара логин-пароль
 
        //выставляем время жизни сессии
        ini_set('session.cookie_lifetime', SESSION_LIFETIME);
 
        //убиваем прошлую сессию
        //создаем новую
        session_unset();
        session_destroy();
       session_start();
 
       //создаем переменные сессии
       $_SESSION['login']    = $login;
       $_SESSION['password'] = $password;
 
       //перенаправляем на главную страницу
       header("Location: http://admin.example.ru/afterlogin");
      }
      else
      {
        //если неверная пара логин-пароль
            //отправляем на главную страницу admin'а
        session_start();
        session_destroy();
 
        //выводим сообщение об ошибке
        print ERROR_WRONG_SUBMIT;
      }
    }
    else
    {
        //если отправлен пустой запрос
        //отправляем на главную страницу admin'а
        session_start();
      session_destroy();
      header("Location: http://admin.example.com/");
    }
}
 

Суть ясна: при удачной попытке пользователь попадает на страничку http://admin.example.com/afterlogin
Однако, дабы избежать попытки проникновения на эту страничку без авторизации, я написал еще один скриптик для того случая, если кто-то попытается зайти сразу на http://admin.example.com/afterlogin:
 
PHP

<?php
 
    //загружаем настройки
    include('db_settings.php');
 
    //устанавливаем время жизни сессии (константа, определена в db_settings.php)
    ini_set('session.cookie_lifetime', SESSION_LIFETIME);
    session_start();
 
    //соединение с базой
    $connect = mysql_connect($server, $username, $password);
    mysql_select_db($db, $connect) or die('соединиться с базой не удалось... '.mysql_error($connect));
    mysql_query("set names cp1251", $connect);
 
    //если существуют переменные сессии,
    //устраиваем проверку
    if (isset($_SESSION['login']) && isset($_SESSION['password']))
    {
        //определяем переменные сессии
       $sess_login    = $_SESSION['login'];
       $sess_password = $_SESSION['password'];
 
       $query = "SELECT * FROM $db.`users` WHERE login='".mysql_real_escape_string($sess_login)."' AND password='".mysql_real_escape_string($sess_password)."'";
 
       $qres = mysql_query($query, $connect) or exit;
 
       //если данные не совпадают
       if ($data != mysql_fetch_assoc($qres))
       {
          session_start();
          session_destroy();
          //header("Location: http://admin.example.com/");
          print ERROR_WRONG_SUBMIT;
       }
       //если совпали, включаем код страницы afterlogin
       else
       {
          include('pages/afterlogin.html');
       }
 
    }
    //иначе перенаправляем на главную админскую страницу
    else
    {
        session_start();
       session_destroy();
       header("Location: http://admin.example.com/");
    }
 
?>
 

Так вот. У меня вопрос. А если сделать в обоих файлах переменную типа $_SESSION['is_authorized'], которой присваивать либо true, либо false и во втором файле проверять лишь эту переменную? Будет ли это безопасный способ?
« Последнее редактирование: 20 Октябрь, 2008, 09:28:08 от franzose » Записан
md5    ↓ 
20 Октябрь, 2008, 09:41:13 , спустя 16 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10494
Сила слова: 1.19

внимание, сессия хранится на сервере, устанавливаете переменные только вы
почему не доверять своим, установленным переменным???
 
Авторизация и запоминание пользователей для начинающих
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
franzose    ↓ 
20 Октябрь, 2008, 09:52:34 , спустя 11 минут 21 секунду
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

спасибо за ссылку, прочитаю обязательно!
Записан
Страниц: [1]
Печать
 

Перейти в: