PHP-LDAP;密码提示不';如果输入的密码不正确或未提供域名,则不会显示
我正在尝试实现PHP-LDAP身份验证来验证和验证用户。我正在使用以下代码。但是,如果输入的密码不正确或域名未提供用户名(以username@domain或域\用户名)。它总是显示“授权失败”。如果用户提供正确的username@domain以及他们可以登录的密码。代码:PHP-LDAP;密码提示不';如果输入的密码不正确或未提供域名,则不会显示,php,Php,我正在尝试实现PHP-LDAP身份验证来验证和验证用户。我正在使用以下代码。但是,如果输入的密码不正确或域名未提供用户名(以username@domain或域\用户名)。它总是显示“授权失败”。如果用户提供正确的username@domain以及他们可以登录的密码。代码: session_start(); if (strlen(@$_SERVER['PHP_AUTH_USER']) == 0 || strlen(@$_SERVER['PHP_AUTH_PW']) == 0) { hea
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>";
}
}
session_start();
如果(strlen(@$_SERVER['PHP_AUTH_USER'])==0 | | strlen(@$_SERVER['PHP_AUTH_PW'])==0){
标题('WWW-Authenticate:Basic realm=“test”);
标题(“HTTP/1.0 401未经授权”);
echo“需要授权”;
出口
}否则{
$ldaprdn=$\u服务器['PHP\u AUTH\u用户'];
$ldappass=$\u服务器['PHP\u AUTH\u PW'];
$ldap_server='ldap_server_add';
$ldapconn=ldap\u connect(“ldap\u server\u add”)或die(“无法连接到“$ldap\u server.”服务器”);
$ldapbind=@ldap\u bind($ldapconn,$ldaprdn,$ldappass);
如果($ldapbind){
if(strrchr($服务器['PHP\u AUTH\u用户],'@')strrchr($服务器['PHP\u AUTH\u用户],'\')){
if(strrchr($_SERVER['PHP\u AUTH\u USER'],'@')){
$t=explode('@',$服务器['PHP\u AUTH\u用户']);
$_会话['userid']=$t[0];
}否则{
$t=explode(“\\”,$\u服务器['PHP\u AUTH\u用户]);
$\会话['userid']=$t[1];
}
}
}否则{
回显“授权失败”;
}
}
我想不出这个问题。请帮帮我。获得了解决方案,只是一个简单的技巧,并将上述代码更改为以下代码:
session_start();
function authenticate() {
header('WWW-Authenticate: Basic realm="test"');
header('HTTP/1.0 401 Unauthorized');
echo '<h1>Authorization required</h1>';
exit;
}
if (strlen(@$_SERVER['PHP_AUTH_USER']) == 0 || strlen(@$_SERVER['PHP_AUTH_PW']) == 0) {
authenticate();
} 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 {
authenticate();
}
}
session_start();
函数身份验证(){
标题('WWW-Authenticate:Basic realm=“test”);
标题(“HTTP/1.0 401未经授权”);
echo“需要授权”;
出口
}
如果(strlen(@$_SERVER['PHP_AUTH_USER'])==0 | | strlen(@$_SERVER['PHP_AUTH_PW'])==0){
验证();
}否则{
$ldaprdn=$\u服务器['PHP\u AUTH\u用户'];
$ldappass=$\u服务器['PHP\u AUTH\u PW'];
$ldap_server='ldap_server_add';
$ldapconn=ldap\u connect(“ldap\u server\u add”)或die(“无法连接到“$ldap\u server.”服务器”);
$ldapbind=@ldap\u bind($ldapconn,$ldaprdn,$ldappass);
如果($ldapbind){
if(strrchr($服务器['PHP\u AUTH\u用户],'@')strrchr($服务器['PHP\u AUTH\u用户],'\')){
if(strrchr($_SERVER['PHP\u AUTH\u USER'],'@')){
$t=explode('@',$服务器['PHP\u AUTH\u用户']);
$_会话['userid']=$t[0];
}否则{
$t=explode(“\\”,$\u服务器['PHP\u AUTH\u用户]);
$\会话['userid']=$t[1];
}
}
}否则{
验证();
}
}