Probleme formulaire

Dorsy
Invité n'ayant pas de compte PHPfrance

03 avr. 2007, 19:39

Bonjour,
Voila mon probleme,
J'ai un formulaire en deux parties qui servira de livre d'or,
Seulement voila, je n'arrive pas a securiser le html en mettant htmlentities, je dois mal le placer,
Un peu d'aide ne serait pas de refus, merci.

Donc voila les codes:

Code : Tout sélectionner

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Donnez votre avis!! (" R-Avis V1.0 ")</title> <? echo $message; ?> </head> <body bgcolor="#FFFFFF"> <p><font size="5"><em>Donnez votre avis!!</em></font></p> <? require("logz.log"); ?> <hr> <form method="POST" action="enreg.php"> <p>Entrez votre adresse e-mail : <input type="text" size="20" name="email" ><br> Entrez votre Prenom : <input type="text" size="20" name="pseudo" ></p><br> <p>Entrez vos commentaires : </p> <p><textarea name="commentaires" rows="7" cols="50"></textarea></p> <input type="submit" value="Valider"> </form> <hr> <p>&nbsp;</p> </body> </html>

Code : Tout sélectionner

<? $quand = date("d M Y H:i:s"); //Temps $fp = fopen("logz.log","a+"); //Ouverture ou création du fichier fputs($fp, "| <a href='mailto:$email'> $pseudo </a> a posté le $quand et il a écrit<br> $commentaires<p>"); fclose($fp);//Ecriture et fermeture du fichier ?> <HTML><HEAD> <script language='JavaScript'> var url = "form.php"; window.location.replace(url); </script></HEAD> <BODY> </BODY> </HTML>
Merci :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 avr. 2007, 08:51

Ce n'est pas qu'il est mal placé, c'est juste qu'il n'est pas placé du tout ;)

Dans ton script enreg.php lorsque tu récupères les variables de ton formulaires, il te faut d'une part spécifier d'où elles proviennent ($_POST['pseudo'] au lieu de $pseudo) et il te suffit de faire appel à ta fonction dessus : htmlentities($_POST['pseudo']), htmlentities($_POST['commentaire']) ...

Et plutôt que de mettre du code html et faire une redirection en javascript, tu pourrais utiliser la fonction header('Location:post.php') pour retourner sur ton formulaire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Dorsy
Invité n'ayant pas de compte PHPfrance

04 avr. 2007, 19:47

Bon voila le nouveau code:

Code : Tout sélectionner

<? $quand = date("d M Y H:i:s"); //Temps $fp = fopen("logz.log","a+"); //Ouverture ou création du fichier fputs($fp, "| <a href='mailto:$email'> htmlentities($_POST['pseudo']) </a> a posté le $quand et il a écrit<br> htmlentities($_POST['commentaire'])<p>"); fclose($fp);//Ecriture et fermeture du fichier header('Location:form.php') ?>
La redirection fonctionne bien,
Seulement quand je veux poster un message cela ne fonctionne pas, ca marque:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/135/sdb/3/d/.../Livre/enreg.php on line 5
C'est donc cette ligne modifié qui deconne, Pourquoi???
Merci d'avance ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 avr. 2007, 08:36

Quelques petites remarques :

- pense à utiliser le tag [ php ] pour spécifier du code php, en couleur c'est plus lisible ;)
- préfere les tags d'ouverture classique "<?php" aux short tags "<?" ceux-ci sont paramétrable au niveau du serveur, mais ne seront pas toujours activés :)
- ajoute un retour à la ligne avec \n dans ton fichier, ca le rendra plus lisible si tu as besoin de l'éditer ;)
- nota : si tu changes le mode d'ouverture en append, tu vas compléter le fichier à chaque fois et non pas l'écraser à chaque fois (c'est peut être ce que tu souhaites ceci dit :))
- sors tout ce qui est variable et fonction de tes chaines :
fputs($fp, "| <a href='mailto:".$email."'> " . htmlentities($_POST['pseudo']) 
  ." </a> a  posté  le ". $quand 
  ." et il a écrit<br> ." htmlentities($_POST['commentaire']) ."<p>\n"); 
- et enfin concernant ton erreur, il s'agit d'une parse error, donc erreur de syntaxe, peut être de parenthèses mal équilibrées, une chaine mal fermée, une ligne d'instruction non terminée... en l'occurence, qu'est ce que l'on met toujours à la fin d'une ligne en php ? :)
header('Location:form.php') ;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Dorsy
Invité n'ayant pas de compte PHPfrance

05 avr. 2007, 09:00

c'est toujours moi,
Donc j'ai mdifié en rajoutant un . apres les commentaires
Car cela me faisait toujours une erreur...
donc ca fonctionne mais maintenant ca ne m'affiche pas les commentaires,
ou est ce que j'ai fait l'erreur?

Merci

Dorsy
Invité n'ayant pas de compte PHPfrance

05 avr. 2007, 09:04

Désolé de polluer le forum...

Mais j'ai trouvé mon erreur, j'avais ecrit commentaire au lieu de commentaires.

En tout cas merci de votre aide et de votre sympathie ;)

Eléphant du PHP | 170 Messages

05 avr. 2007, 09:16

Un petit complément d'info :
header('Location: form.php') ;
Sans oublier l'espace après les :

Même si les navigateurs acceptent une url relative, une url absolue est préférable pour respecter le protocole HTTP/1.1
header('Location: http://lesite.ext/form.php');
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Dorsy
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 08:11

merci encore a tous de votre aide,

Au moins ca donne envie de se mettre au php :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 08:28

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...