PHP使用Curl登录HTTPS页面

时间:2016-01-14 16:47:23

标签: php ssl curl https

我正在尝试使用php curl函数登录https网页“https://portal.opalonline.co.uk/Home/PortalCore/SignIn/SignIn.aspx

但我已经没有想法如何将值发布到此特定页面(用户名,密码)和'按'登录'。

$postfields = array('ctl00_MasterContentContentPane_Signin1_userID_txt'=>'email@address.com', 
            'ctl00_MasterContentContentPane_Signin1_password_txt'=>'somepassword123');

/* LOG IN TO TalkTalk ACCOUNT */
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://portal.opalonline.co.uk/Home/PortalCore/SignIn/SignIn.aspx?");   
curl_setopt($ch, CURLOPT_HEADER, false);
// curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
// curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); 
// curl_setopt($ch, CURLOPT_COOKIE, COOKIE_FILE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_POST, 1);  
var_dump($ch);
$string_exec = curl_exec($ch);
var_dump($string_exec);

我甚至无法使用var_dump显示页面:(。非常感谢的想法/建议

2 个答案:

答案 0 :(得分:3)

首先,我不认为你可以做'数组'这样的事情,因为这将使PHP / CURL创建multipart formpost,而这不是这样的形式。以“name = value& name2 = value2”样式提供数据。

然后,确保您还提交表单中的所有隐藏字段。至少有四个。其中一个是由HTML设置为您需要提取和设置的长值,并且还有一些javascript魔法设置其他一些。您可能需要使用浏览器的网络工具来窥探您的浏览器发送的内容,以便能够完美地模仿它。

登录页面设置了Cookie,您可能需要在提交登录表单时传递这些Cookie。因此,您需要首先获取(GET)登录表单页面以获取cookie,然后提交登录POST。

有了这个,你应该更接近。如果不是这样,那么继续将浏览器的请求与您的请求发送的请求进行比较,并确保它们尽可能相似。

答案 1 :(得分:0)

在Google Chrome中打开网站,打开控制台,进入网络标签页。

登录网站。您应该在网络选项卡中看到该请求。右键单击它,选择"复制为cURL"。它将为您提供一个命令行,帮助您了解您的需求。