PHP函数:session_name() session_id()

来源:互联网 发布:人民币入篮 知乎 编辑:程序博客网 时间:2024/06/07 17:29

session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置决定的。session会判断当前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE键值,这个值可以从php.ini找到:

1session.name = PHPSESSID //默认值
  1. session.use_cookies:默认值为"1",代表SessionID使用Cookie来传递,反之就是用Query_String来传递。
  2. Session.name:这个就是SessionID储存的变量名称,可能是Cookie来传递,也可能是Query_String来传递,默认值是"PHPSESSID" 
  3. Session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认值是“0”,代表浏览器一关闭,SessionID就作废,就是因为这个原因,所以Session不能永久使用。
  4. Session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除。

session_name()

session_name() 存取目前 session 名称。

语法: string session_name(string [name]);

本函数可取得或者重新配置目前 Session 的名称。若无参数 name 则表示单单获取目前 Session 名称,加上参数则表示将 Session 名称设为参数 name。

如果建立时是这样seesion_register("test");那么就可以用seesion_name("test")来找到这。session_id()这个函数是用来为会话进行编号就好像PHP数组一样支持字符和数字标识。

1<?php
2 
3    /* set the session name to NowaMagic */
4    $str "NowaMagic";
5    session_name($str);
6     
7    echo session_name();
8 
9?>

session_name() 与 session_id() 的区别

我们先自己运行一次程序,看看输出结果:

1<?php
2    session_start();
3    echo session_name().'='.session_id();
4?>

运行结果:

1PHPSESSID=4d8d3ep8cakmvto6hvut3mphf4

现在可以明确了:

  • session_name() 默认为 "PHPSESSID"
  • 而 session_id() 是 一次HTTP 请求,服务器得到的 $_POST['PHPSESSID'] 或者 $_GET['PHPSESSID'] 或者 $_COOKIE['PHPSESSID']

如果你在 session_start() 前调用了 session_name('SID'); 那么正常情况下(客户端支持Cookie时), 会给客户端发送 Set-Cookie: SID=(session_id 的值);

原创粉丝点击