我已经看到了几个方法,但找不到有效的答案。

我创建了一个使用PHP/Curl登录基于.NET的站点的页面。就其目的而言,效果很好 - 我可以通过curl_exec从登录页面中获取数据,然后对此做任何事情 真的 需要做的是将用户重定向到该页面。简单地重定向会给我远程站点上的登录页面。我知道答案是在卷发登录时返回的cookie,然后在第二个通话中传递。 。 。不知何故。我肯定有人 必须 这样做,可以提供一个工作示例。请帮助 - 这让我发疯!

谢谢,

标记

有帮助吗?

解决方案

难怪您找不到有效的答案。
这不可能。

其他提示

问题是登录名来自您的PHP服务器,而不是来自最终用户的IP地址,因此当您重定向用户时,该站点可能不会将其视为登录。

您可以设置一些事情,例如将提供给PHP服务器的cookie传递给最终用户的cookie,但是如果重定向的站点甚至略微写得很好,则不会为此而陷入困境。

如果您对两个站点都有完全控制,并且他们可以访问彼此的数据库,则可以编写一些后端代码,因此PHP服务器告诉.NET站点期望传入的用户;那可能起作用。但是您需要在两个系统中进行一些后端工作。

如果您没有对.NET站点的后端访问权限,那么我看到的唯一方法是将PHP站点用作.NET网站的完整代理 - 即而不是进行重定向,只需直接通过您的PHP显示.NET站点的输出即可。不过,这将存在与之相关的其他各种问题。

如果网站使用cookie,则可以使用卷发。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$passwd");
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);

$header = curl_exec($ch);

if (preg_match("/set-cookie:(.*)\n", $header, $m)) {
  $cookies = preg_replace('/(expires|path|domain)=[^;]*;?/i', '', $m[1]);
  header("Cookies: " . $cookies);
  header("Location: $url");
}

这应该起作用,但我不测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top