我正在尝试构建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>
感谢您的阅读。