我有一个使用Windows经营的ASP经典编写的登录保护后台网站。登录状态存储在会话变量中。我还有一个PHP页面,只有登录用户才能访问。如何在PHP中检查客户端是否已登录此网站?
P.S。可能有多个用户同时访问该页面。
答案 0 :(得分:7)
假设PHP和ASP应用程序共享相同的域名,这是一个循序渐进的指南。
1 - 创建名为sessionConnector.asp
的asp文件。
2 - 在sessionConnector.asp
中,将Session.Contents
对象序列化为PHP可以反序列化的格式,例如JSON。您可以使用aspjson中的JSON.asp
。
<%@Language=VBScript CodePage=65001%>
<!--#include file="JSON.asp"-->
<%
Set JSONObject = jsObject()
For Each Key In Session.Contents
If Not IsObject(Session.Contents(Key)) Then 'skip the objects cannot be serialized
JSONObject(Key) = Session.Contents(Key)
End If
Next
JSONObject.Flush
%>
3 - 创建一个名为GetASPSessionState()
的PHP函数。
4 - 在GetASPSessionState()
中,通过指定填充了sessionConnector.asp
的{{1}}标头来发出Cookie
的HTTP请求,该标头必须包含ASP会话的标识符,因此ASP可以识别用户,响应因用户而异。
5 - 获取响应(JSON字符串)后,使用json_decode反序列化并查找ASP会话变量。
$_SERVER["HTTP_COOKIE"]