Débutant Ajax j'essaie de créer un formulaire de connexion.
J'ai installé un plugin JQuery avec un panneau coulissant accroché sur la bordure supérieur avec les formulaires :
http://web-kreation.com/demos/Sliding_l ... l_jquery/#
Le meilleur résultat que j'ai pu obtenir pour l'instant est l'affichage du résultat de la requête dans le panneau, au dessus du formulaire, mais je n'arrive pas a trouver l'erreur qui empêche le script d’interpréter la réponse (1 ou 0) il m'affiche systématiquement le text d'erreur de saisie, que les infos de connexions soit bonnes ou mauvaises :
Le Formulaire :
Code : Tout sélectionner
<div class="left">
<div class="errorlog"></div>
<div class="reponselog"></div>
<!-- Login Form -->
<form class="clearfix" id="formLogin">
<h1>Member Login</h1>
<label class="grey" for="login">Username:</label>
<input class="field" type="text" name="login" id="login" value="" size="23" required />
<label class="grey" for="mdp">Password:</label>
<input class="field" type="password" name="mdp" id="mdp" size="23" required />
<label>
<input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" />
Remember me</label>
<div class="clear"></div>
<input type="submit" name="submit" value="login" class="bt_login" />
<a class="lost-pwd" href="lost.php">Lost your password?</a>
</form>
</div>Le code PHP fichier "loginBD.php"
Code : Tout sélectionner
head>
<meta charset="utf-8" />
<title>XXXXX</title>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- PNG FIX for IE6 -->
<!-- http://24ways.org/2007/supersleight-transparent-png-in-ie6 -->
<!--[if lte IE 6]>
<script type="text/javascript" src="js/pngfix/supersleight-min.js"></script>
<![endif]-->
</head>
<body>
<?php
try{
$pdo_options[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION;
$bdd=new PDO('mysql:host=localhost;dbname=Site_location', 'root', '' , $pdo_options);
}
CATCH(exception $e)
{
die('erreur : ' . $e->getmessage());
}
if( isset($_POST['login']) && isset($_POST['mdp']) ){
$mdp = mysql_real_escape_string(($_POST['mdp']));
$login = mysql_real_escape_string($_POST['login']);
// Vérification des identifiants
$req = $bdd->prepare('SELECT id FROM utilisateurs WHERE login = :login AND mdp = :mdp');
$req->execute(array(
'login' => $login,
'mdp' => $mdp));
$resultat = $req->fetch();
if (!$resultat)
{
echo "0";
}
else
{
echo "1";
/*session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['login'] = $login;
setcookie('login', $_POST['login'], time() + 365*24*3600, null, null, false, true);*/
}
}
?>
</body>Ajax :
Code : Tout sélectionner
<!-- jQuery - the core -->
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<!-- Sliding effect -->
<script src="js/slide.js" type="text/javascript"></script>
<!-- connexion script -->
<script type="text/javascript">
$(document).ready(function(){
$("#formLogin").submit(function(){
$.post(
"loginBD.php",
{
login : $("#login").val(),
mdp : $("#mdp").val(),
},
function(data){
if(data1 != "1")
{
$(".errorlog").hide().empty().append("Vous avez fait une erreur de saisie ...").show();
}
else
{
$(".reponselog").hide().append(login + "Vous avez été connecté avec succès !").show();
$("#formLogin").hide();
}
});
return false; // ne change pas de page
});
});
</script>J'ai beau tester mon code je ne trouve pas la cause de la non-interprétation du résultat (1 ou 0):
- firebug me donne un log sans problème les variables sont bien envoyé, traité par le PHP, la réponse est bonne (1 ou 0) en fonction de la correspondance avec la DB :
Content-Type : text/html
POST : login=TOTO&mdp=TOTO
Response :
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Document sans titre</title> </head> <body> </body> </html>1</body> </html> (je pense que c'est due aux includes php )
HTML : 1 (avec les bons login and password enregistré dans la DB)
- le résultat de la requête (1 ou 0) s'affiche dans le panneau JQuery au dessus du formulaire, lors de test. Mais lorsque j’enlève les balises alert() de test le script refuse d’associer la bonne phrase au résultat et affiche systématiquement celle de mauvaise saisie
-j'ai tenté de remplacer la valeur retourné par PHP "1" par "success" en ajoutant l'argument 'text' a mon $.post et en modifiant le message réponse, comme suit ,mais ça ne resoud rien :
Code : Tout sélectionner
function(data){
if(data != "Success"){
$(".errorlog").empty().append("Vous avez fait une erreur de saisie ...");}
else{
$(".reponselog").hide().append(login + "Vous avez été connecté avec succès !").slideDown();
$("#formLogin").fadeout();
}
},'text');Code : Tout sélectionner
function(data){
if(typeof response=="object")
{
// Response is javascript object
if(data != "1")
{....Code : Tout sélectionner
function(data){
var data1 = parseInt("data",10);
if(data1 !== "1")
{j'ai changé la conditionnel pour qu'elle traite data1 (int) mais le résultat ne veux toujours pas s’interpréter
Désoler pour la longeur j'ai voulu être précis et éviter des réponses déjà test, merci de votre aide je suis un peu désemparé.