[php] pb code ignoré
Arnaud
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
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
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
A voir également:
- [php] pb code ignoré
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
32 réponses
Vu que à mon avis écrire dans le $_POST doit être ignoré, j'aurais plutôt fait:
$message = $_POST["message"]
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
$message = $_POST["message"]
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
Tout d'abord merci,
J'ai essayé ton code, à savoir:
$message=$_POST["message"];
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
Mais maintenant, il ne fait plus qu'ignorer ce code, il bloque l'envoie du message s'il contient un de ces caractères. Par contre, ça marche qu'il n'en contient pas.
Arnaud
J'ai essayé ton code, à savoir:
$message=$_POST["message"];
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
Mais maintenant, il ne fait plus qu'ignorer ce code, il bloque l'envoie du message s'il contient un de ces caractères. Par contre, ça marche qu'il n'en contient pas.
Arnaud
Voci le code actuel dans sa totalité:
<?
session_start ();
if (isset($_SESSION['login']) && isset($_SESSION['pwd']))
include('../Espacemembre/verifsession.php');
include('../Espacemembre/sql_connect.php');
$req=mysql_query("select pseudo from membres where login='$_SESSION[login]'");
$_POST["pseudo"]=mysql_result($req,0,"pseudo");
$req=mysql_query("select prenom from membres where login='$_SESSION[login]'");
$_POST["prenom"]=mysql_result($req,0,"prenom");
$req=mysql_query("select nom from membres where login='$_SESSION[login]'");
$_POST["nom"]=mysql_result($req,0,"nom");
ini_set("sendmail_from","me@localhost.com");
mysql_connect('localhost','root','');
mysql_select_db("arnaudsalley_db");
if (isset($_POST["submit"]))
{
$message=$_POST['message'];
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
$date=date("Y-m-d H:i:s", time());
mysql_query("INSERT INTO livreor (id, nom, date, message)
VALUES ('','$_POST[pseudo]','$date','$message')");
$entetemail = "MIME-Version: 1.0\r\n";
$entetemail .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entetemail .= "From: LBF Promotion 2002";
mail("webmaster@modeinpress.com","Nouveau message sur le livre d'or",
"
<b>Message de:</b> $_POST[pseudo]
<br><br><b>Date:</b>$date
<br><br><b>Message:</b><br><br> $message
",$entetemail);
echo "
<script LANGUAGE=\"JavaScript\">
parent.bas.location.href='livreormessages.php';
</script>
";
}
?>
personne ne peut m'aider?
merci d'avance,
Arnaud
<?
session_start ();
if (isset($_SESSION['login']) && isset($_SESSION['pwd']))
include('../Espacemembre/verifsession.php');
include('../Espacemembre/sql_connect.php');
$req=mysql_query("select pseudo from membres where login='$_SESSION[login]'");
$_POST["pseudo"]=mysql_result($req,0,"pseudo");
$req=mysql_query("select prenom from membres where login='$_SESSION[login]'");
$_POST["prenom"]=mysql_result($req,0,"prenom");
$req=mysql_query("select nom from membres where login='$_SESSION[login]'");
$_POST["nom"]=mysql_result($req,0,"nom");
ini_set("sendmail_from","me@localhost.com");
mysql_connect('localhost','root','');
mysql_select_db("arnaudsalley_db");
if (isset($_POST["submit"]))
{
$message=$_POST['message'];
$message=str_replace("\'","\\'",$message);
$message=str_replace("\\\"","¤¤",$message);
$message=str_replace("\n","",$message);
$date=date("Y-m-d H:i:s", time());
mysql_query("INSERT INTO livreor (id, nom, date, message)
VALUES ('','$_POST[pseudo]','$date','$message')");
$entetemail = "MIME-Version: 1.0\r\n";
$entetemail .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entetemail .= "From: LBF Promotion 2002";
mail("webmaster@modeinpress.com","Nouveau message sur le livre d'or",
"
<b>Message de:</b> $_POST[pseudo]
<br><br><b>Date:</b>$date
<br><br><b>Message:</b><br><br> $message
",$entetemail);
echo "
<script LANGUAGE=\"JavaScript\">
parent.bas.location.href='livreormessages.php';
</script>
";
}
?>
personne ne peut m'aider?
merci d'avance,
Arnaud
mmmm... désole je ne suis pas un spécialiste du php :-)
Mais tu essai de modifier $_POST.
Or $_POST est fourni par la requête HTTP entrante.
Tu ne dois pas le modifier.
Tu ne peux que le lire (c'est ce que vient du client).
Mais tu essai de modifier $_POST.
Or $_POST est fourni par la requête HTTP entrante.
Tu ne dois pas le modifier.
Tu ne peux que le lire (c'est ce que vient du client).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben le problème c'est que j'y connais pas grand chose:
Faudrait que je fasse quoi dans ce cas alors?
Arnaud
Faudrait que je fasse quoi dans ce cas alors?
Arnaud
Moi ça me va... Je veux bien...
Mais de quelle manière? ;-)
Car je ne vois pas comment définir $message...
En tout cas merci...
Arnaud
Mais de quelle manière? ;-)
Car je ne vois pas comment définir $message...
En tout cas merci...
Arnaud
Salut,
Deux trois trucs, j'ai pas tout lu assidûment mais...
D'abord ta première condition (if (isset..........) n'ouvre aucune accolade.
Ensuite les requêtes vers la base de données se font avant la connexion à la base de données dans ton script. La logique voudrait le contraire.
Donc soit ces requêtes sont lancées nulle part, soit tu te reconnectes inutilement....(je pencherais plutôt pour la deuxième option vu que tu inclus une page appelée sqlconnect.php.)
Ensuiote
Et pour ton problème plus particulier, tu pourrais écrire:
juste après :
...et nous dire ce que ça affiche :-)
PS: Pour $message c'est bon tu as fait comme il fallait.
Deux trois trucs, j'ai pas tout lu assidûment mais...
D'abord ta première condition (if (isset..........) n'ouvre aucune accolade.
Ensuite les requêtes vers la base de données se font avant la connexion à la base de données dans ton script. La logique voudrait le contraire.
Donc soit ces requêtes sont lancées nulle part, soit tu te reconnectes inutilement....(je pencherais plutôt pour la deuxième option vu que tu inclus une page appelée sqlconnect.php.)
Ensuiote
<b>Message de:</b> $_POST[pseudo]est à remplacer par
<b>Message de:</b> $_POST['pseudo'](les guillemets). On retrouve la même erreur un peu au-dessus.
Et pour ton problème plus particulier, tu pourrais écrire:
echo $message;
juste après :
$message=str_replace("\n","",$message);
...et nous dire ce que ça affiche :-)
PS: Pour $message c'est bon tu as fait comme il fallait.
Li4uLlZvdHJlIGTpdm916SBzZXJ2aXRldXIuLi4u
Bonjour,
J'ai remplacé le code. Merci.
En ce qui concerne le echo $message; lorsque je l'inserts j'obtiens le message sur la meme page, en tout debut, sans aucune erreur, mais il ne l'ecrit pas dans la table. Et ce, uniquement lorsqu'il y a un caractère ennoncé dans str_replace. Sinon, ça marche très bien.
C'est grave docteur?
Arnaud
J'ai remplacé le code. Merci.
En ce qui concerne le echo $message; lorsque je l'inserts j'obtiens le message sur la meme page, en tout debut, sans aucune erreur, mais il ne l'ecrit pas dans la table. Et ce, uniquement lorsqu'il y a un caractère ennoncé dans str_replace. Sinon, ça marche très bien.
C'est grave docteur?
Arnaud
Salut,
Ok.
Mais sans la requête, le message s'affiche toujours bien? Et il n'ya pas de problème avec le str_replace? Ca filtre bien?
Ok.
Mais sans la requête, le message s'affiche toujours bien? Et il n'ya pas de problème avec le str_replace? Ca filtre bien?
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
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
Ah 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
Encore un test:
Ajoute cette ligne :
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 :-)
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
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.
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.
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à
<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à
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
Arnaud
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);
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
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