可以用session_destroy()函数来删除设定的session

解决方案 »

  1.   

    php.ini里可以设置session.gc_maxlifetime
      

  2.   

    我是租别人空间的呀,怎么可能改的了别人服务器上的
    php.ini..............
    难道说没有别的办法去读取session内各变量的值,然后
    再删除了吗?
      

  3.   

    仔细看一下,你这都是文件系统操作方面的问题,注册session前,用session_save_path指定session文件储存的文件夹,然后再分析这个文件夹下的文件就行了。当然,安全性可能会有问题。但如果session.save_path是服务器配置的,你就没有权限读取,也就无从分析
      

  4.   

    一个自认为比较可以的方法,献丑一下,
    给楼主提供点思路
    利用session_set_save_handler控制session,把session写进数据库,
    比如:
    session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
    这样只要每次在页面开头session_start(),session就自动写进数据库。
    其中read,write函数里控制session是否清除,可以利用time()函数跟数据库里的上次写进去的时间比较,如果用户30分钟没有换页面或是刷新,就认为用户已经离开了,执行删除操作。
      

  5.   

    楼上的老大,你说的很对呀.我就是这么想的.
    现在我的session存放的地方是自己在页面上
    session_save_path里设定的,没有放在服务器
    php.ini设的目录里,所以我完全可以控制的了.
    但,主要的问题是,现在有这种函数或者是命令
    可以直接读出session所产生的那个文件里的
    所有的变量值吗?多谢了...我只要知道是哪个函数就可以了.
      

  6.   

    http://www.evilwalrus.com/viewcode.php?codeEx=553
      

  7.   

    你可以找最新版的手册看一下在www.mycode.com里面有最新的
      

  8.   

    哦,忘了你英文不行,直接用
    <?php
    //把那两个函数包含进来//读取
    $file="0/sess_53e8dcf4a96c7d4ca125fab96b1acc2b";
    $data=fread(fopen($file,"r"),filesize($file));//解码并输出
    print_r(decodesession($data));?>
      

  9.   

    楼主说的这些实际上php都是默认可以实现的。
    问题1、
    $_SESSION就可以直接取到该用户的整个session文件的内容。运行下面的代码看看就知道了
    <?
    session_start();
    $_SESSION['a'] = "a";
    $_SESSION['aa'] = "aa";
    print_R($_SESSION);
    ?>"如果能够将session中的值全部读出来,对于提高统计网站流量等数据的准
    确性会有很大帮助"??
    session文件里面的内容是经过了编码的,不管你怎么取session的变量的值,他都会将整个的session文件都解析的,
    问题2:
    apache默认是24小时后删除session文件好像。默认就可以实现不用你自己管的。
      

  10.   

    php.ini里面有这样一段
    ; Define the probability that the 'garbage collection' process is started
    ; on every session initialization.
    ; The probability is calculated by using gc_probability/gc_divisor,
    ; e.g. 1/100 means there is a 1% chance that the GC process starts
    ; on each request.session.gc_probability = 1
    session.gc_divisor     = 100; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440这段的大体意思的:每个session初始化的时候都会开始一个GC(垃圾清除)进程
    超过1440秒的session数据会被清除,概率是1%。就是说如果这个session数据超过了最长生存期就有1%的概率被清除。如果网站流量大可以把session.gc_divisor调大,否则拖累机器
      

  11.   

    to lzkd(浪子快刀):
    session_set_save_handler这个函数控制session后不会产生session文件,session_register("var")直接把数据写在文本里或者是数据库里面,具体由你控制。
    (可能写进去的数据变量var有一些无用的前缀的数据)
    当然这时候session_unregister和session_destroy函数就没什么用了,因为根本不
    产生session文件,你可以参考手册里的这个例子,他是写进文本里面
    <?php
    function open ($save_path, $session_name) {
      global $sess_save_path, $sess_session_name;
           
      $sess_save_path = $save_path;
      $sess_session_name = $session_name;
      return(true);
    }function close() {
      return(true);
    }function read ($id) {
      global $sess_save_path, $sess_session_name;  $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "r")) {
        $sess_data = fread($fp, filesize($sess_file));
        return($sess_data);
      } else {
        return(""); // Must return "" here.
      }}function write ($id, $sess_data) {
      global $sess_save_path, $sess_session_name;  $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "w")) {
        return(fwrite($fp, $sess_data));
      } else {
        return(false);
      }}function destroy ($id) {
      global $sess_save_path, $sess_session_name;
           
      $sess_file = "$sess_save_path/sess_$id";
      return(@unlink($sess_file));
    }/*********************************************
     * WARNING - You will need to implement some *
     * sort of garbage collection routine here.  *
     *********************************************/
    function gc ($maxlifetime) {
      return true;
    }session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");session_start();// proceed to use sessions normally?>
      

  12.   

    感谢各位高手的指点,在下应该是明白了。
    在此再次向各位表示真诚的谢意。非常感谢。等在下会运用了,会整理个帖出来,以此
    来报答各位对在下的帮助。另,在下是第一次上CSDN,给分什么的,都
    不太懂,如果有不对的地方,还请原谅。再次感谢            浪子快刀