给我留言 | 加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
| PHP | ASP | JAVA | .NET | FLASH | AJAX | MYSQL | PGSQL | MSSQL | DB2 | ORACLE | SYBASE | Html/Css | 服务器相关 | IOS |
您当前的位置:首页 > WEb开发 > PHP

PHP的basic认证的退出处理方案

时间:2011-09-20 11:52:16  来源:lailook资料网  作者:王国兵

最近做一个邮件管理系统带网盘的,使用Basic认证,通过邮箱+邮箱密码登录。

各机能都正常实现了,最终发现通过basic认证登录成功之后,退出很难实现

而用unset($_SERVER['PHP_AUTH_USER']),却什么效果都没用,网上查了很多资料,也没有解决

后来通过以下办法解决问题(session+basic认证),附上代码供大家参考。

<?php
session_cache_limiter('private, must-revalidate');
session_start();
$mail = "abc@abc.com";
$pass = "123";

if (isset($_GET["logout"]) && $_GET["logout"] == "true") {
    unset($_SESSION["mail_acount"]);
    ?>
    logout successfully!<br />
    <a href="?">ReLogin</a>
    <?exit;
}

if (!isset($_SERVER['PHP_AUTH_USER']) || $_SESSION["mail_acount"] == null) {
    $_SESSION["mail_acount"] = true;
    header ('WWW-Authenticate: Basic realm="My Realm"' );
    header ('HTTP/1.0 401 Unauthorized' );
    exit;
} else {
    if ($mail == $_SERVER['PHP_AUTH_USER'] && $pass = $_SERVER['PHP_AUTH_PW']) {
        $_SESSION["mail_acount"] = $mail;
    } else {
        header ('WWW-Authenticate: Basic realm="My Realm"' );
        header ('HTTP/1.0 401 Unauthorized' );
        exit;
    }
}

?>
login successfully<br />
<a href="?logout=true"> Logout</a>

lailook原创,如需转载,请注明出处。

欢迎大家到【QQ群:87191860】里来交流,互相学习。

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
栏目更新
栏目热门