跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

PHP Session管理

读取/设置当前缓存的到期时间intsession_cache_expire([ string $new_cache_expire ] )请求开始的时候,缓存到期时间会被重置为 180分钟,并且保存在 session.cache_expire 配置项中。 因此,针对每个请求,需要在session_start() 函数调用之前 调用 session_cache_expire() 来设置缓存到期时间。如果给定 new_cache_expire ,就使用 new_cache_expire 的值设置当前缓存到期时间,以分钟为单位,默认值是 180 (分钟)。读取/设置缓存限制器stringsession_cache_limiter([ string $cache_limiter ] )缓存限制器定义了向客户端发送的 HTTP 响应头中的缓存控制策略。 客户端或者代理服务器通过检测这个响应头信息来 确定对于页面内容的缓存规则。 设置缓存限制器为nocache会禁止客户端或者代理服务器缓存内容,public表示允许客户端或代理服务器缓存内容,private表示允许客户端缓存, 但是不允许代理服务器缓存内容。在 private 模式下, 包括 Mozilla 在内的一些浏览器可能无法正确处理 Expire 响应头, 通过使用private_no_expire模式可以解决这个问题:在这种模式下, 不会向客户端发送 Expire 响应头。获取/设置当前会话 IDstringsession_id([ string $id ] )如果指定了 id 参数的值, 则使用指定值作为会话 ID。 必须在调用session_start() 函数之前调用 session_id() 函数。 不同的会话管理器对于会话 ID 中可以使用的字符有不同的限制。 例如文件会话管理器仅允许会话 ID 中使用以下字符:a-z A-Z 0-9 , (逗号)和 - (减号) 。读取/设置会话名称stringsession_name([ string $name ] )session_name() 函数返回当前会话名称。 如果指定 name 参数, session_name() 函数会更新会话名称, 并返回 原来的 会话名称。请求开始的时候,会话名称会被重置并且存储到 session.name 配置项。 因此,要想设置会话名称,那么对于每个请求,都需要在 调用session_start() 或者session_register() 函数 之前调用 session_name() 函数。 会话名称至少需要一个字母,不能全部都使用数字, 否则,每次都会生成一个新的会话 ID。读取/设置当前会话的保存路径stringsession_save_path([ string $path ] )指定会话数据保存的路径。 必须在调用session_start() 函数之前调用 session_save_path() 函数。 在某些操作系统上,建议使用可以高效处理 大量小尺寸文件的文件系统上的路径来保存会话数据。 例如,在 Linux 平台上,对于会话数据保存的工作而言,reiserfs 文件系统会比 ext2fs 文件系统能够提供更好的性能。启动新会话或者重用现有会话boolsession_start( void )session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用cookie提交了会话 ID, 则会重用现有会话。销毁一个会话中的全部数据boolsession_destroy( void ) session_destroy() 销毁当前会话中的全部数据,但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。如果需要再次使用会话变量, 必须重新调用 session_start() 函数。为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用 setcookie() 函数来 删除客户端的会话 cookie。 1、session会判断当前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE键值,这个值可以从php.ini找到。 如果不存在会生成一个session_id,然后把生成的session_id作为COOKIE的值传递到客户端.相当于执行了下面COOKIE 操作,注意的是,这一步执行了setcookie()操作,COOKIE是在header头中发送的,这之前是不能有输出的。PHP有另外一个函数session_regenerate_id(), 如果使用这个函数,这之前也是不能有输出的。setcookie(session_name(), session_id(), session.cookie_lifetime,//默认0session.cookie_path,//默认'/'当前程序跟目录下都有效session.cookie_domain,//默认为空)如果存在那么session_id =$_COOKIE[session_name()];然后去session.save_path指定的文件夹里去找名字为 'SESS_'.session_id()的文件.读取文件的内容反序列化,然后放到$_SESSION中. 2、比如新添加一个值$_session['test'] ='blah'; 那么这个$_session只会维护在内存中,当脚本执行结束的时候,把$_session的值写入到session_id指定的文件夹中,然后关闭相关资源. 3、SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当浏览器关闭后,才会过期,假如需要人为强制过期,比如 退出登录,而不是关闭浏览器,那么就需要在代码里销毁SESSION,方法有很多:1].setcookie(session_name(),session_id(),time() -8000000,..);//退出登录前执行2].usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。3].session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id。当不关闭浏览器的情况下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据。
"; echo $_COOKIE[session_name()]; //// 重置会话中的所有变量 -- 使用unset可以重置某个会话变量 // $_SESSION = array(); // // 同时删除会话 cookie // if (ini_get("session.use_cookies")) // { // $params = session_get_cookie_params(); // setcookie(session_name(), '', time() - 42000, // $params["path"], $params["domain"], // $params["secure"], $params["httponly"]); // } // // 最后,销毁会话 // session_destroy(); ?> 无标题文档
版权声明:本文为博主郎涯工作室原创文章,未经博主允许不得转载。 一个php类用于处理cookie会话 一个php类用于处理cookie会话 下载 以上就介绍了PHP Session管理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关文章