1

我正在使用以下命令来读取 PHP 网页中的远程 XML 文件:

    $url = 'http://www.examplesite.com/xml';
    $xml = simplexml_load_file($url);

不幸的是,该站点使用摘要式身份验证,并且通常会弹出用户名/密码框并要求我登录该站点。将我的用户名和密码嵌入 URL 本身(如http://USER:PASSWORD@examplesite.com/)是行不通的,这也不是很安全。

如何进行身份验证(在 PHP 中)以获取 XML 文件?

4

1 回答 1

0
function get($url, $user, $pass) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
    curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $res = curl_exec();
    curl_close($ch);
    return $res;
}

你可以用 cURL 做到这一点。请注意,前 3 个 curl 标志 - 禁止重用、新连接、跟随位置可能不需要,但在某些情况下可能需要(302 后身份验证等)。

于 2013-10-10T18:33:55.733 回答