0

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

有什么问题?

我的仪表板显示但没有任何数据。这是一个屏幕截图:

部落网络邮件截图

我会得到什么错误输出?

在控制台中它说:

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

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

截图错误输出

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

//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 错误。

4

2 回答 2

0

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

于 2017-03-08T09:19:42.580 回答
0

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

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

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

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

但是,不建议这样做。

重新处理响应数据会更好,

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

于 2017-03-08T09:24:19.083 回答