Php 会话并通过cURL登录到站点

Php 会话并通过cURL登录到站点,php,curl,Php,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

我需要在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);
当我运行它的脚本登录我(我看到新的日期在数据库中插入登录),但当我打开一个网站,我没有登录。
我认为问题在于会议。但我不知道如何解决它。

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

如果从同一域运行脚本,则需要:

  • 解析cURL捕获的cookie数据
  • 使用PHP的setcookie()函数将相同的cookie数据返回到浏览器

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

您可以使用Zend_Http类和Zend_Http_CookieJar(Zend框架的一部分) 请看这里:

在大多数情况下,不需要直接实例化Zend_Http_CookieJar对象。如果要将新的cookie jar附加到Zend_Http_客户端对象,只需调用Zend_Http_客户端->setCookieJar()方法,一个新的空cookie jar就会附加到客户端。您可以稍后使用Zend\u Http\u Client->getCookieJar()获得这个cookie jar


“当我打开网站”是什么意思?在浏览器中?未来的curl调用?是的,在浏览器中。首先,我运行脚本。接下来,我打开一个需要登录的站点。