0

0

Session [php]

php中文网

php中文网

发布时间:2016-06-23 14:37:03

|

1319人浏览过

|

来源于php中文网

原创

                  <p class="sycode">                 启动会话 ? 注册会话 ? 使用会话 ? 删除会话                  </p>

1.启动会话

session_start()

通过session_register()函数创建会话

session_register()函数用来为会话登录一个变量来隐含地启动会话,但要求php.ini文件的选项,将register_globals指令设置on,

然后重新启动Apache服务器。

立即学习PHP免费学习笔记(深入)”;

注意:调用session_register()时,不需要调用session_start()函数,PHP会在注册变量后隐含的调用session_start()函数。

2.注册会话

会话启动后,全部保存在$_SESSION中。通过数组$_SESSION创建一个会话变量很容易,只要直接该数组添加元素即可。

                  <p class="sycode">                 <?     php     session_start     ();               //     启动session               $_SESSION     [     "     admin     "     ]      =           null     ;         //     生命一个admin的变量,并赋空值               ?>                  </p>

3.使用会话

首先判断会话变量是否有一个会话ID存在,不存在就创建一个,并且使其能通过全局数组$_SESSION 进行访问。如存在,则讲这个会话变量载入以供用户使用。

例如,判断用户名Session会话变量是否为空,不为空则复制给$myvalue,

                  <p class="sycode">                 <?     php     if     (     !     empty     (     $_SESSION     [     '     session_name     '     ]))       $myvalue           =           $_SESSION     [     '     session_name     '     ];       ?>                  </p>

4.删除会话

  (1)删除单个会话

  使用unset(),但是不能使用unset($_SESSION) 函数会将全局变量$_SESSION销毁,无法恢复,用户也不能再注册$_SESSION 变量。

                  <p class="sycode">                 unset     (     $_SESSION     [     '     user     '     ]);                  </p>

  (2)删除多个会话

                  <p class="sycode">                 $_SESSION           =           array     ();                  </p>

  (3)结束会话

                  <p class="sycode">                 session_destroy     ();                  </p>

session设置时间

1.客户端没禁止cookie

  (1) session_set_cookie_params() 必须在 session_start() 之前调用

                  <p class="sycode">                 <?     php     $time           =           1     *     60     ;                   //     设置Session失效时间          session_set_cookie_params     (     $time     );       //     使用函数          session_start     ();                  //     初始化Session          $_SESSION     [username]      =           '     mr     '     ;     ?>                  </p>

说明:不推荐使用此函数,一些浏览器有问题。

  (2) 使用Setcookie()

                  <p class="sycode">                 <?     php     session_start     ();     $time           =           1     *     60     ;                             //     给出Session失效时间,1分钟               setcookie     (     session_name     ()     ,     session_id     ()     ,     time     ()     +     $time     ,     "     /     "     );       //     使用setcookie()手动设置Session失效时间               $_SESSION     [     '     user     '     ]     =     '     mr     '     ;     ?>                  </p>

2.客户端禁止Cookie

  (1)登录之前打开Cookie,很多论坛这么做

zyupload四种不同的上传PHP版
zyupload四种不同的上传PHP版

zyupload四种不同的上传PHP版

下载

  (2)通过GET方法,隐藏表单传递session_id  (常用)

  (3)使用文件或数据库存储session_id,页面传递中手动调用

 


======================分===========割============线================

Session高级应用

1.Session临时文件

session_save_path()存储session临时文件,可缓解因临时文件的存储导致服务器效率降低和站点打开缓慢的问题

示例:

                  <p class="sycode">                 <?     php     $path           =           '     ./tmp/     '     ;      //      设置session存储路径          session_save_path     (     $path     );      session_start     ();      //      初始化session          $_SESSION     [username]      =           true     ;     echo           "     Session文件名称为:sess_     "           ,           session_id     ();     ?>                  </p>

注意:session_save_path()在session_start()函数之间

 


2.Session缓存

session缓存是将内容存储在IE客户端的Temporary Internet Files 文件夹下,可设置缓存时间,下次读取缓存内容,从而提速。

Session 缓存使用 session_cache_limiter() 函数

                  <p class="sycode">                 string session_cache_limiter     ([     string      cache_limiter])                  </p>

  参数cache_limiter为public 或private。同时session缓存不在服务器端而是在客户端缓存,在服务器没显示。

  缓存时间,使用 session_cache_expire() 函数

                  <p class="sycode">                 int      session_cache_expire     ([int new_cache_expire])                  </p>

示例:

                  <p class="sycode">                 <?     php     session_cache_limiter     (     '     private     '     );     $cache_limit           =           session_cache_limiter     ();     session_cache_expire     (     30     );     $cache_expire           =           session_cache_expire     ();     session_start     ();     ?>                  </p>

3.session数据库存储

session_set_save_handler()函数

                  <p class="sycode">                 bool      session_set_save_handler     (     string      open     ,           string      close     ,           string      read     ,           string      write     ,           string      destroy     ,           string      gc)                  </p>


参数 说明
open(save_path,session_name) 找到session存储地址,去除变量
close() 不需要参数,关闭数据库
read(key) 读取session键值,key对应session_id
write(key,data) 其中data对应设置的session变量
destroy(key) 注销session对应session键值
gc(expiry_time) 清除过期session记录

示例:

<?phpfunction _session_open($save_path,$session_name){	global $handle;	$handle = mysql_connect('localhost','root','root') or die('数据库连接失败');		// 连接MYSQL数据库	mysql_select_db('db_database11',$handle) or die('数据库中没有此库名');				// 找到数据库	return(true);}function _session_close(){	global $handle;	mysql_close($handle);	return(true);}function _session_read($key){	global $handle;							// 全局变量$handle 连接数据库	$time = time();							// 设定当前时间	$sql = "select session_data from tb_session where session_key = '$key' and session_time > $time";	$result = mysql_query($sql,$handle);	$row = mysql_fetch_array($result);	if ($row)	{		return($row['session_data']);			// 返回Session名称及内容	}else	{		return(false);	}}function _session_write($key,$data){	global $handle;	$time = 60*60;										// 设置失效时间	$lapse_time = time() + $time;						// 得到Unix时间戳	$sql = "select session_data from tb_session where session_key = '$key' and session_time > $lapse_time";	$result = mysql_query($sql,$handle);	if (mysql_num_rows($result) == 0 )				// 没有结果	{		$sql = "insert into tb_session values('$key','$data',$lapse_time)";		// 插入数据库sql语句		$result = mysql_query($sql,$handle);	}else	{		$sql = "update tb_session set session_key = '$key',session_data = '$data',session_time = $lapse_time where session_key = '$key'";												// 修改数据库sql语句		$result = mysql_query($sql,$handle);	}	return($result);}function _session_destroy($key){	global $handle;	$sql = "delete from tb_session where session_key = '$key'";					// 删除数据库sql语句	$result = mysql_query($sql,$handle);	return($result);}function _session_gc($expiry_time){	global $handle;	$lapse_time = time();									// 将参数$expiry_time赋值为当前时间戳	$sql = "delete from tb_session where expiry_time < $lapse_time";	// 删除数据库sql语句	$result = mysql_query($sql,$handle);	return($result);}session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc');session_start();$_SESSION['user'] = 'mr';$_SESSION['pwd'] = 'mrsoft';?>

======================分===========割============线================

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

463

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

135

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

64

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

26

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

524

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

53

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号