Bonjour,

j'ai mis en place une authentification ajax. donc voici le formulaire:

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>
le code du JS:

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);
}
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
 
#!/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();
    }
?>
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".

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.