Как сделать кнопку "Выход"

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
467
Реакции
16
Есть такой вот код
PHP:
<?  

class PHPruAuth  
{  
    var $LOGIN;  
    var $PASSWORD;  
    var $USER;  
    var $PASS;  

    function Error()  
    {  
        echo '<CENTER><BR><BR><FONT COLOR=RED><B>ACCESS DENIED!...</B></FONT>';  
        exit("<BR>\n</BODY>\n</HTML>");  
    }  
     
    function CheckUser()  
    {  
        $this->LOGIN = 'admin'; // логин администратора  
        $this->PASSWORD = 'pass'; // пароль администратора  

        if($this->LOGIN === $_SERVER["PHP_AUTH_USER"] && $this->PASSWORD === $_SERVER["PHP_AUTH_PW"])  
        {  
            $_SESSION["admin_online"] = 'true';  
            $AUTH = array(trim($this->LOGIN),trim($this->PASSWORD));  
            return ($AUTH);  
        }  
        $user = file('users.php');  
        foreach($user as $value)  
        {  
            list($this->USER,$this->PASS,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$value);  
            if(($this->USER === $_SERVER["PHP_AUTH_USER"]) && ($code == 'yes'))  
            {  
                $AUTH = array(trim($this->USER),trim($this->PASS));  
                return ($AUTH);  
            }  
        }  
    }  

    function PHPruAuth()  
    {  
        if(isset($_SERVER["PHP_AUTH_USER"]))  
            $AUTH = $this->CheckUser();  
        if ( (!isset($_SERVER["PHP_AUTH_USER"])) || ! (($_SERVER["PHP_AUTH_USER"] === $AUTH[0]) && ( $_SERVER["PHP_AUTH_PW"] === $AUTH[1] )) )  
        {  
            header("HTTP/1.0 401 Unauthorized");  
            header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");  
            header("WWW-Authenticate: Basic Realm=\"PROTECTED AREA\"");  
            $this->Error();  
        }  
    }  
}  



$MEMBER = new PHPruAuth;  

?>  

<?  

function ListUser()  
{  
    $list = file('users.php');  
    $all = count($list);  
?>  
<?  
    $act = 0;  
    foreach($list as $string)  
    {  
        list($user,$pass,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$string);  
        if ($code != 'yes')  
        {  
            if($time > time())  
                $txt = '<FONT COLOR=#66CC00>ожидаем до</FONT> ';  
            else  
                $txt = '<FONT COLOR=#FF0000>на удаление</FONT> ';  
        }  
        else  
        {  
            $txt = '';    $act++;  
        }  
        echo '<TR ALIGN=CENTER BGCOLOR=#F8F8F8><TD >'.$user.'</TD><TD>'.$pass."</TD><TD>".trim($email)."</TD><TD>".trim($host)."</TD><TD>".trim($web)."</TD><TD>".trim($uslugi)."</TD><TD>".$txt.date("d.m.Yг.",$time)."</TD><TD><A onclick=\"return confirm('Удалить клиента из базы?')\" HREF='?user=del&login=".$user."' TITLE='Удалить'><FONT COLOR='#FF0000'><img border='0' src='del.gif'></FONT></A></TD><TD><A HREF='?user=edit&login=".$user."' TITLE='Редактировать'><FONT COLOR='#FF0000'><img border='0' src='edit.gif'></FONT></A></TD></TR>\n";  
    }  
?>  
</TABLE>  

<BR><font face="Open Sans Condensed" color="#3366CC">Всего клиентов -</font>  
<?  
    echo '<B>'.$all.'</B>';  
}  

function AddUser()  
{  
?>  
<?  
}  

function DelUser()  
{  
    $list = file('users.php');  
    for($a = 0; $a < count($list); $a++)  
    {  
        list($user,$pass,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$list[$a]);  
        if($user == trim($_GET["login"]))  
        {  
            $fix = 1;  
            unset($list[$a]);  
            echo 'Пользователь '.$user.' удален!';  
            break;  
        }  
    }  
    if(!isset($fix))  
        echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';  
    else  
    {  
        $user_info = str_replace("\r","",join("",$list));  
        PHPruSave($user_info,'users.php','w+');  
    }  
}  

