关于PHP的登陆和退出的问题,我做了一个登陆系统,但是没有退出的功能,我郁闷。
刚开始总是出现一个奇怪的问题,就是session貌似不好用,当我关闭浏览器以后,再访问服务器的时候则直接跳过了登陆页面进入了程序,我再网上看了很多,好像都是说什么路径之类的问题,但是我发现我的路径没什么问题,当我删除了本地session的文件夹里面的文件的时候就好了,我觉得可能是因为我没有退出,没有注销session,可是浏览器再关闭的时候就自动关闭了session了啊???我搞不清楚了。
<?php
session_start();
include(dirname(__FILE__).'/Zxing.php/Zxing.php');
header('content-Type=text/html;charset=utf-8');
$username = strtolower(htmlspecialchars(trim($_POST['username'])));
$pwd = strtolower(htmlspecialchars(md5(trim($_POST['pwd']))));//判断用户名是否输入,以后还需要添加更详细的判断
if(empty($_POST['username']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
              <script type="text/javascript" charset="utf-8">
                  alert("请输入用户名!");
                  location.href="login.html";
                  exit();
              </script>';
}
//判断密码是否为空
if(empty($_POST['pwd']) ){
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
              <script type="text/javascript" charset="utf-8">
                  alert("请输入密码!");
                  location.href="login.html";
                  exit();
              </script>';
}
//组建sql语句
$sql = "SELECT * FROM user WHERE username = '$username ' AND pwd = '$pwd'";
//连接数据库,实例化pdo类,送出查询
$db= new Db_pdo();
if ($db->query($sql)) {
//取得结果集,
if ($db->fetcharray()){
if($username==$db->result_array['username'] && $pwd==$db->result_array['pwd']){
//给session赋值
$_SESSION['username'] = $db->result_array['username'];
print_r($_SESSION['username']);

//header("location:admin.php");
echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
              <script type="text/javascript" charset="utf-8">
                  
                  window.location.href="admin.php";
              </script>';
}
        // ----- 登录验证通过,写入SESSION 记录登录用户
        
        
    }else{
        echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
              <script type="text/javascript" charset="utf-8">
                  alert("密码错误或者不存在该用户!");
                  location.href="admin.php";
              </script>';
    }
}else {
    echo '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">
          <script type="text/javascript" charset="utf-8">
              alert("未知错误,请联系管理员!");
              location.href="admin.php";
          </script>';
}
上面是我登陆的代码,求退出,我不知道退出该怎么写,我希望在程序的导航里面有一个退出的按钮,然后点击那个退出的按钮的时候就直接退出了。该怎么实现呢?

解决方案 »

  1.   

    session_desroty();
    销毁session值就可以了~
      

  2.   

    退出要用这两个:
    session_unset();
    session_destroy();我也出现关闭浏览器在进入网站还是登陆状态,我用了session_set_cookie_params,不知道楼主有用了没,用了就会产生关了ie照样是登陆状态
      

  3.   

      对,正如上面几位所说,设置一个退出按钮,点击时,运行:session_destory();然后把页面跳转到登陆页面;
    一般情况session是与浏览器窗口绑定的,所以不同的窗口对应不同的session_id,不同id就对应不同session值,当页面关闭后在开窗口,session_id不同了,原来的session应该是找不到了得,也许你在php.ini配置中出了问题
      

  4.   


    <a href="?op=logout">退出</a>
    <?php
    if (!isset ($_SESSION) ) session_start();
    if (isset ($_GET["op"]) && $_GET["op"]=="logout"){
    unset ($_SESSION["MM_Username"]);
    session_unset(); //见楼上,楼上,和楼上
    session_destroy();
    echo ("<script type='text/javascript'> alert('您已经成功登出,欢迎下次光临!');location.href='index.php'</script>");
    }
     ?>