• session


      session指的是一个回话,他们存储一个特定用户与交互系统之间的数据,拥有一个唯一的标示符,session默认是以文件形式存储在服务器端的c:/window/temp目录。

      session默认的什么周期就是从用户打开一个浏览器到关闭浏览器,当用户启用session时,会随机生成一个session_id,当然你也可以用session_id()来指定特定id,默认情况下session_id会回传给所使用的客户端用cookie存储,再次使用时通过cookie传递id就可以使用指定的session文件的值。

      session是以session_start()开始的,默认情况下会调用php中的save_handler机构,其实php也给我们提供了一个session_set_save_handler()函数,我们通过这个函数来自定义session的工作方式

     1 <?php
     2 
     3     //自定义函数来操作session的工作情况
     4 
     5     //打开文件
     6     function open($save_path,$session_name){
     7     
     8         global $session_save_path;
     9         $session_save_path=$save_path;
    10         echo ('这是open函数<br />');
    11         return true;
    12     }
    13 
    14     //关闭文件
    15     function close(){
    16         echo '这是close函数<br />';
    17         return true;
    18     }
    19 
    20     //读取文件
    21     function read($id){
    22         echo ('这是read函数<br />');
    23         global $session_save_path;
    24         $save_file="$session_save_path/sess_$id";
    25         //echo $save_file;
    26         $val=@file_get_contents($save_file);28         return $val;
    29     }
    30 
    31     //写入文件
    32     function write($id,$session_data){
    33         echo '<br />这是write函数<br />';
    34         global $session_save_path;
    35         $save_file="$session_save_path/sess_$id";
    36         if(file_put_contents($save_file,$session_data)){
    37             return true;
    38         }else{
    39             return false;
    40         }
    41     }
    42 
    43     //销毁文件
    44     function destroy($id){
    45         echo '这是destroy函数<br />';
    46         global $session_save_path;
    47         $save_file="$session_save_path/sess_$id";
    48         return (unlink($save_file));
    49     }
    50 
    51     //文件回收函数
    52     function gc($maxlifetime){
    53         echo '这是gc函数<br />';
    54         global $session_save_path;
    55         foreach(glob("$session_save_path/sess_*") as $file){
    56             if(filemtime($file)+$maxlifetime<time()){
    57                 unlink($file);
    58             }
    59         }
    60         return true;
    61     }
    62 
    63     //session处理函数
    64     session_set_save_handler('open','close','read','write','destroy','gc');
    65 
    66     //开始session
    67     session_start();
    68 
    69 ?>

     调用这个文件,你会得出这个结果

    这是open函数
    这是read函数
    
    这是write函数
    这是close函数

      这个表明session_start()函数实际在调用时先调用open函数,用来打开session所在的目录;再就是read函数,该函数返回读取session文件的所有数据;read返回数据后我们可以再一个script文件通过$_SESSION[]方法读取;在就是读取里面的write函数,该函数将script里面通过$_SESSION[]添加的值写入到session文件中;最后调用close函数,该函数是在页面结束的时候调用。

      其中的destroy函数就是你在脚本script中使用session_destroy()是调用,目的就是为了销毁文件,而gc函数就是一个垃圾文件回收的功能,当一个session文件修改的时间超过php指定的maxlefttime是就会被视为垃圾文件,这是就可以通过gc文件来销毁,gc函数式每个session_start()使用时被调用,然后每次独有0.1%的机会销毁垃圾文件(这也是php的默认设置,你也可以通过修改php.ini 的session_gc_probability和session_gc_divisor参数的值来改变,他们的计算公式是session_gc_probability/session_gc_divisor).

      session的使用范围挺广的,在用户登陆时我们可以将用户名和密码通过session存储起来,然后在所有的页面都可以通过session显示用户名;在购物网站我们也可以用到session,当你将所要购买的商品加入到购物车时也将他加入到session,这样就可以方便在所有页面查看你的购物车的信息了

  • 相关阅读:
    导航栏的修改
    [题解](背包)luogu_P4095 eden的新背包问题
    [題解](貪心/堆)luogu_P2107小Z的AK計劃
    [題解](最短路)luogu_P2384最短路
    [題解](單調隊列dp)luogu_P1725琪露諾
    [題解](單調隊列/水)luogu_P3088擠奶牛
    [題解](單調隊列dp)【2016noip福建夏令營】探險
    [題解](水/最短路)出题人大战工作人员
    [题解](最短路)最短路点数
    [題解]luogu_P1613跑路(最短路/倍增)
  • 原文地址:https://www.cnblogs.com/wenxianguo/p/3899166.html
Copyright © 2020-2023  润新知