PHP通过session id 实现session共享和登录验证的代码


Posted in PHP onJune 03, 2012

先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:

首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器。用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就要通过一个session的唯一标识来共享这个session了——具体session的共享超出了本文的范围,请自行查阅资料。

第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通过浏览器来请求连接,而是通过socket或者其它方式来请求数据的时候,我们首先要对他进行用户登录验证,验证成功之后,就下发一个sessionid给他,然后他每次请求的时候就携带这个sessionid,我们通过这个sessionid来判断session是否已经存在,如果存在我们就认定用户已经登录……

对于第一个问题,我们可以把sessionid保存在数据库中得以实现,这个方法比较安全而且应用广泛,但是不是我们讨论的范围哦

第二个问题,其实已经很简单了,看一下代码

首先验证的时候产生一个sessionid;

<?php 
Session_start(); 
$sessionId = session_id();//得到sessionid 
//将session下发给客户端 
......... 
?>

客户端携带sessionid这个变量来请求数据
<?php 
Session_id(‘$sessionid');//注意这个时候session_id()这个函数是带有参数的 
Session_start();//这个函数必须在session_id()之后 
?>

这个时候session已经是登录验证时候的session了。
注意:在sessionServer.php中如果使用thinkphp等其他自动启动session_start();函数的框架时,必须先调用session_destory()函数来清空session。
PHP 相关文章推荐
PHP的FTP学习(四)
Oct 09 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
PHP计数器的实现代码
Jun 08 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
百度地图API使用方法详解
Aug 25 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
PHP中设置时区方法小结
Jun 03 #PHP
php 函数中使用static的说明
Jun 01 #PHP
PHP number_format() 函数定义和用法
Jun 01 #PHP
分享一个PHP数据流应用的简单例子
Jun 01 #PHP
检查php文件中是否含有bom的函数
May 31 #PHP
php注销代码(session注销)
May 31 #PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 #PHP
You might like
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
JS实现分页导航效果
2020/02/19 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python交互界面的退出方法
2019/02/16 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
服务中心夜班服务员岗位职责
2013/11/27 职场文书
小学生作文评语集锦
2014/12/25 职场文书
安全责任协议书范本
2016/03/23 职场文书
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers