[php] pb code ignoré
J'ai un petit problème, ces lignes de codes sont ignorés dans ma page:
$_POST["message"]=str_replace("\'","\\'",$_POST["message"]);
$_POST["message"]=str_replace("\\\"","¤¤",$_POST["message"]);
$_POST["message"]=str_replace("\n","",$_POST["message"]);
Quelqu'un sait-il pourquoi?
Merci d'avance,
Arnaud
32 réponses
Un problème PHP est signalé : des lignes destinées à nettoyer $_POST['message'] avec str_replace ne s'appliquent pas et l'affichage du message se fait à un endroit inapproprié. Plusieurs propositions suggèrent d'écrire le résultat dans une nouvelle variable plutôt que de modifier directement $_POST et de vérifier que la variable est bien définie avant l'affichage. Des difficultés évoquent aussi des soucis liés à l'environnement EasyPHP et à l'emplacement d'impression du message, ce qui peut éloigner le vrai problème du filtre. En complément, certains témoignent que sans la requête, le message est enregistré correctement, ce qui suggère d'examiner l'interaction entre le traitement et l'affichage plutôt que le seul filtrage.
-
Pour info : évite d'utiliser EasyPHP pour publier ton site : c'est pas fait pour de la production mais pour du développement ; c'est pas assez sécurisé en fait.
Ce qu'il faut faire : installer d'abord Apache, puis PHP et MySQL les uns après les autres. Il y a pas mal de tutoriels sur le Web pour aider. De toutes façons, installer un serveur Web, c'est pas bien difficile ! Et c'est vrai en plus ! -
Et oui... que veux-tu... De toute façon, j'ai cru comprendre qu'un site n'étais jamais vraiment terminé... Toujours des choses à faire... Toujours de nouvelles idées... Toujours des problèmes ou des bugs...
Mais bon... Pour ce qui est du forum, je vais abandonner celui mis en place car trop de problèmes avec le code... J'ai paralèllement essayé une dizaine d'autres forums, mais la qualité de leur code les rend infonctionnels sur easyphp (à moins de passer des heures à tout refaire, chose que je ne peux me permette actuellement). On m'a parlé du forum FSB qui parrait-il serait un peu mieux... Faut que je regarde ça de plus prêt... J'ai commencé à essayer de le chercher, mais pas encore trouvé...
A part ça si t'as des commentaires/critiques sur le site, n'hésite pas, cela ne pourra être que bénéfique et positif...
Merci une fois de plus pour tout,
Arnaud -
ModérateurPas mal, mais il ya encore beaucoup de choses qui ne marchent pas :-) (forum.....)
-
Alors? qu'en dis-tu? très honnêtement...
-
ModérateurAh ça y est ça marche, merci :-)
-
ha... Pas normal car je viens de valider ton inscription... normalement il ne prend que les 8 premiers caractères du mot de passe... Par ailleurs fais attention aux majuscules/minuscules...
-
ModérateurVoui, j'ai essayé pour voir ce que ça donnait. Mais apparemment il ne reconnait pas le mot de passe (même après deux tentatives d'inscriptions)....
-
C'est toi qui t'es inscrit sur le site?
-
C'est clair...
Mais t'inquiete ce sont des videos persos... -
ModérateurEt puis fais gaffe à ce que tu diffuses comme videos, vérifie que tu as les droits etc....
J'imagine que le sais déjà mais bon on est jamais trop prudent.... :-D -
Ok, ben en tout cas merci pour tout...
-
ModérateurAucune idée. J'ai jamais essayé. Si tu héberges le site chez toi ça risque d'être juste au niveau de la connexion.
Ca dépend de la taille des fichiers video, de la frequentation du site, de ton débit... Mais a priori je pense que ce sera un peu trop juste.... -
Beau gosse... C'est tout ce que j'ai à dire...
T'as deuxième ligne à fonctionner...
Faut que je m'occupe du reste maintenant...
Pendant que j'y suis, tu penses quoi du streaming? J'ai quelques videos que je voudrais mettre en ligne sur mon site... C'est une bonne idée ou pas de le mettre en streaming? (Sachant que j'héberge sur mon ordi le site)
En tout cas merci pour tout, une fois de plus!
Arnaud -
Modérateur
Désolé pour la barre de défilement c'est à cause de ma signature. Je l'ai supprimée de mon profil comme ça plus de soucis :-)
Bon pour ton erreur, le problème c'est ta requête:INSERT INTO livreor (id, nom, date, message) VALUES ('','Superman','2005-01-19 14:54:46','T'T')
Il ne devrait pas y avoir de guillemet simple qui se balade dans T'T.
Donc il faut que tu rajoutes cette ligne à la fin de tes str_replace():$message=str_replace("'","\'",$message);
Et si ça ne marche pas, essaie :$message=str_replace("'","\\'",$message); -
Ben écoute, pour te répondre j'utilise easyphp 1,6... Mais je n'ai aucun problème pour récupérer mes variables, mais seulement pôur pouvoir passer certains caractères dans mon formulaire. Mise à part ça (quand les caractères sont absents), le formulaire fonctionne très bien... Tout mon problème est là...
Arnaud -
1er page : formulaire
<input ... nom ...>
2eme page
$nom=$_POST["nom"]
recupération de ta variable passée par page
si mnt tu veux l'enregistrer en session
(récup par session de tes variables)
il faut savoir 2 choses, la 1er c'est de savoir sur quelle version d'easy php tu es 1.6? 1.7? et la 2eme chose que utilises tu pour enregistrer tes variables de session?
car j'ai utilisé dans le temps la variable session_register("nomvariable"); fonctionnait nickel mais avec la vers easy php1.7 c'est plus le cas , pas d'erreur mais il n'y a rien dans mes variables comme si elles étaient vides!
véçu
-----
ben aucune faute dans le script mais j'arrivais pas à récupérer mes variables de session dans une autre page que celle créée
c a d ds la 1er ok ça fonctionne mais ds la suivante rien , vide
j'ai utilisé à la place de session_register( ) , $_SESSION["session_nom"] pour enregistrer mes variables de session
$session_nom=$_SESSION["session_nom"];
et là ça fonctionne nickel!
fait des echo de tes variables .
voilà -
Bon, j'ai essayé le code. J'ai ensuite fait deux tests: Une première fois avec un caractère dit "à problème". Voici le texte tapé: T'T et voici le message obtenu:
T'TINSERT INTO livreor (id, nom, date, message) VALUES ('','Superman','2005-01-19 14:54:46','T'T'
Le deuxième test, je l'ai fait avec du texte normal: meme message mais ecriture dasn la table. -
ModérateurEncore un test:
Ajoute cette ligne :echo "INSERT INTO livreor (id, nom, date, message) VALUES ('','$_POST[pseudo]','$date','$message' <br>";avant le echo $message;
Puis essaie de reproduire un de ces fameux messages qui ne passent pas dans la base de données (à partir du formulaire d'envoi).
Puis dis moi ce que tu as tapé dans ce formulaire, puis ce qui est affiché à l'ecran après envoi :-)
Li4uLlZvdHJlIGTpdm916SBzZXJ2aXRldXIuLi4u
-
ModérateurAh c'est bizzare. Le echo $message c'était juste pour tester. Visiblement le problème ne vient pas du filtre.... Je ne sais pas d'où ça vient...
Li4uLlZvdHJlIGTpdm916SBzZXJ2aXRldXIuLi4u
-
En fait, le message ne s'affiche pas au bon endroit. Il s'affiche sur la meme page que celle ou on ecrit le message, à un endroit ou il ne devrait pas. Mais il s'affiche bien meme si on insert les caractere se trouvant dans str_replace.
Si on n'insert pas ces caracteres, le message s'enregistre correctement dans la table et s'affiche dans la page de reception des messages.
Arnaud
- 1
- 2