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...