使用PHP CURL登录到远程网站 [英] Using PHP CURL to login to a remote web site
本文介绍了使用PHP CURL登录到远程网站的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试使用CURL登录到一个远程网站,但似乎无法使用它。
我尝试访问的网页登录到: https://vp1-voiceportal.megapath.com/Login/ p>
到目前为止,我尝试过以下操作:
$ username = 用户名;
$ password =password;
$ url =https://vp1-voiceportal.megapath.com/Login/servlet/com.broadsoft.clients.oam.servlets.Login;
$ cookie =cookie.txt;
$ postdata =EnteredUserID =。$ username。& password =。$ password。& domain =& UserID =& rememberPass =;
$ ch = curl_init();
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ ch,CURLOPT_USERAGENT,Mozilla / 5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6)Gecko / 20070725 Firefox / 2.0.0.6
curl_setopt($ ch,CURLOPT_TIMEOUT,60);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_COOKIEJAR,$ cookie);
curl_setopt($ ch,CURLOPT_REFERER,$ url);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postdata);
curl_setopt($ ch,CURLOPT_POST,1);
$ result = curl_exec($ ch);
echo $ result;
curl_close($ ch);
解决方案
EDIT :网址您指定的是错误的,应该是:
https://vp1-voiceportal.megapath.com/servlet/com.broadsoft .clients.oam.servlets.Login
而不是:
https://vp1-voiceportal.megapath.com/Login/servlet/com.broadsoft.clients.oam.servlets.Login
看起来您需要遵循重定向并指定cookie文件:
$ ch = curl_init();
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ ch,CURLOPT_USERAGENT,Mozilla / 5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6)Gecko / 20070725 Firefox / 2.0.0.6
curl_setopt($ ch,CURLOPT_TIMEOUT,60);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_COOKIEJAR,$ cookie);
curl_setopt($ ch,CURLOPT_COOKIEFILE,$ cookie);
curl_setopt($ ch,CURLOPT_REFERER,$ url);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postdata);
curl_setopt($ ch,CURLOPT_POST,1);
$ result = curl_exec($ ch);
echo $ result;
curl_close($ ch);
这也是一个很好的做法,所以指定一个绝对(和可写)的cookie文件的路径。 p>
I'm trying to login to a remote web site using CURL, but can't seem to get it to work.
The page I'm trying to login to is: https://vp1-voiceportal.megapath.com/Login/
So far, I've tried the following:
$username="username";
$password="password";
$url="https://vp1-voiceportal.megapath.com/Login/servlet/com.broadsoft.clients.oam.servlets.Login";
$cookie="cookie.txt";
$postdata = "EnteredUserID=".$username."&password=".$password."&domain=&UserID=&rememberPass=";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
echo $result;
curl_close($ch);
解决方案
EDIT: The URL you specified is wrong, it should be:
https://vp1-voiceportal.megapath.com/servlet/com.broadsoft.clients.oam.servlets.Login
And not:
https://vp1-voiceportal.megapath.com/Login/servlet/com.broadsoft.clients.oam.servlets.Login
It looks like you need to follow redirects and specify the cookie file (for reading), try:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
echo $result;
curl_close($ch);
It's also a good practice so specify an absolute (and writable) path to the cookie file.
这篇关于使用PHP CURL登录到远程网站的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文