2011-11-01 123 views
0

这就是我想要实现: 我不能用真实URL的,所以我会用网站A.com和B.comPHP卷曲登录的Cookie

  1. 从第一页A.com我展示一个登录表单,然后我使用CURL将值提交给域B,登录并获取cookie名称
  2. 然后,我使用正确的信息和cookie名称设置标题
  3. 将页面重定向到B.com/welcome.php使用PHP定位功能

我的问题是,我总是得到错误:您的会话已过期。请再次登录。 如果我使用CURL登录并获取cookie,然后使用CURL来显示它的工作页面。

卷曲部分工作正常,下面的代码会导致会话过期错误”

header ('Host: B.com\n'); 
header ('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1\n'); 
header ('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n'); 
header ('Accept-Language: en-gb,en;q=0.5\n'); 
header ('Accept-Encoding: gzip, deflate\n'); 
header ('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n'); 
header ('Referer: http://B.com/\n'); 
header ('Content-type: application/x-www-form-urlencoded\n'); 
header ('location: B.com/welcome.php'); 

我使用这些头的原因是因为这正是从火狐发送,当我手动登录到页面。

感谢您的帮助

+2

您不能从A.com为* site B.com设置cookie *。 Cookie只能针对该域中的任何给定域设置。这没有解决办法。几乎所有浏览器默认都会阻止[第三方Cookie](http://en.wikipedia.org/wiki/HTTP_cookie#Third-party_cookie),这需要客户端明确允许。 – DaveRandom

+0

我不禁怀疑这将用于恶意目的。 – 2011-11-01 11:04:29

+0

我不想设置第三方cookie,我通过curl创建cookie,获取cookie值,然后通过位置传递值,因此从理论上讲,PHP服务器应该读取cookie值并说我有一个会话该ID请继续... – Alfonso

回答

0

显然,你的浏览器不具有相同的cookie存储是卷曲的用途,所以当从浏览器的cookie信息的页面检查也不会发现它是什么期待。如果你想此登录在浏览器中工作之前,您需要先在浏览器中设置Cookie,然后才能转到欢迎页面。