function PHPruSave($input,$file,$chmod='w+')  
{  
    $fp = fopen($file,$chmod);  
    flock($fp,2);  
    fputs ($fp,    $input);  
    flock($fp,3);  
    fclose($fp);  
}  


if (isset($_SESSION["admin_online"]))  
{  
    ShowAdmin();  
    exit("\n</BODY>\n</HTML>");  
}  

function ShowAdmin()  
{  
?>  
<?  

if(isset($_POST["protect"]))  
{  
    $check = file('users.php');  
    foreach($check as $string)  
    {  
        list($user,$pass,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$string);  
        if(trim($_POST["login"]) == trim($user))  
        {  
            $fix = 1;  
            break;  
        }  
    }  
    if(!isset($fix))  
    {  
        $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^'.trim($_POST["host"]).'^^'.trim($_POST["web"]).'^^'.trim($_POST["uslugi"]).'^^yes^^'.time()."\n";  
        PHPruSave($user_info,'users.php','a+');  
        echo 'Новый пользователь добавлен.';  
        unset($_GET["user"]);  
    }  
    else  
    {  
        echo 'Ошибка. Пользователь с таким логином уже есть.<BR><BR>';  
    }  
}  
//********************** редактируем юзера ********************* 
if(isset($_POST["edit"]))  
{  
    $check = file('users.php');  
    for($a = 0; $a < count($check); $a++)  
    {  
        list($user,$pass,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$check[$a]);  
        if(trim($_POST["login"]) == trim($user))  
        {  
            $fix = 1;  
            unset($check[$a]);  
            $user_info = str_replace("\r","",join("",$check));  
            PHPruSave($user_info,'users.php','w+');  
            break;  
        }  
    }  
    if(isset($fix))  
    {  
        $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^'.trim($_POST["host"]).'^^'.trim($_POST["web"]).'^^'.trim($_POST["uslugi"]).'^^yes^^'.time()."\n";  
        PHPruSave($user_info,'users.php','a+');  
        echo 'Пользователь отредактирован.';  
        unset($_GET["user"]);  
    }  
    else  
    {  
        echo 'Ошибка. Пользователь с таким логином не существует.<BR><BR>';  
    }  
}  
function EditUser()  
{  
    $list = file('users.php');  
    for($a = 0; $a < count($list); $a++)  
    {  
        list($user,$pass,$email,$host,$web,$uslugi,$code,$time) = explode("^^",$list[$a]);  
        if($user == trim($_GET["login"]))  
        {  
echo 'test'; 
            $fix = 1;  
            break;  
        }  
    }  
    if(!isset($fix))  
        echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';  
     
}  
//********************************************************** 
if(isset($_GET["user"]))  
{  
    if($_GET["user"] == 'add')  
        AddUser();  
    elseif($_GET["user"] == 'list')  
        ListUser();  
    elseif($_GET["user"] == 'del')  
        DelUser();  
    elseif($_GET["user"] == 'edit')  
        EditUser(); 
}  

?>  
     

<?  
}  
?>

Как в этом коде завершить сессию?
 
session_destroy();
 
Куда только не вставлял, не помогает

Проверьте обрабатывается ли этот код вообще.

По идее вставить этот код надо, собственно, в функцию обработки выхода.
Что-то в этом роде:
if(isset($_GET['logout'])) session_destroy();
 
Попробуйте эти ;)
Код:
session_start();
session_unset();
session_destroy();
session_write_close();
session_regenerate_id(true);
 
Ну в -первых я не вижу тут функции logOut() или подобной.
Насколько вижу есть следующие: Error(), CheckUser(), PHPruAuth(), ListUser(), AddUser(), DelUser(), PHPruSave(), и ShowAdmin().
Я бы создал еще функцию для LogOut и передавал бы в $_GET или $_POST еще и нажатие кнопки "log out" и в этой функции уже писал бы session_destroy() и все такие штуки.
 
Назад
Сверху