2 votes

système de connexion javascript/ajax

Je souhaite utiliser script/ajax pour mon système de login. Jusqu'à présent, j'ai pu récupérer le tableau avec toutes les erreurs et, si la connexion est réussie, définir $_SESSION['id'] :

<script type="text/javascript">
$(document).ready(function() {
$("input[type=button]").click(function () {  
var username = $('input[id=username]').val(); // get the username 
var password = $('input[id=password]').val(); // and the password
    if (username != '' || password !='') { // if not empty 

     $.ajax({
            type: "POST",
            url: "loginUser.php",
            data : "username="+username+"&password="+password,
            dataType: "json",
            success: function (data) {
            var success = data['success'];
            if(success == 'false'){
            var error = data['message'];
            alert(error); // the array with all the errors
             }else{
       $('#mask , .login-popup').fadeOut(300 , function() {
       $('#mask').remove();  
    });// end fadeOut function()
setTimeout("location.href = 'home.php';",1500);
    }
  }
  });//end success function

  } else {
alert('Enter some text ! '); // just in case somebody to click witout writing anything :)
    }
    });//end click function
});//end ready function
  </script>

loginUser.php vérifie toutes les fonctions et renvoie les données comme ceci :

if (empty($_POST)===false){
$email = sanitize($_POST['username']);
$password = sanitize($_POST['password']);

if (empty($email) === true || empty ($password) === true){ 

    $errors[] = 'You need to enter a username and password';
} else if (mail_exists($email) === false){
    $errors[] = 'we can\'t find that username. have you registered?';
}else if (user_active($email) === false){
    $errors[] = 'you haven\'t activated your account!';
}else {
$login = login($email, $password);
if ($login === false){
    $errors[] = 'username/password combination is incorrect!';
}else {
//set user session 
$_SESSION['id'] = $login;

//redirect user to home
    echo json_encode(array("success"=>'true'
                ));
}

   }
echo json_encode(array("success"=>'false',
            "message"=>$errors,             
            ));
                          }

Comme je l'ai dit, je reçois TOUTES les alertes si le mot de passe et le nom d'utilisateur ne sont pas corrects et je reçois le set $_SESSION si le mot de passe et le nom d'utilisateur sont corrects mais la popup reste affichée et je n'obtiens pas de redirection (mais je peux accéder à cause du set SESSION). Est-il correct de tester si le succès est == true ou == false ????

* * *EDIT : corrigé, le problème était dans le fichier php. regardez ma réponse....

2voto

mattia Points 762

Le problème se situait au niveau de la logique if else dans le fichier php :

JS :

<script type="text/javascript">
 $(document).ready(function() {
      $("input[type=button]").click(function () {
      var username = $('input[id=username]').val(); // get the content of what user typed ( in textarea ) 
      var password = $('input[id=password]').val(); // get the content of what user typed ( in textarea ) 
                            $.ajax({
                            type: "POST",
                            url: "loginUser.php",
                            data : "username="+username+"&password="+password,
                            dataType: "json",
                            success: function (data) {
                            var success = data['success'];
                            if(success == false){
        var error = data['message'];
                            alert(error); // just in case somebody to click on share witout writing anything :

                                }

                                if(success == true) {
   $('#mask , .login-popup').fadeOut(300 , function() {
   $('#mask').remove();  
                                });// end fadeOut function()
    setTimeout("location.href = 'home.php';",1000);                                 
                                                }
                                                    }

                        });//end ajax             
                 });//end click function
         });//end ready function

loginUser.php :

   <?php
    if (empty($_POST)===false){
$email = sanitize($_POST['username']);
$password = sanitize($_POST['password']);

if (empty($email) === true || empty ($password) === true){ 
            $result = false;
            $errors = 'You need to enter a username and password';
            echo json_encode(array("success"=>$result,
                                   "message"=>$errors,             
                                   ));
} else if (mail_exists($email) === false){
            $result = false;
            $errors= 'we can\'t find that username. have you registered?';
            echo json_encode(array("success"=>$result,
                                   "message"=>$errors,             
                             ));
}else if (user_active($email) === false){
            $result = false;
            $errors = 'you haven\'t activated your account!';
            echo json_encode(array("success"=>$result,
                            "message"=>$errors,             
                             ));
}else {
$login = login($email, $password);
if ($login === false){
            $result = false;
            $errors = 'username/password combination is incorrect!';
            echo json_encode(array("success"=>$result,
                            "message"=>$errors,             
                             ));
} else {
//set user session 
$_SESSION['user_id'] = $login;
$result = true;
    echo json_encode(array("success"=>$result
                               ));

}
}
}
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X