[AJAX] Authentification en AJAX
Bonjour,
j'ai mis en place une authentification ajax. donc voici le formulaire:
Code:
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:
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:
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.