Heim > Backend-Entwicklung > PHP-Tutorial > curl模拟post数据问题

curl模拟post数据问题

WBOY
Freigeben: 2016-06-23 14:03:09
Original
1073 Leute haben es durchsucht

模拟登陆一个页面,用html写一个表单post过去能够登陆,但是用curl就登陆不了。这是什么情况


回复讨论(解决方案)

当然是。。。

代码没写好

看你curl的post过去的数据是否正确

我也是,提示的是传输传递错误

//登陆认证 
$url = "http://211.67.32.144/edu/login!checkLogin.action"; 
$post_data = array( "user_account" => "031140107","user_password" => "02185758","user_roleId"=>"2" ); 
$cookie_jar = tempnam('./temp','cookie');//存放COOKIE的文件 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);   
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);  //保存cookie信息 
$output1 = curl_exec($ch); 
curl_close($ch); 
?>

上面是我的代码,有没有人知道是我的错误在哪

你的错误时只执行了一次 curl_exec($ch)
按现在登录页的设计,用户登录的流程是:
1、进入表单页  在这里sessionid已经传过来了,或与还有token
2、填写表单并提交
3、验证用户是否合法  验证通过后重新设置cookie

你只从第二步开始,那么 CURLOPT_COOKIEJAR 得到的只是第三步产生的cookie
由于缺少第一步的cookie,所以验证不会通过

所以你需要
1、进入表单页,通过 CURLOPT_COOKIEJAR 记录下 cookie
2、进入表单处理页,通过 CURLOPT_COOKIEFILE 传递第一步保存的 cookie

但是我用自己写的html界面,只要保证name相同,我还是可以登录成功啊,我也没有执行第一步啊代码如下

nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 


   仿民院登录 
 
  
  
  
 

 
  

  
  
  
  
  
  
学号:
密码:

  

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage