用于检索ASP.Net会话ID的PHP代码

时间:2013-01-10 18:35:31

标签: php asp.net

我正在寻找一个php函数来从asp.net页面获取会话ID。我使用PHPSESSID获取php会话ID,它给出了正确的结果,如下所示:

$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/'; 
session_write_close();
echo $strCookie;
result: PHPSESSID=h7h1si1gqge0opqe7hedk46aa7; path=/

现在我想获得ASP.Net会话ID,而且我不知道php命令是坦率的。我试过ASPSESSIONID,ASPSESSID,SessionID等失败了。每次结果为空时如下所示,而我可以使用firebug查看ASP.Net_SessionId。请有人帮我获取ASP.net会话ID。我尝试在论坛中搜索但没有得到任何结果。

$cookie="ASP.NET_SessionId=". $_COOKIE["ASPSESSIONID"] ;
session_write_close();
echo $cookie;
result: ASP.NET_SessionId=

也试过这段代码,但没有得到任何东西:

if(stripos($data,"ASP.NET_SessionId"))
{
$retData = explode("ASP.NET_SessionId=", $data);
$sessionTempValue = explode(";",$retData[1]);

 //setup the cookie with the recd data here..

echo $sendCookie1 = "ASP.NET_SessionId=".$sessionTempValue[0].'; path=/';
setcookie("ASP.NET_SessionId",$sessionTempValue[0]);
}

修改 感谢 TVK,Icarus和Mike Brant 指导我走向正确的方向。我修改了我的脚本,如下所示,现在ASP.Net SessionId被保存在文件cookiedk.txt中,但它仍然没有出现在$ _COOKIE中。

define('COOKIE_FILE', 'cookiedk.txt');
curl_setopt($ch, CURLOPT_COOKIESESSION, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);

以下是cookiedk.txt内容:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_xyz.com   FALSE   /   FALSE   0   ASP.NET_SessionId   jq0jeb45lldjlo45wreqsl45

在多个用户同时与系统交互的情况下,在文件中保存会话ID可能会有一些帮助。有没有办法让它通过脚本并将其自身设置而不是保存在文件中?

1 个答案:

答案 0 :(得分:1)

如果ASP会话ID实际上可用,那么它应该在$_COOKIE变量中。要查看$_COOKIE的所有内容,您可以使用print_r($_COOKIE);。如果会话ID在那里,您现在可以看到它并选择正确的数组键。

请注意,只有在满足cookie的域名限制时才会发送cookie。