打电话给另一个网站?

时间:2010-01-25 18:32:16

标签: php apache

好的 - 简单地说,我正在构建一个需要合并现有页面的站点,并使用简单的.htaccess / .htpasswd脚本进行保护。

如何使用PHP将用户名/密码传递给接收站点?

先谢谢你的帮助!!!

更新 - 我想我可能过于复杂了这个问题。我需要做的主要是:

<a href="http://username:password@url.com/" target="_blank">The link<a>

实际上,除了IE之外,其他所有内容都能完美运行。如果我能找到更通用,更简单的解决方案,那我就是金。

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我同意alxp你应该了解cURL。基本要点是,在使用HTTP Basic Auth时,凭证将作为base64编码的字符串发送到标头中。这是一个使用PHP的cURL扩展的简单示例:

$url = '...';
$username = '...';
$password = '...';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Authorization: Basic " . base64_encode($username . ":" . $password)
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$result = curl_exec($ch);
print $result; 

希望有所帮助!阅读HTTP Basic herePHP's cURL extension here

请注意,这是示例代码,不包含错误检查等。

答案 1 :(得分:1)

如果您使用file_get_contents功能下载页面,可以使用以下内容:

$data = file_get_contents('http://username:password@example.com/path/');

答案 2 :(得分:1)

如果你了解卷曲库,你将是最好的,可以找到一个很好的介绍here,包括如何提交一个姓名和密码。

答案 3 :(得分:0)

您可以通过简单的http重定向以纯文本格式传递用户名和密码,格式为

http://username:password@yoursite.com/yourpage

但是,您可能不应该 - 现在有些浏览器在看到这种语法时会明确地打扰您进行确认。

但是,您可以通过使用file_get_contents()加载上述URL并将结果转储到浏览器来将其隐藏起来。如果页面的HTML输出使用其服务器上的外部文件(images / js / css)的相对链接,则无效。