2012-05-01 75 views
5

我试图使用CURL登录到远程网站,但似乎无法使其正常工作。使用PHP CURL登录到远程网站

我试图登录的页面是:https://vp1-voiceportal.megapath.com/Login/

到目前为止,我已经试过如下:

$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); 
+3

结果是什么? – bossylobster

+0

我得到以下响应,我重新路由到登录页面: <!DOCTYPE HTML PUBLIC “ - // IETF // DTD HTML 2.0 // EN”> 302找到

找到

该文件已移动here


Apache服务器在vp1-voiceportal.megapath.com端口443
jeffo

+0

1.你是如何得到你的cookie文件?也许cookies过期了。 2.结果如何?究竟卷起了什么回报? –

回答

2

编辑:您指定的URL是错误的,它应该是:

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文件。

+0

谢谢,我已经做出了您所建议的更改,但仍然遇到同样的问题。 – jeffo

+0

@jeffo:'cookie.txt'文件是否为空?它存在吗? –

+0

@jeffo:另外,在我看来,该网址是错误的...不应该是'https:// vp1-voiceportal.megapath.com/servlet/com.broadsoft.clients.oam.servlets.Login' ? –