想实现如下的功能:
例如:用session验证用户名和密码通过后(成功登录网站后时),生成session的代码是这样的:
<?php
session_start();
$_SESSION['username']="zw";
$_SESSION['password']="123abc";
echo "<script language=\"javascript\">";
echo "window.location.href=\"../page1.php\";";
echo "</script>";
?>那么网页会自动跳转到page1.php;
//////////////////////////////////////////////////////
假如网站其他的网页page2.php前面都是这样的:
<?php
session_start();
if(isset($_SESSION['username'])&&isset($_SESSION['password']))
{
if($_SESSION['username']=="zw"&&$_SESSION['password']=="123abc"){echo "欢迎你".$_SESSION['username'];};
else{echo "欢迎你guest!"};
}
//省略代码
?>有如下几个问题:代码该怎么写?1.登录后跳转到page1.php后不关闭该页;现在想实现:再打开page2.php,或其他更多该站网页,也就是说只要有该网站网页打开状态,再打开其他网页时就会是登陆的状态。以上代码不能实现,该怎么弄?
2.当该网站网页全部关闭时,怎么退出登录状态。
3。随时退出登录状态。
4.一段时间,如10天,自动退出登录状态。

解决方案 »

  1.   

    写的什么乱七八糟的东西,看也看不懂,不过你第一段代码中的javascript可以用header("location:page.php");来代替。
      

  2.   

    session通常时间没那么长而且保存在服务端,每个客户端必须有钥匙【session_id】,才能找到自己的值要保持一段时间登录,比如10天。通常做法是借助cookie,保存用户名+加密后的密码。。下次访问,如果是游客状态,如果存在这两个值,就实现登陆session在页面关闭后,重新开页面,就会新启用一个会话,即上面的钥匙,也就是说,实际上就退出登录了。但是多标签浏览器可能不是这样,除非关闭整个浏览器
      

  3.   

    哪么你的意思是说,只好用setcookie的方式来登录了是吗
      

  4.   

    1.登录后跳转到page1.php后不关闭该页;现在想实现:再打开page2.php,或其他更多该站网页,也就是说只要有该网站网页打开状态,再打开其他网页时就会是登陆的状态。以上代码不能实现,该怎么弄?
    ie8/ff下就可以的,这个应该属于浏览器的问题,ie6不行。2.当该网站网页全部关闭时,怎么退出登录状态。
    用session或临时cookie就都会自动退出3。随时退出登录状态。
    unset($_SESSION['username']);
    unset($_SESSION['password']);
    4.一段时间,如10天,自动退出登录状态。
    这个只有用cookie
      

  5.   

    用session关闭网页就退出了。而且用session,在IE6的情况下,开一个网页登录后,再开一个网页打开这个网站,就是退出状态了。所以只能用cookie了。
      

  6.   

    SESSION 不管你是否全部关闭网页,一般在20分钟内无操作就自动消失了的呀。
    只有cookie可以设置保存多少天的登录状态,但是如果你清理了cookie一样会失效。------------------------------------
    桂林视窗生活网 免费发布房屋租售、二手信息、分类信息。
      

  7.   

    谢谢各位!我试着改用cookie做登录,又出现了点问题,再请教一下:login.PHP:
    <?php
    setcookie("uname", "abc123");
    echo "<script language=\"javascript\">";
    echo "window.location.href=\"check.php\";";
    //或者echo "window.location.href=\"../check.php\";";echo "</script>";
    ?>下面是check.php,如果放在login.php同级目录下,可以登录成功,但是如果login.php在上级目录就"非法访问了";怎么样取出cookie才能保证一致呢?
    check.php:
    <?php
    if(isset($_COOKIE["uname"]))
    {  echo $_COOKIE["uname"];
       echo "登录成功";
      }
    else
    {
          echo "对不起,非法访问";
      exit;
    }
    ?>
      

  8.   


    这个是你setcookie()时,有个作用域的参数设置的!!你可以改成setcookie("uname", "abc123","","/","");试试!!
    这个意思就是把cookie的作用域设置成全局的!!