Функция Jquery, использующая .post, работает в Chrome и IE, но не в Firefox - PullRequest
0 голосов
/ 15 октября 2018

У меня есть функция входа в систему, которая работает в 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

Если я ввожу неправильный пароль, я получаю сообщения об ошибках в моих файлах журнала.

Большое спасибо за любую помощь с этим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...