如何使用PHP file_get_contents()访问具有访问控制的外部网站

时间:2016-08-31 20:25:03

标签: php file-get-contents

我正在尝试构建PHP代码来访问外部网站。 该网站具有访问控制权限,因此我尝试使用“file_get_contents()”方法发布“用户ID”和“密码”,如下所示。

<?php

$data = array(  
"name attrib of User ID" => " USER ID ",
"name attrib of Password " => "PASSWORD"
);
$data = http_build_query($data, "", "&");

$header = array(
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: ".strlen($data),
"User-Agent: ‘proper User agent’"
);

$context = array(
"http" => array(
"method"  => "POST",
"header"  => implode("\r\n", $header),
"content" => $data
)
);

$url = "URL where the access authentification is done";
echo file_get_contents($url, false, stream_context_create($context));

?>

我希望看到“登录后”的内容。 但结果是“登录前”的内容。

目标是外部网站这一事实使我很难找出原因,因为我不知道目标服务器中有什么代码。
我认为由于登录尝试失败,可能会发生重定向到登录页面。 环境是使用PHP5安装本地服务器的apache。 如果你知道为什么代码不起作用,请告诉我原因,我非常感谢。

仅供参考,下面的代码使用表单标签实现,javascript肯定有效,我可以自动登录。 请注意,登录后的URL与进行访问身份验证的URL不同。 显然,重定向在授权时发生。

<form action=" URL where the access authentification is done " method="post">
<input value="USER ID" name="LoginForm[username]" type="text" />
<input value="PASSWORD" name="LoginForm[password]" />       
<button id="submitForm">
</button>
</form>
<script>
    document.getElementById("submitForm").click();
</script>

感谢您的阅读。

0 个答案:

没有答案