Bonjour,
j'ai mis en place une authentification ajax. donc voici le formulaire:
le code du JS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <form name="formlogin" method="post"> <script type="text/javascript" src="../js/sendData.js"></script> <div> Login : <input type="text" name="username" value="" size="8" /><br /> Password : <input type="password" name="password" value="" size="8" /><br /> <input type="button" onclick="call_login();" name="envoi" value="Envoi" /> </div> </form>
et enfin le CGI:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 function postRequest(strURL,page){ if(window.XMLHttpRequest){ var xmlHttp = new XMLHttpRequest(); } else if(window.ActiveXObject){ var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlHttp.open('POST', page); xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlHttp.onreadystatechange = function(){ if (xmlHttp.readyState == 4){ updatepage(xmlHttp.responseText); } } xmlHttp.send(strURL); } function updatepage(str){ alert(str); if(str=="yes"){ alert("Vous etes bien connecte"); window.location.replace("http://users.info.unicaen.fr/~jcavey/jmlL3InfoJcXd/admin/?a=articles"); }else{ alert("Erreur de login! Veuillez recommencer"); } } function call_login(){ var login = document.formlogin.auth_login.value; var password = document.formlogin.auth_pass.value; var page = "login.cgi"; var url = "auth_login=" + login + "&password=" +password; postRequest(url,page); }
Le problème se situe dans le CGI, je ne peux pas mettre plusieurs lignes de codes avant ou après le echo "yes" (récupéré dans le JS) sans quoi il m'execute bien le alert(str) qui me renvoie yes. Mais quand je confirme, il me met : ""Erreur de login! Veuillez recommencer".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/usr/lib/cgi-bin/php5 <?php require_once("../../config/config.php"); try{ $username=$_POST['auth_login']; $password=$_POST['password']; $sql = "SELECT * from auteurs where auteur = '{$username}' and pass = '{$password}'"; $stmt = JML_BD::getConnexion()->query($sql); if($stmt->fetch()!=null) {$auth = JML_Auth::getInstance(); echo "yes"; } else{ echo "no"; } } catch(PDOException $e) { echo $e->getMessage(); } ?>
J'ai comme l'impression donc que la méthode updatepage est appelée deux fois et str passerai de "yes" à no dans ce cas là. si je met qu'une seule instruction dans le if: "echo "yes" " sa marche bien sinon sa foire.
Partager