quicksand 发表于 2006-2-11 10:40:50

有关php的session如何自动消失问题

我写php的时候
设置了一个session,这个session过了好几天都不自动消失,当我再访问这个网站的时候不用输入用户名和密码。

请问如何像在asp中一样浏览器一关闭session就自动消失呢?


另,我已经做过以下尝试
1 我的php.ini 中已经设置了
session.cookie_lifetime = 0;
2 我清空了浏览器所有的缓存文件和cookie,但是仍然不需要输入密码。

涩兔子 发表于 2006-2-11 17:49:09

Destroying a session with $_SESSION

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}

// Finally, destroy the session.
session_destroy();
?>

quicksand 发表于 2006-2-11 17:51:49

good!!~

thanks 兔子~~

jiangtao9999 发表于 2006-2-11 19:00:09

:?:
默认的应该是 session 在完全关闭浏览器后失效啊?

涩兔子 发表于 2006-2-11 20:31:37

session信息存储在服务器端

jiangtao9999 发表于 2006-2-11 21:41:46

浏览器这里存一个 COOKIE ,这个小甜点是 session 的 sid ,这个 cookie 默认是关闭浏览器后作废。

涩兔子 发表于 2006-2-12 09:38:30

:oops: 只记得从manual上直接贴代码了$_COOKIE[]



class User {
    ...

    public function UserLogin ($username, $user_password)
    {
      ... // 作sql查询操作...
         
      // 如果用户表里有相关匹配数据,即用户登录成功
      
      // 初始化session...
      session_start();
      $_SESSION = array();

      // $user_id是上面sql查询操作得到的值
      $_SESSION['USERID'] = $user_id;
      ...
         
      // 消毁session
      session_destory();
    }
}

ccat 发表于 2006-2-16 02:52:32

多问一句
session_start();
是不是得放到代码的头一行?

我放到百八十行后面它就出错

涩兔子 发表于 2006-2-16 09:08:34

session_start();在作session的初始化

编程中使用一个对象,是不是要初始化先 :mrgreen:

jiangtao9999 发表于 2006-2-16 17:16:24

session 必须在有输出之前,类似于 header() 的用法。
页: [1]
查看完整版本: 有关php的session如何自动消失问题