我创建了一个简单的经典ASP脚本,它将从帖子中获取用户名和密码并创建会话变量。如果我使用标准的html表单并重定向到此页面,此脚本可以正常工作。我有一个php网站,我想在用户登录php网站时将用户登录到两个网站。为此,我想在php中为登录脚本添加一个curl请求。这会将密码和用户名发送到脚本并创建会话变量。我从curl请求得到的响应表明它有效,但它似乎没有保存会话。
这是卷曲请求。
$postinfo = "username=".$username."&password=".$password;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
我不想粘贴完整的asp脚本,但这大致是它的工作原理。当我使用html表单登录时,会话仍然存在,所以我知道它正常工作。当curl请求完成执行时,似乎填充了会话变量,但是当我访问另一个页面时,会话不存在。
'do some stuff with the db to check if the credentials work.
if success = true then
Session("userid") = userid
Session("login") = "good"
Response.Write("Login successful - " & Session("userid"))
else
Response.Write("Login Failed")
end if
当我运行curl请求时,响应为“Login successful - 123”。这意味着不仅登录工作正常,而且还设置会话值。问题是,当我尝试访问asp站点时,它不会检测到任何会话数据。
我已确认所有链接都指向https://www.website.com。两个网站都在相同的域名下,只有2个不同的子目录/语言。它们都在同一台服务器上运行。