尝试使用流行的示例来验证我的php网页上的用户。我的网站托管在公共窗口.net服务器上(是的...... PHP也在运行)我运行phpinfo看服务器设置,看起来像$_SERVER['PHP_AUTH_USER']
是允许的,我读过关于Windows PHP服务器有时需要CGI而不是模块。即使在输入用户/密码组合后,我仍然会收到登录提示,永远不会过去吗?
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>
答案 0 :(得分:1)
IIS上没有接收用户名和密码的PHP是一种常见的情况,可以轻松解决:使用Authorization
标题。
这只是从记忆中来看,认为它是一个起点
if (!isset($_SERVER['PHP_AUTH_USER']))
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
$auth=explode(' ',$_SERVER['HTTP_AUTHORIZATION']);
if ((strtoupper($auth[0])=='BASIC') || (sizeof($auth)==2)) {
$auth=@base64_decode($auth[1]);
if ($auth) {
$auth=explode(':',$auth,2);
if (sizeof($auth)==2) {
$_SERVER['AUTH_TYPE']='Basic';
$_SERVER['PHP_AUTH_USER']=$auth[0];
$_SERVER['PHP_AUTH_PW']=$auth[1];
}
}
}
}
//Now proceed as normal
答案 1 :(得分:0)
我建议您尝试更基本的方法,并在登录前
时添加会话变量登录时
$_SESSION['logged']="true";
在您的网页上
if($_SESSION['logged'] == "true" )
{
//load your page
}else{
//redirect him/her to somewhere
并在您的退出
中session_start();
session_destroy();