0

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

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

现在我想获取ASP.Net Session 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 保存在文件中可能会出现问题,因为多个用户将同时与系统进行交互。有没有办法通过脚本获取它并将其设置在那里而不是保存在文件中?

4

1 回答 1

1

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

但请记住,只有在满足 cookie 的域限制时才会发送 cookie。

于 2013-01-10T18:40:29.613 回答