PHP simple_load_file和file_get_content包含电子邮件和密码

时间:2017-10-03 07:57:55

标签: php xml email passwords

我希望通过以下网址获取受密码保护的xml文件:

account@domain.com:password@domain2.com/file.xml

我发现在网址浏览器版本中工作(只需输入浏览器,xml显示没有重定向或密码提示)的网址:

account%40domain.com:password@domain2.com/file.xml

所以我尝试将这个url与simple_load_file()和file_get_contents()一起使用,但它不起作用(我知道这个函数需要urlencode,因为url中的特殊字符,但account%40domain.com:password%40domain2.com/file.xml不起作用)。

所以我尝试在stackoverlow上找到另一个解决方案:

$username = 'account@domain.com';
$password = 'password';

$context = stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . base64_encode("$username:$password")
    )
));
$data = file_get_contents('domain2.com/file.xml', false, $context);

我得到错误:

...failed to open stream: No such file or directory in...

我也尝试卷曲,也没有成功(返回代码302)。我没有想法解决这个问题。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

file_get_contents会自动跟踪重定向(例如302),但您需要通过提供方案告诉它您正在获取远程文件。变化

$data = file_get_contents('domain2.com/file.xml', false, $context);

$data = file_get_contents('http://domain2.com/file.xml', false, $context);

(或 https:// ,如果适用)

如果您不提供该方案,它将尝试在本地计算机上打开一个文件 - 即目录file.xml下的domain2.com文件