php专区

 首页 > php专区 > 正则表达式 > php会话控制cookie与Session会话处理 - php会话

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

分享到:
【字体:
导读:
          会话简介:HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他数据所有的规则,HTTP 是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关,虽然这种...

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

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

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

一.Cookie的应用

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

创建cookie,代码如下:

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

参数1:cookie 名称

参数2:cookie 值

参数3:cookie 过期时间

查看cookie

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

读取cookie,代码如下:

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

删除cookie,代码如下:

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

使用Cookie 的限制:

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

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

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

二.Session会话处理

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

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

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

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

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

删除session,代码如下:

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

销毁所有session,代码如下:

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

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()则是获取这些设定的值.

分享到:
php cookie清除与ff下cookie无法删除 - p...
php cookie清除与ff下cookie无法删除 首先我们看一下php手册中关于删除cookie的说明: bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] ) 要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制,下面的例...
PHP Session丢失无效问题总结 - php会话
PHP Session丢失无效问题总结 前两天玩了一下云边的轻博客,觉得东西比较小巧,自己也想弄个东西,就直接放到服务器里装了,结果啊,$_SESSION丢失了好几天~ 情况描述:$_SESSION只能在当前的访问里有效,第二次请求就像之前执行过一样,$_SESSION里的内容会没了,就一个array(); 下面是我对这个问...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……