2015-04-06 83 views
-1

下面的代码我有3个功能,当我运行我的example2网站它进入我的网站就像提供用户名和密码后。example2工作正常。但是在example1网站上,当我执行这个程序时,它进入了我以前的页面,它应该不会影响用户名和密码。在这两种情况下,我通过运行httpfox软件获取用户名&密码加上其他数据作为$ data变量。我认为,在例2本软件显示像“用户名的所有信息= YYYYY &密码= YYYYYYYYY &记得= YES &提交=登录&行动= do_login & URL = HTTP%3A%2F%2Fwww.hackforums.net%2Findex.php & my_post_key = 876890b33b8b9260ba3acfc1998b1594'但在example1中,它只显示'username = XXXXX & password = XXXXXXXXXXXXXXXXXXXXX' 任何人都可以知道答案吗?这将是很大的帮助!如何读取网站的数据并发布到另一个网站的数据库,如mysql

另一个问题是它不适用于任何'https'网站。你知道怎么做吗。非常感谢!

<html> 
 
<body> 
 
    
 
<?php 
 
     
 
     
 
\t login("http://www.example1.com:9080/mrportal/loginaction", "username=XXXXX&password=XXXXXXXXXXXXXXXXXXXXX") ; 
 
echo grabpage("http://www.example1.com:9080/mrportal/"); 
 

 
login("http://www.example2.net/member.php", "username=YYYYY&password=YYYYYYYYY&remember=yes&submit=Login&action=do_login&url=http%3A%2F%2Fwww.hackforums.net%2Findex.php&my_post_key=876890b33b8b9260ba3acfc1998b1594") ; 
 
echo grabpage("http://www.example2.net) 
 

 
\t function login($url, $data) 
 
\t { 
 
\t $fp = fopen("cookie.txt","w"); 
 
\t fclose($fp); 
 
\t $login = curl_init(); 
 
\t curl_setopt($login, CURLOPT_COOKIEJAR,"cookie.txt"); 
 
\t curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt"); 
 
\t curl_setopt($login,CURLOPT_TIMEOUT,40000); 
 
\t curl_setopt($login,CURLOPT_RETURNTRANSFER,true); 
 
\t curl_setopt($login,CURLOPT_URL, $url); 
 
\t curl_setopt($login,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
 
\t curl_setopt($login,CURLOPT_FOLLOWLOCATION, TRUE); 
 
\t curl_setopt($login,CURLOPT_POST, TRUE); 
 
\t curl_setopt($login,CURLOPT_POSTFIELDS, $data); 
 
\t ob_start(); 
 
\t return curl_exec($login); 
 
\t ob_end_clean(); 
 
\t curl_close($login); 
 
\t unset($login); 
 
\t } 
 
\t 
 
\t function grabpage($site) 
 
\t { 
 
\t $ch = curl_init(); 
 
\t curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
 
\t curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
 
\t curl_setopt($ch,CURLOPT_TIMEOUT,400); 
 
\t curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
 
\t curl_setopt($ch,CURLOPT_URL, $site); 
 
\t ob_start(); 
 
\t return curl_exec($ch); 
 
\t ob_end_clean(); 
 
\t curl_close($ch); 
 
\t } 
 
    
 
    
 
    function post_data($site, $data) 
 
\t { 
 
\t 
 
\t $datapost = curl_init(); 
 
\t $headers = array("Expect:"); 
 
\t curl_setopt($datapost,CURLOPT_URL, $site); 
 
\t curl_setopt($datapost,CURLOPT_TIMEOUT,40000); \t 
 
\t curl_setopt($datapost, CURLOPT_HEADER, TRUE); 
 
\t curl_setopt($datapost, CURLOPT_HTTPHEADER, $headers); 
 
\t curl_setopt($datapost,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
 
\t curl_setopt($datapost,CURLOPT_POST, TRUE); 
 
\t curl_setopt($datapost,CURLOPT_POSTFIELDS, $data); 
 
\t curl_setopt($datapost, CURLOPT_COOKIEFILE, "cookie.txt"); 
 
\t ob_start(); 
 
\t return curl_exec($datapost); 
 
\t ob_end_clean(); 
 
\t curl_close($datapost); 
 
\t unset($datapost); 
 
\t } 
 
?> 
 

 
</body> 
 
</html>

回答

0

尝试使用:

curl_setopt($login, CURLOPT_SSL_VERIFYPEER, false); 

在代码中跳过的https地址SSL验证。

+0

感谢您的帮助,但不幸的是它没有奏效。放完线后,我尝试了很多方法,但没有改变。当我尝试回声抓取页(“http://www.example1.com:9080/mrportal/”) – 2015-04-06 13:25:33

+0

感谢您的帮助,但不幸的是它没有工作。放完线后,我尝试了很多方法,但没有改变。当我尝试像回声抓取页面(“http://www.example1.com:9080/mrportal/”),则会出现上一页。如果我尝试回声抓取页面(“http://www.example1.com:9080/mrportal”),则出现空白页面,如果尝试回声抓取页面(“http://www.example1.com:9080/mrportal/loginaction”)然后说错误'404服务器错误请求的网址未找到' – 2015-04-06 13:33:01