Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session cURL登录会话_Session_Authentication_Cookies_Curl_Login - Fatal编程技术网

Session cURL登录会话

Session cURL登录会话,session,authentication,cookies,curl,login,Session,Authentication,Cookies,Curl,Login,我需要使用一个网站作为登录用户。下面的代码很好地完成了这项工作,但是每次调用脚本时都必须登录。我只想登录一次,从那时起使用会话cookies $c=curl_init(); $url='http://www.site.com/login/'; $opt=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_POST=>1,CURLOPT_RETURNTRANSFER=>1

我需要使用一个网站作为登录用户。下面的代码很好地完成了这项工作,但是每次调用脚本时都必须登录。我只想登录一次,从那时起使用会话cookies

$c=curl_init();
$url='http://www.site.com/login/';              
$opt=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_POST=>1,CURLOPT_RETURNTRANSFER=>1,CURLOPT_POSTFIELDS=>'username=usr123&password=pass&submit='); //submit=1 works too
curl_setopt_array($c,$opt);
curl_exec($c);
$url='http://www.site.com/next';
$opt2=array(CURLOPT_URL=>$url,CURLOPT_RETURNTRANSFER=>1);
curl_setopt_array($c,$opt2);
$out=curl_exec($c);
echo $out;
curl_close($c);
我尝试使用会话,但由于某些原因,用户登录无法工作

$c=curl_init();
$ag='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)';
if(!file_exists('cookie.txt')){
  $url='http://www.site.com/login/';
  $opt=array(CURLOPT_URL=>$url,
  CURLOPT_COOKIEJAR=>'cookie.txt',
  CURLOPT_COOKIEFILE=>'cookie.txt',
  CURLOPT_POST=>0,
  CURLOPT_RETURNTRANSFER=>1,
  CURLOPT_FOLLOWLOCATION=>1,
  CURLOPT_USERPWD=>'usr123:pass,
  CURLOPT_SSL_VERIFYPEER=>false,
  CURLOPT_SSL_VERIFYHOST=>0,
  CURLOPT_USERAGENT=>$ag);
  curl_setopt_array($c,$opt);
  curl_exec($c);
}  

$url='http://www.site.com/next/';
$opt2=array(CURLOPT_URL=>$url,
CURLOPT_COOKIEJAR=>'cookie.txt',
CURLOPT_COOKIEFILE=>'cookie.txt',
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_FOLLOWLOCATION=>1,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_SSL_VERIFYHOST=>2,
CURLOPT_USERAGENT=>$ag);
curl_setopt_array($c,$opt2);
$out=curl_exec($c);
echo $out;
curl_close($c);
解决方案:

if(!file_exists('cookie.txt')){
  $url='http://www.site.com/login/';                         

  $opt=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_POST=>1,
       CURLOPT_RETURNTRANSFER=>1,CURLOPT_POSTFIELDS=>'username=usr123&password=pass&submit=');
  curl_setopt_array($c,$opt);
  curl_exec($c);
}
$url='http://www.site.com/next';
$opt2=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_COOKIEFILE=>'cookie.txt',
      CURLOPT_POST=>0,CURLOPT_RETURNTRANSFER=>1,CURLOPT_USERPWD=>'usr123:pass');
curl_setopt_array($c,$opt2);
$output=curl_exec($c);
echo $output;
解决方案:

if(!file_exists('cookie.txt')){
  $url='http://www.site.com/login/';                         

  $opt=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_POST=>1,
       CURLOPT_RETURNTRANSFER=>1,CURLOPT_POSTFIELDS=>'username=usr123&password=pass&submit=');
  curl_setopt_array($c,$opt);
  curl_exec($c);
}
$url='http://www.site.com/next';
$opt2=array(CURLOPT_URL=>$url,CURLOPT_COOKIEJAR=>'cookie.txt',CURLOPT_COOKIEFILE=>'cookie.txt',
      CURLOPT_POST=>0,CURLOPT_RETURNTRANSFER=>1,CURLOPT_USERPWD=>'usr123:pass');
curl_setopt_array($c,$opt2);
$output=curl_exec($c);
echo $output;

看起来该站点正在使用HTTP身份验证,对吗?从技术上讲,您不需要“登录”,只要在第一个请求中发送
USERPWD
,不管它需要去哪里。如果网站在登录时做了一些特殊的事情,然后设置了一个cookie,那么如果不了解网站的工作原理,就很难提供帮助。谢谢你的建议。我解决了这个问题。将溶液添加到原始溶液中post@bukzor:好的,作为回答添加。该站点似乎正在使用HTTP身份验证,对吗?从技术上讲,您不需要“登录”,只要在第一个请求中发送
USERPWD
,不管它需要去哪里。如果网站在登录时做了一些特殊的事情,然后设置了一个cookie,那么如果不了解网站的工作原理,就很难提供帮助。谢谢你的建议。我解决了这个问题。将溶液添加到原始溶液中post@bukzor:好的,作为回答添加