memcache课程---4、php+memcache如何让用户跨域登录

memcache课程---4、php+memcache如何让用户跨域登录

一、总结

一句话总结:

让所有服务器共用一台memcache缓存,即可达到跨域的目的
1、session跨域:修改php配置文件,使session保存到memcache服务器上去,这样登录的话session信息就保存到memcache服务器上面去了;不同服务器修改的php的配置文件都指向同一个memcache服务器,比如tcp://192.168.20.1:11211
2、cookie跨域:因为cookie里面带sessionid,默认不是本人带正确的卡不认,所以可以在跨域的入口链接中带上sessionid
php怎么把session存到memcache服务器上面去(这样可以实现session跨域)
php.ini配置文件修改(支持memcache) 
session.save_handler = memcache 
session.save_path = "tcp://192.168.20.1:11211“


cookie跨域如何实现(cookie默认是相当于本人带正确的卡才得行)
本质是通过memcache保存且共享了session_id信息
1、强制在跨域的入口链接中带上了session_name()这个参数,所以可以$_GET取
2、在memcache中根据session_name()对应的session_id取session数据即可(先存了)
3、将这个session_id存入cookie,便于网站的不同位置需要sessionid的时候使用

1、memcache用户跨域登录解决的是什么问题(举例)?

不同服务器上请求资源:网站既向linux服务器请求资源,又向windows服务器请求资源,默认情况登录的session不共享,所以用户需要登录多次很麻烦

2、php怎么把session存到memcache服务器上面去(这样可以实现session跨域)?

不同服务器修改php.ini配置文件已支持memcache
session.save_handler = memcache
session.save_path = "tcp://192.168.20.1:11211“

3、php默认把session存为什么文件,放在哪?

到php的配置文件中去找session
默认是存为文件:session.save_handler = files
存储地址:session.save_path="D:softwarecodingphpphpstudyPHPTutorial mp mp"

4、cookie跨域如何实现(cookie默认是相当于本人带正确的卡才得行)?

本质是通过memcache保存且共享了session_id信息,来找到session的信息
1、强制在跨域的入口链接中带上了session_name()这个参数,所以可以$_GET取
2、在memcache中根据session_name()对应的session_id取session数据即可(先存了)
3、将这个session_id存入cookie,便于网站的不同位置需要sessionid的时候使用
项目入口文件设置
$mem=new Memcache;
$mem->connect("192.168.20.1","10000"); 
$sessid=$_GET[session_name()];//强制在链接中带上了这个参数,所以可以$_GET取
$_SESSION=$mem->get($sessid.'_data');
setcookie(session_name(),$sessid,0,'/');//比如linux除了进门需要卡号,其它位置也需要,所以存进session


存session_id到memcache服务器
$mem=new Memcache;
$mem->connect("192.168.20.1","10000")
$mem->set(session_id().'_data',$_SESSION);

二、内容在总结中

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/10924642.html