ФорумПрограммированиеPHP для идиотов → Проблема с скриптом авторизации.

Проблема с скриптом авторизации.

  • ref

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 13 марта 2010 г. 18:45

    Пишу скрипт авторизации к админке. И возникла проблема с logout'ом. Жму кнопку logout, и ничего не происходит, выйти не могу, куки не удаляются…
    Опытным путём выяснил, когда жму кнопку logout, куки удаляются, перезагружаю страницу и они опять записываются…

    Помогите пожалуйста выяснить и решить проблему. Убил уже вторые сутки, никак не могу решить.

    index.php
    <?php

    error_reporting('E_ALL');
    require_once 'lib/lib_auth.php';

    if ( isset( $_REQUEST['logout'] ) ) {
    auth_logout();
    }

    auth_check();
    echo 'lalalla';

    echo '<br /><br /><a href="?logout">logout</a>';

    ?>

    auth_inc.php
    <?php

    require_once './config.php';

    function auth_logout() {

    setcookie( 'login', '', time() - 3600, '/' );
    setcookie( 'password', '', time() - 3600, '/' );

    }

    function auth_login() {

    global $auth;

    if ( !isset( $_SERVER['PHP_AUTH_USER'] ) ) {

    Header('WWW-Authenticate: Basic realm="Access denied."');
    Header('HTTP/1.0 401 Unauthorized');
    exit();

    } else {

    if ( !get_magic_quotes_gpc() ) {

    $login = mysql_escape_string( $_SERVER['PHP_AUTH_USER'] );
    $password = mysql_escape_string( $_SERVER['PHP_AUTH_PW'] );

    } else {

    $login = $_SERVER['PHP_AUTH_USER'];
    $password = $_SERVER['PHP_AUTH_PW'];

    }

    if ( $login != $auth['login'] || $password != $auth['password'] ) {

    Header('WWW-Authenticate: Basic realm="Access denied."');
    Header('HTTP/1.0 401 Unauthorized');
    exit();

    } else {

    setcookie( 'login', $login, time() + 3600*24*365, '/' );
    setcookie( 'password', md5(md5($password)), time() + 3600*24*365, '/' );

    }

    }

    }

    function auth_check() {

    global $auth;

    if ( isset( $_COOKIE['login'] ) and isset( $_COOKIE['password'] ) ) {

    if ( $auth['login'] != $_COOKIE['login'] || md5(md5($auth['password'])) != $_COOKIE['password'] ) {

    setcookie( 'login', '', time() - 3600, '/' );
    setcookie( 'password', '', time() - 3600, '/' );
    auth_login();

    }

    } else {

    auth_login();

    }

    }

    ?>


    В config.php, создаю массив $auth, в котором указаны логин и пароль $auth['login'], $auth['password'].
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 13 марта 2010 г. 21:55, спустя 3 часа 10 минут 16 секунд

    ref, насколько помню, для удаления куков нужно задать имя и пустую строку. Время и папку указывать не нужно.
    да и в целом скрипт авторизации у тебя был написан году эдак в 2003-2005, т. е. очень старый уже. Лучше заюзать более нормальные (новые) решения (и вообще юзать сессии, а не куки).

Пожалуйста, авторизуйтесь, чтобы написать комментарий!