PHPcurl:在登录HTTP 404资源未找到错误后登录网站并获取数据

时间:2017-03-08 09:15:47

标签: php curl webmail php-curl horde

我想通过phpcurl自动登录我的Horde Webmail,然后显示我的所有电子邮件。 到目前为止我的登录工作完美。 我使用凭据和Cookie登录。

问题是什么?

我显示了我的仪表板,但没有任何数据。这是截图的截图:

Horde Webmail Screenshot

我会得到什么错误输出?

在控制台中说:

Failed to load resource: the server responded with a status of 404 (Not Found)

这是我的控制台的屏幕截图:

Screenshot Error Output

到目前为止我使用的是什么代码?

//Data
$webmail_login = "http://webmail.licht-austria.at/login.php";
$webmail_mailbox = "http://webmail.licht-austria.at/imp/dynamic.php?page=mailbox";
$login = "";
$password = '';
$postdata = "login_post=1&horde_user=$login&horde_pass=$password&horde_select_view=auto&new_lang=de_DE";

//Curl Login POST
$ch = curl_init(); 
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $webmail_login );
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec($ch);
//Until here it works i logged in

//Curl Mailbox GET
curl_setopt($ch, CURLOPT_URL, $webmail_mailbox);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$data = curl_exec($ch);
echo $data;

我的代码如何运作?

在第一步中,我使用我的凭据并通过POST登录到我的Webmail。 PostData是正确的,我可以登录。 webmail.at/login.php完成后,我将重定向到我的收件箱(webmail.at/imp/dynamic.php?page=mailbox)。 网络邮件现在使用GET方法获取所有电子邮件和东西,此时我得到404错误。

2 个答案:

答案 0 :(得分:0)

它使用相对路径加载其资源。它需要绝对路径,如http://www.example.com/jquery.min.js。您可以做的是从其网站下载所需的所有资源并将它们放在src文件夹中。该网站使用了例如/script.js,现在它在您的项目中查找它,因为它是相对路径。

答案 1 :(得分:0)

  

无法加载资源:服务器响应状态为404   (未找到)

好吧,这个错误与curl无关,它与将网站资源加载到你的网页有关。

要解决这个问题,你可以通过以下方式解决这个问题:

echo '<base href="http://www.example.com" />' . $data;

但是,不建议这样做。

重新操作响应数据会更好,

例如,如果响应是html,例如使用Dom库解析它,或者只是使用正则表达式,如果是json响应则重建新的简单ui以查看结果。