PHP通过session id 实现session共享和登录验证的代码
2015-06-19 16:12
911 查看
先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:
首先,多服务器共享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。
首先,多服务器共享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。
相关文章推荐
- Yii2 学习日志------多语言
- php实现随机生成易于记忆的密码
- php数组中删除元素,再重新索引
- 【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地
- php根据一个给定范围和步进生成数组的方法
- php分割合并两个字符串的函数实例
- Thinkphp多表联查mysql写法
- PHP正则匹配汉字字符/中文字符
- php计算整个mysql数据库大小的方法
- php方法中引用全局变量要加 global
- php里面include语句,不能放在循环里面,否则会出错,还不显示错误原因
- PHP的memory_limit限制
- Fatal error: Maximum execution time of 60 seconds exceeded in *.php on line...
- PHP中session的工作原理
- 关于后盾网yii框架的学习小结(10)--使用AR类的增删改查
- php工作原理
- 传智播客PHP学科进驻上海,给华东IT圈报喜
- 关于后盾网yii框架的学习小结(10)--使用AR类的增删改查
- php性能优化之php语言级性能优化
- php与ffmpeg和mencoder处理视频