IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] authentification avec Ajax


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut [AJAX] authentification avec Ajax
    Bonjour, j'ai fait une fonction d'authentification, l'utilisateur remplis les deux champs clique sur connexion et hop ça le connecte... en théorie ça devrait marcher, mais en pratique non et je ne voit pas du tout pourquoi...

    Mais problèmes sont le suivants : la page php est appelé que de temps en temps et quand elle est appelée, elle ne renvoi pas toujours quelque chose.

    Fonction javascript :

    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
    function checkPassword(){
    	var login = window.document.getElementById("login").value;
    	var password = window.document.getElementById("password").value;
    	var data = "login="+escape(login)+"&pass="+escape(password);
     
    	var xhr = getXMLHttpRequest();
     
    	xhr.onreadystatechange = function() {      
    		if (xhr.readyState == 4){
    			if(xhr.status == 200 || xhr.status == 0) {
    				reponselogin(xhr.responseText);
    			}
    			else alert("Erreur");
    	    }	    
       	}
     
    	xhr.open("POST", "login.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
       	xhr.send(data);
    }
     
    function reponselogin(text){
    	if(text=="login"){
    			setTimeout("window.location.reload(true)",2000);	
    	}
    	else if (text=="unexistant")alert("Utilisateur inexistant");				
    }
    Page php :

    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
    <?
    header("Content-Type: text/plain");
    include "lib/config.php"; 
    varlog("POST : ".print_r($_POST,true));
    oOpenConnection();
    $cnx = new TDBObject();
    $erreur = false;
    	$requete = "SELECT * FROM user WHERE user_login='".$_POST['login']."' and user_password='".$_POST['pass']."'";
    	$cnx->fExecQuery($requete);	
    	varlog("CNX : ".print_r($cnx,true));
    	if ($cnx->fGetNumRows() == 0) {
    		echo "unexistant";	
    	}
    	else {
    		$info = $cnx->fGetNextRecord();
    		$user_id = $info['user_id'];
    		session_register(user_id);	
    		echo "login";	
    	}
     
     
    ?>
    Merci de m'aider

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Et ben toi, t'as pas peur des injections SQL !

    Code PHP : 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
    <?php
    session_start(); // Pour les sessions c'est mieux :)
    header("Content-Type: text/plain");
    include "lib/config.php"; 
    //varlog("POST : ".print_r($_POST,true)); // si tu print qq chose, ton JS va retourner une erreur même si j'imagine que c'est pour débugger
    oOpenConnection();
    $cnx = new TDBObject();
    $erreur = false;
    	$login=htmlspecialchars($_POST['login'], ENT_QUOTES);
    	$pass=htmlspecialchars($_POST['pass'], ENT_QUOTES);
    	//$requete = "SELECT * FROM user WHERE user_login='".$_POST['login']."' and user_password='".$_POST['pass']."'";
    	$requete = "SELECT user_id FROM user WHERE user_login='".$login."' and user_password='".$pass."'"; // Pas besoin de * si tu as besoin que du champ user_id
    	//$cnx->fExecQuery($requete);
    	$query=mysql_query($requete);		
    	//varlog("CNX : ".print_r($cnx,true)); // idem, j'espère que ça print rien
    	//if ($cnx->fGetNumRows() == 0) {
    	if (mysql_num_rows($query) == 0) {
    		echo "unexistant";	
    	}
    	else {
    		//$info = $cnx->fGetNextRecord();
    		$info = mysql_fetch_array($query);
    		$user_id = $info['user_id'];
    		//session_register(user_id);	
    		$_SESSION['user_id']=$user_id;
    		echo "login";	
    	}
     
     
    ?>

    Bon voilà c'est pas forcément le meilleur code mais au moins je reviens à des choses basiques, sûres. Ca devrait marcher maintenant..

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Et ben toi, t'as pas peur des injections SQL !
    C'était juste un code de base, pour un test...

    varlog("POST : ".print_r($_POST,true));
    Petite fonction perso qui log dans un fichier texte


    $cnx = new TDBObject();
    Cet objet gère les action en base de donnée
    $cnx->fExecQuery($requete) = $query=mysql_query($requete);

    Pour le reste je vais essayer ça ce soir merci de m'avoir répondu

  4. #4
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Cet objet gère les action en base de donnée
    $cnx->fExecQuery($requete) = $query=mysql_query($requete);
    Oui je m'en doutais un peu mais justement, tu as peut être un soucis à ce niveau là.
    Vu que ta page PHP ne renvoi pas toujours quelque chose.. c'est qu'il y a un soucis quelque part..

    Même question pour varlog, est ce que tu fermes bien le fichier texte après y avoir écrit ? Est ce que tu constates que ton fichier est modifié (que ta fonction fonctionne)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    La page php fonctionne parfaitement si je l'appelle autrement que par l'ajax, je pense que mon problème viens de l'hébergeur (FREE) merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Authentification avec ajax
    Par devvanjier dans le forum AJAX
    Réponses: 2
    Dernier message: 29/10/2011, 06h32
  2. [AJAX] Sécurité avec AJAX
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 18h01
  3. [AJAX] Résultat avec Ajax
    Par incao dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/05/2006, 22h14
  4. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/04/2006, 16h53
  5. [AJAX] Modifier avec AJAX une image générée avec GD
    Par thsantac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2006, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo