php中session学习笔记

Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

使用PHP应用session时,将session中的数据存储在服务器上,然后通过客户端传来的sessionID识别客户端的信息,并提取信息。

自己的一个实例,代码如下:

  1. <?php
  2. session_start();//启动会话session,在session必须启动
  3. $_SESSION['name']=”fangshan”;//设置session,name的值为fangshan
  4. ?>
  5. <a href=”session2.php”>next</a>
  6. (以上另存为session.php)
  7. <?php
  8. session_start();//启动会话
  9. if(isset($_SESSION['name']))//判断是否存在
  10. {
  11. echo $_SESSION['name'];
  12. echo “<a href=”deletesession.php”>del session</a>”;
  13. }
  14. else
  15. {
  16. echo “Session has not been setted”;
  17. }
  18. ?>
  19. (以上另存为session2.php)
  20. <?php
  21. session_start();//启动session
  22. unset($_SESSION['name']);//注销session变量
  23. session_destroy();//清除session ID
  24. header(“Location:session2.php”);//跳转回前面页面
  25. ?>
  26. (以上另存为deletesession.php)

session的常用操作:

session的写入、读取、注册与删除。

session的开始

标记session使用开始的函数是session_start,session_start函数用于初始化session变量,语法如下:session_start();返回值为TRUE。

session的写入和读取

在PHP中,session的使用是通过预定义数组$_SESSION的调用和读取来完成。

在网站的页面中,在注册页面对$_SESSION数组进行赋值,在其他的页面中对$_SESSION数组进行读取。

注册页面中的session,例如如下代码:

  1. <?php
  2. session_start();
  3. $_SESSION['keyword']= "php";
  4. ?>

其他页面中的session,例如如下代码:

  1. <?php
  2. session_start();
  3. echo $_SESSION['keyword'];
  4. ?>

依次运行,结果是:php

session的检测与注销

还记得isset和unset函数吗?这两个函数分别实现session的检测与注销。

isst函数用于检测session是否已经被存在,语法如下:

bool isset($_SESSION['session_name'])

例如如下代码:

  1. <?php
  2. session_start();
  3. if(isset($_SESSION['keyword']))
  4. echo $_SESSION['keyword'];
  5. else
  6. echo "www.phpfensi.com";
  7. ?>
  8. //结果:php

usset函数用于注销已经建立的session变量。语法如下:

unset($_SESSION['session_name']))

例如如下代码:

  1. <?php
  2. session_start();
  3. unset($_SESSION['keyword']);
  4. if(isset($_SESSION['keyword']))
  5. echo $_SESSION['keyword'];
  6. else
  7. echo "www.phpfensi.com";
  8. ?>
  9. //结果:www.phpfensi.com

Php处理会话的函数一共有10个,我们详细介绍一下将要用到几个函数。

1、session_start

函数功能:开始一个会话或者返回已经存在的会话。

函数原型:boolean session_start(void);

返回值:布尔值

功能说明:这个函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2) in /usr/local/apache/htdocs/cga/member/1.php on line 3

2、session_register

函数功能:登记一个新的变量为会话变量

函数原型:boolean session_register(string name);

返回值:布尔值。

功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。

3、session_is_registered

函数功能:检查变量是否被登记为会话变量。

函数原型:boobean session_is_registered(string name);

返回值:布尔值

功能说明:这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。

4、session_unregister

函数功能:删除已注册的变量。

函数原型:boolean session_session_unregister(string name);

返回值:布尔值

功能说明:这个函数在当前的session之中删除全局变量中的变量。参数name就是欲删除的变量名,成功则返回true.

5、Session_destroy

函数功能:结束当前的会话,并清空会话中的所有资源。

函数原型:boolean session destroy(void);

返回值:布尔值。

功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true

上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:

6、session_encode

函数功能:sesssion信息编码

函数原型:string session_encode(void);

返回值:字符串

功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test";c|s:4:"lala"; a是变量名 s:12代表变量a的值"it is a test的长度是12 变量间用分号”;”分隔。

7、session_decode

函数功能:sesssion信息解码

函数原型:boolean session_decode (string data)

返回值:布尔值

功能说明:这个函数可将session信息解码,成功则返回逻辑值true

8、session_name

函数功能:存取当前会话名称

函数原型:boolean session_name(string [name]);

返回值:字符串

功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name

9、session_id

函数功能:存取当前会话标识号

函数原型:boolean session_id(string [id]);

返回值:字符串

功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id

10、session_unset

函数功能:删除所有已注册的变量。

函数原型:void session_unset (void)

返回值:布尔值

功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_unregister逐一注销掉所有的会话变量。