2011-11-30 49 views
0

我需要通过cURL在PHP登录到某个页面。 我有这样的脚本:会话和通过cURL登录到网站

$cookie_file = 'cookies.txt'; 
$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, 'http://www.xxx.pl/index.php?act=ws&sub=login'); 
curl_setopt($c, CURLOPT_POST, 1); 
curl_setopt($c, CURLOPT_POSTFIELDS, 'login=aaa&pass=bbb'); 
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($c, CURLOPT_REFERER, 'http://www.xxx.pl/index.php'); 
//curl_setopt($c, CURLOPT_HEADER, 1); 
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 0); 
//curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/'.$cookie_file); 
curl_setopt($c, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/'.$cookie_file); 
curl_exec($c); 
curl_close($c); 

当我运行该脚本登录我(我在DATABSE看到新的日期将在登录),但是当我打开一个网站http://www.xxx.pl/我没有loged。 我认为问题是关于会议。但我不知道如何解决它。

+4

你是什么意思,“当我打开网站”?在浏览器中?未来卷曲电话? –

+0

是的,在浏览器中。首先我运行脚本。接下来,我打开一个网站,我需要被囚禁。 – Karol85

回答

2

用cURL启动会话并捕获cookie数据并不意味着会话将在您的应用和浏览器之间共享。

如果您从同一个域脚本,你需要:

  • 由卷曲捕获
  • 使用PHP的setcookie()函数功能解析Cookie数据,以相同的cookie数据返回给浏览器。

执行完这些步骤后,浏览器会将cookie发送回启动会话的服务器。

0

您可以使用Zend_Http类和Zend_http_CookieJar(Zend框架的部分) 在这里看到: http://framework.zend.com/manual/fr/zend.http.cookies.html

在大多数情况下,没有必要直接实例Zend_Http_CookieJar对象。如果您想将一个新的cookie jar附加到您的Zend_Http_Client对象,只需调用Zend_Http_Client-> setCookieJar()方法,并将一个新的空cookie jar附加到您的客户端。你以后可以使用Zend_Http_Client-> getCookieJar()来获取这个cookie jar。