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 et pb d'encodage


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut [AJAX] Authentification et pb d'encodage
    Bonjour,

    Voilà, j'ai un script d'authentification par AJAX et tout marchait bien, mais je me suis rendus compte en faisant des test, que si un utilisateur mettait un caractère interdit (genre +), le sigle était interprété (donc si on reprends +, transformation en espace).

    J'ai eut beau essayer les "escape", "encodeURI" ou les deux combiné, rien à faire !!!

    Cela fait 2h que je cherche sur le net, pour trouver exactement ce que j'ai fais...

    Voici le code en espérant que quelqu'un puisse m'aider...

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    	function rq(t, o, i){ // type, objet, instruction
    	  var req = 't='+escape(encodeURI(t))+'&o='+escape(encodeURI(o))+'&i='+escape(encodeURI(i));
    		//Création de la requette ajax
    		try{
    			requette_ajax = new ActiveXObject('Microsoft.XMLHTTP');
    		}
    		catch(err){
    			try{
    				requette_ajax = new ActiveXObject('Msxml2.XMLHTTP');
    			}
    			catch(err){
    				try{
    					requette_ajax = new XMLHttpRequest();
    				}
    				catch(err){
    					requette_ajax = null;
    					alert("Votre naviguateur ne supporte pas l'Ajax !\nLe site nécésite le support de la technologie Ajax. Merci de visitez ce site avec un navigateur tel que Chromium, Google Chrome, Firefox, Safari, Opéra, Netscape, ou IE7 et +.");
    				}
    			}
    		}
     
    	   if(requette_ajax != null){
    	   //Ouverture et éxécution de la requette ajax
    		   requette_ajax.onreadystatechange = function() { recup(requette_ajax); };
    		   requette_ajax.open('POST', 'rq.php', true);
    		   requette_ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		   requette_ajax.setRequestHeader("Content-length", req.length);
    		   requette_ajax.setRequestHeader("Connection", "close");
    		   requette_ajax.send(req);
    		   alert(req);
    		   //requette_ajax.open('GET', 'rq.php?'+req, true);
    		   //requette_ajax.send(null);
    	   }
    	}
     
    	function recup(xhr){
    		if(xhr.readyState == 4){
    			if(xhr.status == 200){
    				var data = xhr.responseText;
    				var infos = data.split('|');
    				var type = infos[0];
    				var rep = infos[1];
    				var id = infos[2];
    				var traitement = infos[3];
    				if(traitement == "mep"){
    					rep = "<span class=\""+type+"\">"+rep+"</span>";
    				}
    				if(id == "cnx"){
    				   rep = '<li class="droite">'+rep+'</li>';
    				}
     
    				$(jId(id)).fadeOut(800, function(){
    				   document.getElementById(id).innerHTML = rep;
    				   $(jId(id)).fadeIn(3000);
    				});
    			}
    		}
    	}
     
    function cnx(action){
    	if(action == 'co'){
    	   var o = el('login').value+'|'+el('pass').value;
    	   rq('cnx', o, 'cnx');
    	}
    	else{
    	   rq('cnx', '', 'deco');
    	}
    	return false;
    }
    HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="post" action="" onsubmit="return cnx('co');">
    PseudO : <input type="text" name="login" id="login" size="10" />&nbsp;&nbsp;&nbsp;
    MdP : <input type="password" name="pass" id="pass" size="10" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="submit" value="LogiN" />
    </form>
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
    session_start();
    require_once "inc/cnx.inc.php";
    require_once "inc/fnct.inc.php";
     
    if(!isset($_POST['t'], $_POST['o'], $_POST['i'])){
            exit();
    }
     
    $opp = explode("|", urldecode($_POST['o']));
    switch(urldecode($_POST['t'])){
            case 'cnx':
                    if(urldecode($_POST['i']) == "cnx"){
                            $rq = @mysql_query("SELECT * FROM adherents WHERE pseudo='".mysql_real_escape_string($opp[0])."' AND pass='".$opp[1]."'");
                            if($rq){
                                    if(@mysql_num_rows($rq) > 0){
                                            $tab = @mysql_fetch_array($rq);
                                            $_SESSION['infos'] = stripslashes($opp[0])."|".stripslashes($opp[1])."|".stripslashes($tab['mail'])."|".stripslashes($tab['nbcom'])."|".stripslashes($tab['site']);
                                            echo "ok|<b>Bienvenur ".stripslashes($opp[0])." !</b> <a href=\"?p=\">ProfiL</a> - <a onclick=\"cnx('deco');\">DéconnexioN</a>|cnx|brut";
                                    }
                                    else{
                                            echo "imp|Pseudo ou mot de passe incorrect ! ".$opp[1]." <a onclick=\"aff_cnx();\">ré-essayer</a>|cnx|mep";
                                    }
                            }
                            else{
                                    echo "imp|Erreur lors de l'exécution de la requette ! <a onclick=\"aff_cnx();\">ré-essayer</a>|cnx|mep";
                            }
                    }
                    elseif(urldecode($_POST['i']) == "deco"){
                       session_destroy();
                       if(isset($_SESSION['infos'])){
                             echo "imp|Erreur lors de votre déconnexion. <a onclick=\"cnx('deco');\">Déconnexion</a>|cnx|mep";
                       }
                       else{
                             echo "ok|<li class=\"droite\"><a onclick=\"aff_cnx();\" title=\"ConnexioN\">ConnexioN</a></li>\n<li class=\"droite\"><a href=\"/?p=5\" title=\"InscriptioN\">InscriptioN</a></li>\n|cnx|brut";
                       }
                    }
            break;
            default:
                    exit();
            break;
    }
    ?>
    Comme vous l'aurait constaté, j'ai volontairement afficher le mot de passe pour voir le traitement...

    Avec firebug, voilà ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Post
    Paramètres                     application/x-www-form-urlencoded
    i	cnx
    o	test%7C 22 33
    t	cnx
    Source
    t=cnx&o=test%257C++22++33&i=cnx
     
    Réponse
    imp|Pseudo ou mot de passe incorrect !   22  33 <a onclick="aff_cnx();">ré-essayer</a>|cnx|mep
    Aidez-moi SVP !!!!!!

    Merci d'avance...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Même chose
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par FotoXe33 Voir le message
    Même chose
    C'est à dire ?

    Tu as fait quoi exactement ? Tu obtiens quoi exactement ?


    devYan.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par devyan Voir le message
    C'est à dire ?

    Tu as fait quoi exactement ? Tu obtiens quoi exactement ?
    +1 soit plus précis

    Sinon, tu as lu ça ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Autant pour moi, problème réglé, grâce a cette commande et en enlèvent le urldecode en php

    Merci beaucoup
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

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

Discussions similaires

  1. [AJAX] Authentification en Ajax
    Par Identifiant dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/01/2008, 10h25
  2. [AJAX] Authentification en Ajax
    Par Identifiant dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/01/2008, 16h57
  3. [AJAX] xmlHttprequest echappement ou d'encodage
    Par crevettes59000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/01/2007, 11h52
  4. [AJAX] Authentification PHP
    Par abys dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/09/2006, 13h43

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