在用户登陆时用的session_start()和session_register()两函数,在标记<http>的前面定义的,注销是用的session_unregister()函数,是在<body>里面运行的。      我现在想在<body>里面判断一下是不是合法用户,我是这样判断的。if(isset($ab)  &&  !empty($ab))则显示某个<div>里的东西,但是现在出现的情况是     1。我注销后如果在地址栏上敲:index.php?ab=user后又进入该用户的界面了(div部分出现了)    2.我没有注销,但是当我转到另外一个页面后在通过那个页面再回来是,用户页面又不见了,请问这是为什么?    谢谢。    注:我的<div>在一个函数里面,我在写函数是用了global  $ab.否则第一次登陆都不行。 

解决方案 »

  1.   

    如果ini没有配置session自动启动的话,每个要用session的页面都要加:session_start();    1.很简单的问题,你检查是$ab变量,这个可能包括session.get.post的函数,你在地址栏输入index.php?ab=user当然可以通过,自然可以进入了,解决方法是用session_is_regiatered("ab")就可以了  2.这个问题可以简单的理解为a.你没有启动session  b.你没有在地址栏输入$ab=user    :)  ---------------------------------------------------------------    顺便在说一句,要养成良好的习惯,取变量不要贪快,否则会造成不必要的麻烦和程序漏洞  post的变量就$HTTP_POST_VARS[]  get的变量就$HTTP_GET_VARS[]    ---------------------------------------------------------------    PHP4用$_POST[]代替$HTTP_POST_VARS[]  $_GET[]代替$HTTP_GET_VARS[]
      

  2.   

    用户的注销。可以这样
    unset($_SESSION);
      

  3.   

    比如你登录成功后,
    $_SESSION['admin'] = '***';
    注销:
    unset($_SESSION['admin']);