如何使PHP真正与https网站一起工作?

时间:2017-01-25 10:07:52

标签: php ssl curl cookies

此问题与this older question类似。

那里的解决方案似乎对我有用,但我得到的结果是没有登录。我在第二个请求中获取页面,但不是用户。 我应该改变什么? 这是代码:

/etc/apache2/mods-enabled/status.conf

当我没有回显<?php $urlini='https://www.example.com/login'; $url='https://www.example.com/page-12345'; $ch = curl_init(); $fp = fopen(dirname(__FILE__).'/errorlog.txt', 'w'); curl_setopt($ch, CURLOPT_POST,true); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_STDERR, $fp); curl_setopt($ch, CURLOPT_URL, $urlini); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/certificate.pem"); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('email' => 'email@example.com' , 'password' => 'password'))); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $store = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); curl_close($ch); echo $response; ?> ,回显$response时,我看到用户名填写在表单中,但密码不是。网站上登录表单的代码是:

$store

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。 事实证明,登录页面确实首先将登录信息发送到某个机器人防范站点。使用developer-&gt; inspector-&gt;网络启用持久性日志为我提供了真正的登录URL。相应地更改$urlini后,代码就可以运行。