file_get_contents具有基于网络连接的HTTP基本授权

时间:2017-10-27 11:09:44

标签: php file-get-contents basic-authentication http-authentication

我正在使用带有HTTP基本授权的file_get_contents()来获取$url的内容:

$url = "http://example.com";
$cred = sprintf('Authorization: Basic %s', base64_encode('username:password'));
$opts = array(
    'http' => array(
        'method' => 'GET',
        'header' => $cred
    )
);
$ctx = stream_context_create($opts);
$data = file_get_contents($url, false, $ctx);

当我的代码中有正确的用户名和密码时,无论我连接到哪个网络连接,我都可以完全正确地从网址获取内容。

但是,我想根据网络连接来制作它。例如,如果我连接到我的局域网,它可以从网址获取内容而不需要用户名和密码,但如果我连接到任何其他网络连接,则应要求用户输入用户名和密码。

如果我没有弄错,我需要使用HTTP authentication with PHP,但我不知道如何将其集成到我的代码中并根据网络连接执行,但并非总是如此。

如果有人能在这件事上帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

主要问题是检测您所连接的网络。您必须运行ipconfigifconfig,甚至是route命令来检查/解析您所连接的网络。如果您已经解决了这个问题,可以使用简单的if ()语句来包含用户名/密码。