现在的位置: 首页 > 综合 > 正文

session和cookie在php应用中我进一步的浅显认识

2013年09月30日 ⁄ 综合 ⁄ 共 2114字 ⁄ 字号 评论关闭

session和cookie大家都知道的区别

  说到 session 和 cookie 这一对兄弟,大家都有认识,基本上都能说出几点:1、session 存储在服务器,cookie 存储在客户端;2、cookie 是可以被浏览器禁用的,3、cookie 是保存在文件中的……

我认识到的session和cookie的联系

  引用书上原话“我们可能曾经听说过 'HTTP是我状态的协议' 。这是说,HTTP 协议没有一个内建机制来维护两个事务之间的状态。当一个用户在请求一个页面后再请求另外一个页面时,HTTP 将无法告诉我们这两个请求是来自同一个用户。
  因此,我们需要会话控制!通过会话控制,我们能在同一个网站中跟踪一个用户,保存他的登录状态,保存他的操作记录,保存他的操作习惯等等。
  或许你可以说,这些通过 cookie 就足以,因为在客户端与服务器中都可以操作 cookie ,但这略有些不妥,举个简单的样子,大家或许都知道 cookie 是保存在客户端的,因此,是可以被随意更改的,如果我们仅使用 cookie 来判断用户的登录状态的话,那无异于“洞门大开,菊花向阳”。
  我们使用用不同的客户端请求php文件时,用的是同一个变量如:$_SESSION[ ' name' ],取出来的值是不一样的,那是因为 php 的会话ID保证了会话变量所指向值的唯一性。该唯一的会话ID便是php会话机制的一个驱动,用一串加密的随机数字来保证其唯一性。则php生成,通常情况下,保存在cookie中,当浏览器禁用cookie时,通过url传递。使用大多数的浏览器开发者工具都可以看到,比如使用chrome的开发者工具:
  当删除该cookie后,将不可请求php程序。
  对于客户端来说,这个cookie与其它使用setcookie()方法生成的cookie无异,但对于生成来说,它有着自己独自的生成机制。首先它是自动生成的,然后,关于生成PHPSESSID的参数都是可以通过php.ini的来配置的,比如是否自动生成,超时时间,生成方法,保存路等,详见第四点。配置会话变量。

注册与注销会话变量

  php  的会话管理是随着 session_start() 开始的,调用该函数启动会话后,便可以使用$_SESSION这个全局数据了。如果重复调用session_start() ,不会报错。但是会有Notice,所以,如果喜欢日志文件简洁的同学,可以在调用该方法前先进行会话是否已开启的判断:
if ( !isset($_SESSION) ){
    session_start();
}

  当使用完一个会话变量后,应将其注销。只注销特定变量时,建议使用:

unset( $_SESSION['name'] );

  如需要彻底注销,先将$_SESSION置空,再消除会话ID:

$_SESSION = array();

//消除会话ID
session_destroy();

  

配置会话变量

session.auto_start            0(被禁用)             自动启动会话

session.cache_expire          180                   为缓存中的会话页设置当前时间,精确到分钟

session.cookie_domain         none                  指定会话cookie中的域

session.cookie_lifetime       0                     cookie会话ID将在用户的机器上延续多久。默认值0

                                                    表示延续到浏览器关闭

session.cookie_path           /                     在会话cookie中要设置的路径

session.name                  PHPSESSID             会话的名称,在用户系统中用作会话名

session.save_handle           files                 定义会话数据保存的地方。可以将其设置为指向一个

                                                    数据库,但是需要编写自己的函数

session.save_path             /tmp                  会话数据存储的路径。更通常的情况下,传递给存储

                                                    的参量由session.save_handle函数来处理和定义

session.use_cookie            1(允许使用)           配置在客户端使用cookie的会话

  当然,我此处只是针对 php5.3 的配置选项简述,想了解真相的,敬请看官方文档:http://cn2.php.net/manual/zh/session.configuration.php 中英文可自选

【上篇】
【下篇】

抱歉!评论已关闭.