0
我試圖實現PHP-LDAP身份驗證來驗證和驗證用戶。我使用下面的代碼。但是,如果密碼輸入不正確或域名未提供用戶名(以username @ domain或domain \ username的形式),密碼提示不會顯示。它總是顯示「授權失敗」。如果用戶提供正確的用戶名@域名和密碼,他們可以登錄。代碼:PHP LDAP;如果密碼輸入不正確或未提供域名,密碼提示不會出現
session_start();
if (strlen(@$_SERVER['PHP_AUTH_USER']) == 0 || strlen(@$_SERVER['PHP_AUTH_PW']) == 0) {
header('WWW-Authenticate: Basic realm="test"');
header('HTTP/1.0 401 Unauthorized');
echo '<h1>Authorization required</h1>';
exit;
} else {
$ldaprdn = $_SERVER['PHP_AUTH_USER'];
$ldappass = $_SERVER['PHP_AUTH_PW'];
$ldap_server = 'ldap_server_add';
$ldapconn = ldap_connect("ldap_server_add") or die("Could not connect to ".$ldap_server." server.");
$ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
if (strrchr($_SERVER['PHP_AUTH_USER'], '@') || strrchr($_SERVER['PHP_AUTH_USER'], '\\')) {
if (strrchr($_SERVER['PHP_AUTH_USER'], '@')) {
$t = explode('@', $_SERVER['PHP_AUTH_USER']);
$_SESSION['userid'] = $t[0];
} else {
$t = explode('\\', $_SERVER['PHP_AUTH_USER']);
$_SESSION['userid'] = $t[1];
}
}
} else {
echo "<h1>Authorization failed</h1>";
}
}
我找不出這個問題。請幫幫我。