我正在尝试使用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显示页面:(。非常感谢的想法/建议
答案 0 :(得分:3)
首先,我不认为你可以做'数组'这样的事情,因为这将使PHP / CURL创建multipart formpost,而这不是这样的形式。以“name = value& name2 = value2”样式提供数据。
然后,确保您还提交表单中的所有隐藏字段。至少有四个。其中一个是由HTML设置为您需要提取和设置的长值,并且还有一些javascript魔法设置其他一些。您可能需要使用浏览器的网络工具来窥探您的浏览器发送的内容,以便能够完美地模仿它。
登录页面设置了Cookie,您可能需要在提交登录表单时传递这些Cookie。因此,您需要首先获取(GET)登录表单页面以获取cookie,然后提交登录POST。
有了这个,你应该更接近。如果不是这样,那么继续将浏览器的请求与您的请求发送的请求进行比较,并确保它们尽可能相似。
答案 1 :(得分:0)
在Google Chrome中打开网站,打开控制台,进入网络标签页。
登录网站。您应该在网络选项卡中看到该请求。右键单击它,选择"复制为cURL"。它将为您提供一个命令行,帮助您了解您的需求。