Page 1 sur 1

Problème de caractères, les '+' ne sont pas enregistrés en b

Posté : 06 déc. 2008, 00:38
par Ultim4T0m
Bonsoir tout le monde,

Alors voilà mon problème...
Je fais un petit forum en AJAX, et lorsque l'utilisateur post, le contenu de son message est envoyé en JS au serveur, puis traité en PHP.


Fonction JS :

Code : Tout sélectionner

function ajoutPost(idSujet) { ajax('./forum_ajax.php', 'formPost', 'action=ajoutPost&idSujet='+idSujet+'&contenuPost='+escape(get('textarea').value), 'setTimeout("getSujet('+idSujet+', \'last\')", 1000);'); }
Lors de cette étape, je vois sur Firebug que tout le contenu du message est bien envoyé (même les caractères '+'), donc pas de soucis, ça doit pas venir du JS...

Traitement PHP :
case 'ajoutPost' :
	include('../fonctions/forum/ajoutPost.php');
	$idSujet = mysql_real_escape_string(stripslashes($_POST['idSujet']));
	$contenuPost = mysql_real_escape_string(stripslashes($_POST['contenuPost']));
	echo ajoutPost($idSujet, $contenuPost);
break;
Et la fonction ajoutPost :
function ajoutPost($idSujet, $contenuPost)	{
	/* Aucun traitement sur la variable $contenuPost n'est effectué avant cette requête */
	mysql_query("INSERT INTO forum_posts (idSujet, idPosteur, time, contenuPost, typeCompte) VALUES (".$idSujet.", ".$idPosteur.", ".time().", '".$contenuPost."', '".$typeCompte."')");
}

Dans mon fichier "forum_ajax.php", j'ai cette ligne
header('Content-type: text/html; charset=iso-8859-1');
Je ne comprends vraiment pas, les accents passent très bien, tout fonctionne, sauf le caractère '+' et d'autres comme les '...' par exemple.


N'hésitez pas si vous avez une piste, je suis preneur :)

Merci d'avance.

Posté : 06 déc. 2008, 11:12
par chrislabricole
A ta place, je travaillerais plutôt en UTF-8.

Je ne suis pas sûr, mais je crois que tu envois ta requête AJAX en GET, surtout pas ! Envois là plutôt en POST, ça devrait plus marcher et être plus sécuriser....

Posté : 06 déc. 2008, 13:44
par Ultim4T0m
C'est en POST, pas de soucis ^^

En passant tout en UTF-8, j'ai le même soucis... :/

Ça ne peut venir que du charset ?

Posté : 06 déc. 2008, 13:58
par chrislabricole
Dans ton fichier PHP lié à AJAX, fais un :
echo $contenuPost;
Pour voir se que ressort cette variable...

Posté : 06 déc. 2008, 14:32
par Ultim4T0m
Hum, j'ai posté ceci
test + @ é

+ :)
Et les echo me donnent ça
test @ é :)test @ é\n\n :)Message posté avec succès !
$contenuPost = mysql_real_escape_string(stripslashes($_POST['contenuPost']));
echo $_POST['contenuPost'];
echo $contenuPost;
echo ajoutPost($idSujet, $contenuPost);

Ça viendrait donc du JS.. Mais Firebug me montre bien ce qui est posté
action ajoutPost
contenuPost test + @ é + :)
idSujet 53