Problème de caractères, les '+' ne sont pas enregistrés en bdd (entre autre)

Eléphant du PHP | 445 Messages

06 déc. 2008, 00:38

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

Mammouth du PHP | 959 Messages

06 déc. 2008, 11:12

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

Eléphant du PHP | 445 Messages

06 déc. 2008, 13:44

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 ?
LLDC
Ulti

Mammouth du PHP | 959 Messages

06 déc. 2008, 13:58

Dans ton fichier PHP lié à AJAX, fais un :
echo $contenuPost;
Pour voir se que ressort cette variable...

Eléphant du PHP | 445 Messages

06 déc. 2008, 14:32

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
LLDC
Ulti