在PHP中跨服务器传输会话

Dam*_*ran 8 php session sessionid

我需要跨服务器传输用户会话.即.如果用户登录server1并且用户存在于server2中,那么我必须将用户会话详细信息传输到server2.为此,我使用了以下技术

从服务器1,用户重定向到HTTP://server2/auth_from_server1.php的sessionid = 12345? server2上(在内部,在auth_from_server1.php的PHP代码),执行的请求的HTTP://server1/secret/check_session_id.php与session1,12345.在server1上,在check_session_id.php的实现中,验证ID并返回OK,FAILURE和要传递的会话相关数据,例如用户名,...在server2上,当调用返回OK时,存储传输的会话数据,并为用户提供此服务器的cookie和会话.

但是当回调函数调用auth_from_server1.php时,session id中的值为null.我试着将sessionid检查为

if(isset($_SESSION['sessionId']))
echo 'true';
else
echo 'false';
Run Code Online (Sandbox Code Playgroud)

但$ _SESSION ['sessionId']为空.在登录页面中,我将会话ID的值设置为

$_SESSION['sessionId'] = session_id();
Run Code Online (Sandbox Code Playgroud)

提前致谢....

Pau*_*ams 17

将会话数据存储在共享目录中会不会更容易?

或者,您可以将其存储在数据库中.


Joh*_*ich 7

我建议编写一个自定义PHP会话处理程序或使用像ShareDance这样的预构建会话处理程序.您可以将会话信息存储在两台计算机之间共享的MySQL数据库中,SQLite文件等.

使用PHP的内置功能通过使用session_set_save_handler()来获取/设置会话数据有很多好处,即从$ _SESSION获取或设置的所有调用都将在您的应用程序代码中起作用而无需任何其他修改.

更多信息可以在这里找到:http: //php.net/manual/en/function.session-set-save-handler.php

编写自定义会话处理程序(旧的但仍然相关)的教程在这里:http: //devzone.zend.com/article/141