当前位置:首页 > PHP教程 > php会话 > 列表

php会话控制cookie与Session会话处理

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-03 13:30:28 浏览: 评论:0 

会话简介:HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他数据所有的规则,HTTP 是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关,虽然这种简化实现对于HTTP 的普及做出了卓越的贡献,但对于希望创建复杂的Web 应用程序的开发人员来说,这点有点困扰,为了解决这个问题,出现了一种在客户端机器上存储少量信息(cookie).

由于cookie 大小限制、数量及其他原因,开发人员又提出了一种解决方案:session 会话处理。

一.Cookie的应用

设置cookie:setcookie()函数可以在客户端生成一个cookie 文件,这个文件可以保存到期时间、名称、值等.

创建cookie,代码如下:

  1. <?php 
  2. setcookie(‘name’,'Lee’,time()+(7*24*60*60));//设置一个过期时间为7天的cookie 
  3. ?> 

参数1:cookie 名称

参数2:cookie 值

参数3:cookie 过期时间

查看cookie

打开火狐浏览器:工具–页面信息-安全-查看cookie,可以查看到当前的cookie信息.

读取cookie,代码如下:

  1. <?php 
  2. echo $_COOKIE['name']; 
  3. ?> 

删除cookie,代码如下:

  1. <?php 
  2. setcookie(‘name’,”); 
  3. setcookie(‘name’,'Lee’,time()-1); 
  4. ?> 

使用Cookie 的限制:

1、必须在HTML 文件的内容输出之前设置.

2、不同的浏览器对Cookie 的处理不一致,且有时会出现错误的结果.

3、限制是在客户端的,一个浏览器能创建的Cookie 数量最多为30 个,并且每个不能超过4KB,每个WEB 站点能设置的Cookie 总数不能超过20 个.

二.Session会话处理

在使用session 会话处理,必须开始session,使用session_start()开始会话.

创建session 并读取session,代码如下:

  1. <?php 
  2. session_start(); 
  3. $_SESSION['name'] = ‘Lee’; 
  4. echo $_SESSION['name']; 
  5. ?> 

判断session 是否存在,代码如下:

  1. <?php 
  2. session_start(); 
  3. $_SESSION['name'] = ‘Lee’; 
  4. if (isset($_SESSION['name'])) { 
  5. echo $_SESSION['name']; 
  6. ?> 

删除session,代码如下:

  1. <?php 
  2. session_start(); 
  3. $_SESSION['name'] = ‘Lee’; 
  4. unset($_SESSION['name']); 
  5. echo $_SESSION['name']; 
  6. ?> 

销毁所有session,代码如下:

  1. <?php 
  2. session_start(); 
  3. $_SESSION['name'] = ‘Lee’; 
  4. $_SESSION['name2'] = ‘Lee’; 
  5. session_destroy(); 
  6. echo $_SESSION['name']; 
  7. echo $_SESSION['name2']; 
  8. ?> 

cookie与session的区别和关系

存储位置:

1.session存储在服务器位置上,可以通过php.ini里面配置session相关配置

2.cookie存储在客户端上.

php.ini里面关于session和cookie有关的配置

1,session.use_cookie = 1

是否采用Cookie方法传递session id值,默认是1,表示启用.

2,session.name = PHPSESSID 

不管是Cookie传递sessioin_id,还是GET方法传递session_id,都需要使用键值,他们的格式分别是Cookie:sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由这里指定的.

3,session.use_only_cookies = 0 

表示只使用Cookie 的方法传递session id。我们说过,传递cookie的方法,除了cookie,还有GET方法,GET方法是不安全的方法。在用户端禁用了cookie的时候,会采用GET方法传递session_id,可以通过这个设置尽用GET方法传递session_id。 

4,session.cookie_lifetime = 0,session.cookie_path = / 以及session.cookie_domain = 

如果使用Cookie方法传递session_id的话,这里分别指定了cookie有效域、目录和时间。分别对应setcookie()函数的形参$expire、$path和$domain。其中cookie_lifetime=0表示直到关闭浏览器才删除Cookie。还可以使用session_set_cookie_params()函数修改这些值。 

5,session_name([string $name]) 

获取或更新session_name。如果传了name,则表示不使用默认的名称PHPSESSID(由session.name)指定,否则获取当前session_name。注意:如果设置session_name,则必须在session_start()之前调用才生效。 

6,session_id([string $id]) 

与session_name()类似,但它是读取或者设置session_id的方法,同样,设置session_id的话,必须在session_start()之前调用才有效.

7,session_set_cookie_params()和session_get_cookie_params() 

通过session_set_cookie_params()可以重新设定session.cookie_lifetime,session.cookie_path以及session.cookie_domain这三个php.ini设置,而session_get_cookie_params()则是获取这些设定的值.

Tags: php会话控制 Session会话处理

分享到: