авторизация

Тема в разделе "PHP программирование", создана пользователем san4es, 30 июн 2007.

Статус темы:
Закрыта.
  1. san4es

    san4es Гость

    есть такой скрипт.
    на страничке вводим логин и пароль, при нажатии на кнопку переходим на ентот скрипт, происходит проверка и в случае успеха переходим на секретную страничку.
    работает только в IE, в opera, firefox никуда переходит, сессия не регистрируется, т.е. остаётся на этом скрипте и всё, белый экран.
    подскажите как исправить

    Код (Text):
    <?php

    $SERVER_ROOT = "http://localhost/";
    if(eregi("^$SERVER_ROOT",$HTTP_REFERER)){
    if($Submit){
    $link = mysql_connect("localhost", "root", "") or die("невозможно соединиться с сервером : " . mysql_error());
    mysql_select_db("db1") or die("невозможно выбрать базу данных");
    $query = "SELECT * FROM uLogins WHERE ulogin=\"$user_name\" AND upassw=\"$user_pass\"";
    $result = mysql_query($query) or die("Ошибка запроса : " . mysql_error());
    $nr=mysql_num_rows($result);
    if($nr==0){
    header("Location: index.php?err=1");
    exit;
    }
    session_register("logged_user");
    session_register("catu");
    $logged_user = $user_name;
    $row=mysql_fetch_array($result);

    if($row["ucat"]==1){
    $catu=$row["ucat"];
    header("Location: secretplace1.php");
    exit;
    }
    if($row["ucat"]==2){
    $catu=$row["ucat"];
    header("Location: secretplace2.php");
    exit;
    }

    header("Location: index.php?err=22");
    exit;
    }
    }
    ?>
     
  2. san4es

    san4es Гость

    в принципе если убрать

    Код (Text):
     $SERVER_ROOT = "http://localhost/";
    if(eregi("^$SERVER_ROOT",$HTTP_REFERER)){
    if($Submit){
    то всё работает, однако если передать через заголовок логин и пароль, то можно спокойно авторизироваться.
     
  3. deadt04ka

    deadt04ka Гость

    попробуй заменить на
    Код (Text):
    if(preg_match("/^$SERVER_ROOT/i",$HTTP_REFERER)){
    if($Submit){
     
  4. san4es

    san4es Гость

    не то... ругаецца
     
  5. deadt04ka

    deadt04ka Гость

    блин по моему там
    Код (Text):
    if(preg_match("/^".$SERVER_ROOT."/i",$HTTP_REFERER)){
    так...
     
  6. san4es

    san4es Гость

    Unknown modifier '/'
     
  7. deadt04ka

    deadt04ka Гость

    З.Ы.
    $SERVER_ROOT = "http://localhost/"; ты такой оставляешь... если такой то в адресной строке должно быть
    http://localhost/ иаче если ты его залил на сайт и в какую либо папку то прописываеться домен этого сайта + дальнейший адрсе.. вот допустим
    http://codeby.net -сайт и тут находиться твой скрипт авторизации... значит
    $SERVER_ROOT = "http://codeby.net";
    и воообще я тебе рекомендую
    Код (Text):
    $SERVER_ROOT = "http://localhost/";
    if(eregi("^$SERVER_ROOT",$HTTP_REFERER)){
    это удалить!
     
  8. san4es

    san4es Гость

    сделал вот так
    Код (Text):
      if (isset($_POST['user_name'],$_POST['user_pass']) && !empty($_POST['user_name']) && !empty($_POST['user_pass']))
    предыдущий вариант смарел по учебникам. там сказано что-то про безопасность...
     
  9. Pasha

    Pasha Гость

    secretplace1.php, secretplace2.php.. безопасно, никто не догадается :blink:
     
  10. MajestiC

    MajestiC Гость

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

    Для: san4es
    Не занимайся ерундой, тебе всего-лишь нужно проверить права доступа к этой странице.
    Проверки на реферера - сущая глупость, какая разница откуда пришел запрос на авторизацию.

    Код (Text):
    $query = "SELECT * FROM uLogins WHERE ulogin=\"$user_name\" AND upassw=\"$user_pass\"";
    Читай про mysql_escape_string, $_GET, $_POST, register_globals. register_globals не используй, как ты это делаешь сейчас.

    Код (Text):
    session_register("logged_user");
    session_register("catu");
    Что за старинные методы

    В начале скрипта session_start();
    А потом просто $_SESSION['logged_user'] = 1; например, если всё ок.

    В секретном скрипте:
    Код (Text):
    session_start();
    if (isset($_SESSION['logged_user']) && $_SESSION['logged_user'] == 1)
    {
    // Тут делаешь свои дела если всё ок
    }
    else
    {
    die('Требуется авторизация'); // Или редирект на страницу логина
    }
    PS. Книжки - зло, мануал - рулит.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей