Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Http Authentification и PHP (https://forum.antichat.xyz/showthread.php?t=38794)

Helios 24.04.2007 22:20

Http Authentification и PHP
 
Делаю авторизацию для админки одного портала. Использую для получения пары login/pass Http-Авторизацию.

Если со входом в систему все работает нормально, то с выходом чет не работает:

Для выхода использую ссылку index.php?logout=true, при этом пользователь получает в ответ:

Цитата:

HTTP/1.0 401 Unauthorized
Status: 401 Unauthorized
WWW-Authenticate: Basic realm="Administration area"
После чего у браузера, по идее, желание отправлять аутентификационную информацию должно пропасть...

Но нет... Нажимаю Cancel, вижу страницу с информацией о ошибке аторизации. Подправляю в адресной строке index.php?logout=true на index.php и, о чудо, я опять в админке...

Собственно вопрос: как организовать нормальный выход из системы, не используя дополнительной информации типа кукисов или сессий?

SMiX 24.04.2007 22:33

Попробуй слать юзера на index.php пост-формой, в постварах сунь идентификатор логаута через скрытый инпут.

hidden 24.04.2007 23:33

При логауте, тебе нужно снова послать запрос на авторизацию, и когда появится окно, не вводя ничего, нажать ОК, а после этого, скрипт должен сообщить об удачной авторизации.

blackybr 25.04.2007 08:33

PHP код:

<?php

$username 
$PHP_AUTH_USER;
$password $PHP_AUTH_PW;

    
cfunction authenticate() {
        
Header("WWW-authenticate: Basic realm=\"Restrict
("
.strftime("%r",time()).")\"");
        
Header("HTTP/1.0 401 Unauthorized");
        echo 
"You must enter a valid login ID and password to access
this resource\n"
;
        exit;
    }

    if(
$logout==1) {

         
setcookie("login","off");
         
$PHP_SELF =
str_replace("logout=1","",$PHP_SELF);
         
header("Location: $PHP_SELF");
         exit();
    }

    if(!isset(
$username) && !isset($password) ||
$login=="off") {
        
setcookie("login","on");
        
authenticate();
    } else {

       
/*
       Authtentication code here
       */

        
if(!$auth) {
            
authenticate();
        }
        else 
setcookie("login","on");
    }

?>

Hi <?=$PHP_AUTH_USER?> you are logged in :-)

<a href="<?=$PHP_SELF?>?logout=1">Click here to
logout</a>


Helios 25.04.2007 11:24

В итоге сделал обычную авторизацию с использованием сессий (логин и пасс беру через WWW-Authenticate - так хотел заказчик), но вопрос остается открытым:

Возможно ли сделать нормальный выход без помощи дополнительных довесков?

SMiX 25.04.2007 18:20

Ну вот я написал вариант без кукисов и сессий - должно работать.


Время: 07:26