За последние 24 часа нас посетили 68187 программистов и 1651 робот. Сейчас ищут 1029 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем sc2r2bey, 30 дек 2009.

  1. sc2r2bey

    sc2r2bey Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    76
    Симпатии:
    0
    в скрипте авторизации есть возможность входа, и пока не закроется браузер никак нельзя выйти, а как сделать выход в данном скрипте, по нажатии кнопки?

    Код (Text):
    1. <?php
    2.   ///////////////////////////////////////////////////
    3.   // Система авторизации HTTP-Basic авторизации
    4.   // 2003-2005 (C) IT-студия SoftTime (http://www.softtime.ru)
    5.   // Симдянов И.В. (simdyanov@softtime.ru)
    6.   ///////////////////////////////////////////////////
    7.   // Устанавливаем соединение с базой данных
    8.   require_once("config.php");
    9.   // Если пользователь не авторизовался - авторизуемся
    10.   if(!isset($_SERVER['PHP_AUTH_USER']))
    11.   {
    12.     Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    13.     Header("HTTP/1.0 401 Unauthorized");
    14.     exit();
    15.   }
    16.   else
    17.   {
    18.     // Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
    19.     // чтобы мышь не проскочила
    20.     if (!get_magic_quotes_gpc())
    21.     {
    22.       $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    23.       $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    24.     }
    25.     $_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']);
    26.     $_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']);
    27.    
    28.     $query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'";
    29.     $lst = @mysql_query($query);
    30.     // Если ошибка в SQL-запросе - выдаём окно
    31.     if(!$lst)
    32.     {
    33.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    34.       Header("HTTP/1.0 401 Unauthorized");
    35.       exit();
    36.     }
    37.     // Если такого пользователя нет - выдаём окно
    38.     if(mysql_num_rows($lst) == 0)
    39.     {
    40.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    41.       Header("HTTP/1.0 401 Unauthorized");
    42.       exit();
    43.     }
    44.     // Если все проверки пройдены, сравниваем хэши паролей
    45.     $pass = @mysql_fetch_array($lst);
    46.     if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    47.     {
    48.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    49.       Header("HTTP/1.0 401 Unauthorized");
    50.       exit();
    51.     }
    52.   }
    53. ?>
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вот так
     
  3. sc2r2bey

    sc2r2bey Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    76
    Симпатии:
    0
    не совсем понятно, как мне передать и какие передать параметры, чтоб можно было выйти?
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ничего не надо передавать.
    При нажатии кнопки выхода должны отправится эти 2 заголовка и все.

    После чего тебя попросит авторизоваться опять.
     
  5. sc2r2bey

    sc2r2bey Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    76
    Симпатии:
    0
    а как сделать, чтоб он не стал просить авторизоваться?
     
  6. bFree

    bFree Активный пользователь

    С нами с:
    17 авг 2008
    Сообщения:
    81
    Симпатии:
    0
    sc2r2bey
    Вы сами понимаете, чего написали?
     
  7. sc2r2bey

    sc2r2bey Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    76
    Симпатии:
    0
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Отправить его туда где авторизация не нужна.
    Или отключить авторизацию.
    Или не пользоваться BasicAuth, а написать свою авторизацию.