У меня есть функция входа в систему, которая работает в Chrome & IE, но не первый раз, когда пользователь входит в систему, используя Firefox.Вы можете войти в Firefox, но вам придется делать это несколько раз.Я вижу, что мое предупреждение «Ошибка входа в систему» мигает на экране, которое происходит из функции .fail.Я использую кэшированные имя пользователя и пароль, чтобы они были правильными.
Я не получаю ошибку ldap.log
все в console.log
XHR POST
https://bajor.xx.xxx.edu/bricks_demo/login_ldap.php
Unknown property ‘-moz-box-shadow’. Declaration dropped. bricks.css:103:21
Error in parsing value for ‘-moz-font-feature-settings’. Declaration dropped. ss-social.css:36:31
ПРИМЕЧАНИЕ. Я не могу отобразить свое сообщение об ошибке в поле login_error.Он мигает, а затем сбрасывается. На Chrome и Firefox.
index.php
<?php
// Start the session
ini_set('session.gc_maxlifetime',600);
if (!isset($_SESSION)) session_start();
if (isset($_SERVER['PHP_AUTH_USER'])) { $_SESSION['USER_LOGGED_IN'] =
$_SERVER['PHP_AUTH_USER'];}
$_SESSION['IP_AUTH']=0;
if (isset($_SESSION['USER_LOGGED_IN'])) { echo
$_SESSION['USER_LOGGED_IN'] . '<br>'; }
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bricks</title>
<link rel="shortcut icon" href="favicon.ico" type="image/vnd.microsoft.icon" />
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<link rel='stylesheet prefetch' href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css'>
<link href='https://fonts.googleapis.com/css?family=Open Sans' rel='stylesheet'>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<div class="login_popup">
<div id="login_box" class="modal modal_login">
<form class="modal-content animate" method="post">
<div class="container">
Username <input id="user_login_name" type="text" name="userLogin" /><br />
Password <input id="user_password" type="password" name="userPassword" />
<input id="submit_login" type="submit" name="submit" value="Login" />
</div>
<div class="container" style="background-color:#f1f1f1">
<button id="login_cancel" type="button" onclick="document.getElementById('login_box').style.display='none'" class="cancelbtn">Cancel</button>
<span class="psw">Forgot <a href="https://xxx.xxx.xxx.xxx/ssp">password?</a></span>
</div>
</form>
</div>
</div>
login_error
<div style="background-color: red; width: 150px;" id="login_error">Error display here</div>
jQuery
$('#submit_login').click(function(e){
$userLogin = $('#user_login_name').val();
$userPassword = $('#user_password').val();
//alert("in submit login" + $userLogin );
$.post("login_ldap.php", {userLogin: $userLogin, userPassword: $userPassword})
.done(function(data, status){
//alert("success");
console.log("Data: " + data + '\nStatus: ' + status);
})
.fail(function(xhr, textStatus, errorThrown) {
alert("Login error");
$("#login_error").text("Login Failed").delay(90000).fadeIn();
console.log("The following error occured: "+ xhr.responseText + " textStatus= " + textStatus + " xhr.error= " + xhr.error + " errorThrown= " +errorThrown);
console.log(e);
//$('#login_error').empty().append(xhr.responseText);
})
.always(function() {
//alert("finished");
});
});
login_ldap.php
<?php
include_once 'bricks_usersDB.php';
try {
$userLogin = "";
if (isset($_POST['userLogin'])) {
$userLogin = $_POST['userLogin'];
// echo $userLogin;
}
else {
// echo "Enter Username";
return -1;
}
$userPassword = "";
if (isset($_POST['userPassword'])) {
$userPassword = $_POST['userPassword'];
// echo $userPassword;
}
else {
echo "Enter Password";
return -1;
}
echo bricks_usersDB::login_ldap($userLogin, $userPassword);
}
catch ( Exception $e ) {
echo "\nLOGIN ERROR: " . $e->getMessage();
error_log($e->getMessage());
# added header to send error back
header("HTTP/1.0 404 Not Found");
exit();
}
функция login_ldap
public static function login_ldap($userLogin, $userPassword) {
// parameters passed are used in ldap_search() to build filter
// used in ldap_bind()
$username = "uid=" . $userLogin . ",ou=Users,dc=xx,dc=xxx,dc=xxx";
$ldap_host = "ldap://xxx.xxx.xxx.edu:xxx";
$ldap_dn = "dc=xx,dc=xxx,dc=xxx";
$filter = "(uid=".$userLogin.")";
// limit attributes we want to look for
$attr = array("uid","cn","givenName","sn","mail");
// turn on debugging before you open a connection
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$ldap = @ldap_connect($ldap_host) or die("Could not connect to $ldap_host");
// configure ldap params
ldap_set_option($ldap,LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($ldap,LDAP_OPT_REFERRALS,0);
if ($ldap) {
echo $username, $userPassword;
$result_bind=@ldap_bind($ldap, $username, $userPassword);
} // ldap connected
else return 'Could not connect';
if ($result_bind) {
echo "<br />filter is: " . $filter . "<br />";
$result_search = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result_search);
for ($i=0; $i<$entries["count"]; $i++)
{
$user_dn = $entries[$i]["dn"];
$_SESSION['USER_NAME'] = $entries[$i]["cn"][0];
}
if ($entries == "FALSE" ) { echo "Error getting entries from ldap"; return -1;}
$attr2 = array("dn","cn","uniqueMember");
// check if user is part of the Bricks * group that is any group
$results2 = ldap_search($ldap, $ldap_dn, "(cn=XXXXX *)", $attr2) or exit("Unable to search LDAP server");
if ($results2 == "FALSE" ) { echo "Do not have permissions"; return -1; }
else {
$entries2 = ldap_get_entries($ldap, $results2);
//echo (var_dump($entries2));
ldap_unbind($ldap);
for ($i=0; $i<$entries2["count"]; $i++) {
//echo $entries2[$i]["dn"] . "<br>";
//echo $entries2[$i]["uid"][0] . "<br>";
//echo $entries2[$i]["cn"][0] . "<br>";
//echo "size of uniquemembers: " . count($entries2[$i]["uniquemember"]) . "<br />";
for ($j = 0; $j < count($entries2[$i]["uniquemember"]) - 1; $j++) {
//echo "size of uniquemembers: ". count($entries2[$i]["uniquemember"]);
$member_dn = $entries2[$i]["uniquemember"][$j] . "\n";
//echo $member_dn;
if ($user_dn == $entries2[$i]["uniquemember"][$j]) {
//echo "access granted to " . $member_dn . "\nmember of " . $entries2[$i]["cn"][0] . "\n";
$_SERVER['PHP_AUTH_USER'] = $userLogin;
$_SESSION['USER_LOGGED_IN'] = $userLogin;
$_SESSION['IP_AUTH'] = 1;
return "LOGIN SUCCESSFUL";
// once user is authenicated and authorizated create a search session to store search history
} // if
} // for
//echo $entries2[$i]["ou"][0] . "<br>";
} // for
return "login successful \n";
} // if
} // if result bind
else {
ldap_close($ldap);
$_SESSION = Array();
unset($_SERVER['PHP_AUTH_USER']);
unset($_SESSION['USER_LOGGED_IN']);
throw new Exception("LOGIN FAILED: binding error\nPlease try again.\n", 401);
} // else
} // login_ldap
Если я ввожу неправильный пароль, я получаю сообщения об ошибках в моих файлах журнала.
Большое спасибо за любую помощь с этим кодом.