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执行速度全攻略(下)
Oct 09 PHP
PHP关联链接常用代码
Nov 05 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
js 内存释放问题
2010/04/25 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
python实现进程间通信简单实例
2014/07/23 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
班主任工作经验交流材料
2014/05/13 职场文书
高三复习计划
2015/01/19 职场文书
商务邀请函
2015/01/30 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL