2010-09-09 42 views
0

我已经看到了这个要求在几个方面,但无法找到问题的解答。我怎样才能登录使用PHP卷曲远程站点,然后重定向到该网站

我已经创建了一个登录到使用PHP /卷曲远程基于.NET的网站页面。伟大的作品尽可能去 - 我可以将数据从背面登录通过curl_exec网页,做任何与它,但我真的需要做的是将用户重定向到该页面。只需重定向,我就可以在远程站点上注销一个页面。我知道答案是获取cURL登录时返回的cookie,然后在第二次调用中传递它。 。 。不知何故。我肯定有人必须这样做,并可以提供一个工作的例子。请帮忙 - 这让我疯狂!

感谢,

马克

回答

2

难怪你不能找到问题的解答。
这是不可能的。

+0

是的,你说得对。 – mpemburn 2011-07-20 01:02:06

+0

花了我一小时才得到同样的见解。我感觉* curlt *现在... – 2014-10-07 13:52:47

-1

如果你可以用卷曲的网站使用cookies。

$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"); 
} 

这应该工作,但我不测试它。

+0

那是什么?好莱坞大片场景? – 2010-09-09 12:59:54

+0

相当滑稽,旧的东西。 – mpemburn 2010-09-09 20:00:07

1

的问题是,登录会从你的PHP服务器,而不是从最终用户的IP地址,所以当你把用户重定向,该网站可能不会看到他们作为登录。

你可以设置一些东西,比如将提供给PHP服务器登录的cookie传递给最终用户,但是如果重定向的网站甚至写得很好,那么它就不会出现这种情况。

如果你有这两个网站的完全控制权,他们可以访问每个-其他的数据库,你可以让PHP服务器告诉.NET网站期待传入的用户写一些后端代码;这可能会奏效。但是你需要在两个系统中做一些后端工作。

如果你没有到.NET网站后端接入,那么唯一的办法,我可以看到这样做是使用PHP的网站作为净网站全代理 - 即相当比做重定向,只需通过你的PHP直接显示.net网站的输出。尽管如此,这将会产生各种与其相关的其他问题。

+0

如果curl拒绝Cookie,从而强制网站在URL中传递会话ID?当然,这里假定网站不需要启用cookies,并且它不会检查改变后的ip是否应该。 – Fanis 2010-09-09 12:52:39

+0

我讨厌听到我想做的事情是不可能的。 CURL将在我的服务器上保存有效的cookie信息 - 它与直接登录时远程站点发送的cookie匹配。因此,我无法将其解析为适当的格式,设置并发送一个标题(“Cookies:”。$ cookies); ??永不说永不。 – mpemburn 2010-09-09 16:16:24

+0

无法在不同域中读/写Cookie是抵御跨站脚本攻击的根本保护。 – Matthew 2010-09-10 08:01:15