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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de caractères, les '+' ne sont pas enregistrés en bdd (entre autre)

par Ultim4T0m » 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

par chrislabricole » 06 déc. 2008, 13:58

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

par Ultim4T0m » 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 ?

par chrislabricole » 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....

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

par Ultim4T0m » 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.