Methode POST

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 : Methode POST

Re: Methode POST

par AB » 21 avr. 2010, 00:20


Salut AB, pourquoi n'utilises tu pas empty et/ou isset pour tester les variables ?
Ex.: if($Message=="") { ==> if (empty ($Message)) {

A+
Parce que j'ai repris le maximum du code initial, c'est à dire j'ai voulu faire le moins de modifs possible pour qu'il soit fonctionnel mais en organisant mieux la structure. Ainsi SpeedHunter qui débute en php voit mieux la progression.

Mais effectivement on pourrait faire un peu mieux en faisant
//...
$Nom=trim($_POST['Nom']);
$Prenom=trim($_POST['Prenom']);
$Message=trim($_POST['message']);
//...
if(empty ($Message) || empty ($Prenom) || empty ($Nom)) { 
Et aussi plutôt que fopen fwrite fclose, avec php5 on peut faire Exemple 2 du manuel
$file = 'people.txt';
// Une nouvelle personne à ajouter
$person = "Jean Dupoond\n";
// Ajoute le contenu de la variable $person au fichier designé par la variable $file.
file_put_contents($file, $person, FILE_APPEND);

Re: Methode POST

par visualight » 20 avr. 2010, 23:26

En reprenant ton code, un exemple mieux structuré :
<?php                               

if (isset($_POST['ecriture'])) 
{

$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$Message=$_POST['message'];
$date =date("d-m-Y");
$heure =date("H:i");

$alerte = null;

if (($Nom=="")||($Prenom=="")||($Message==""))
  {
      if($nom=="") 
     {
     $alerte .= "Veuillez saisir le nom de l'utilisateur<br />";
     }
     
    if($prenom=="") 
    {
     $alerte .= "Veuillez saisir le prénom de l'utilisateur<br />";
     }

     if($Message=="")
     {
     $alerte .= "Veuillez saisir le message<br />";
      }
  }
else
 {
    $Fichier = fopen('C:\Program Files\EasyPHP-5.3.2\test.txt',"a");
    fwrite($Fichier, "\n");
    fwrite($Fichier,"$Nom|$Prenom|$Message|$date|$heure"); // on écrit les donnees
    fclose($Fichier);
  }
}

?>
<html>
<body>   

<form method="post" action="#">
Nom :     <input type="text" name="Nom" ><br>
Prenom  : <input type="text" name="Prenom"><br> 
Message : <textarea name="message" rows="4" cols="25">
Votre message ici.
</textarea><br>
<input type="submit" name="ecriture" value="Ecrire">
<input type="submit" name="lecture" value="Lire">
</form>

<?php if (isset($alerte)) echo '<div>'.$alerte.'</div>';?>
</body>
</html>

Salut AB, pourquoi n'utilises tu pas empty et/ou isset pour tester les variables ?
Ex.: if($Message=="") { ==> if (empty ($Message)) {

A+

Re: Methode POST

par SpeedHunter » 20 avr. 2010, 23:20

Merci bien, je comprends mieux à présent. :P

Re: Methode POST

par AB » 20 avr. 2010, 20:41

En reprenant ton code, un exemple mieux structuré :
<?php                               

if (isset($_POST['ecriture'])) 
{

$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$Message=$_POST['message'];
$date =date("d-m-Y");
$heure =date("H:i");

$alerte = null;

if (($Nom=="")||($Prenom=="")||($Message==""))
  {
      if($nom=="") 
     {
     $alerte .= "Veuillez saisir le nom de l'utilisateur<br />";
     }
     
    if($prenom=="") 
    {
     $alerte .= "Veuillez saisir le prénom de l'utilisateur<br />";
     }

     if($Message=="")
     {
     $alerte .= "Veuillez saisir le message<br />";
      }
  }
else
 {
    $Fichier = fopen('C:\Program Files\EasyPHP-5.3.2\test.txt',"a");
    fwrite($Fichier, "\n");
    fwrite($Fichier,"$Nom|$Prenom|$Message|$date|$heure"); // on écrit les donnees
    fclose($Fichier);
  }
}

?>
<html>
<body>   

<form method="post" action="#">
Nom :     <input type="text" name="Nom" ><br>
Prenom  : <input type="text" name="Prenom"><br> 
Message : <textarea name="message" rows="4" cols="25">
Votre message ici.
</textarea><br>
<input type="submit" name="ecriture" value="Ecrire">
<input type="submit" name="lecture" value="Lire">
</form>

<?php if (isset($alerte)) echo '<div>'.$alerte.'</div>';?>
</body>
</html>

Re: Methode POST

par SpeedHunter » 20 avr. 2010, 19:40

Oui en effet, ce serait mieux.
Mais comment faire pour que cela soit bon?
Dois-je les déclarer autre part?

Re: Methode POST

par AB » 20 avr. 2010, 19:04

Comme l'a dit stealth35 ces variables n'existent pas tant que tu n'as pas envoyé le formulaire.

Au passage le if (isset($_REQUEST['ecriture'])) c'est vraiment le moins sécurisé et le moins fiable que l'on puisse faire.
Pourquoi pas if (isset($_POST['ecriture'])) ?

Re: Methode POST

par stealth35 » 20 avr. 2010, 18:36

parce que POST['Nom'] n'existe pas
$Nom = isset($_POST['Nom']) ? $_POST['Nom'] : ''; 

Methode POST

par SpeedHunter » 20 avr. 2010, 18:29

Bonjour je commence le php et j'ai un problème avec la méthode post.
Je ne comprends pas pourquoi mon code ne marche pas, j'espère que vous pourrez m'éclairer.

Merci!

Code : Tout sélectionner

<html><body> <form method=POST action="message_fichier.php"> Nom : <input type="text" name="Nom" ><br> Prenom : <input type="text" name="Prenom"><br> Message : <textarea name="message" rows="4" cols="25"> Votre message ici. </textarea><br> <input type="submit" name="ecriture" value="Ecrire"> <input type="submit" name="lecture" value="Lire"> <body> <?php $Nom=$_POST['Nom']; $Prenom=$_POST['Prenom']; $Message=$_POST['message']; $date =date("d-m-Y"); $heure =date("H:i"); $Fichier = fopen('C:\Program Files\EasyPHP-5.3.2\test.txt',"a"); if (isset($_REQUEST['ecriture'])) { if (($Nom=="")||($Prenom=="")||($Message=="")){ if($nom=="") { echo "Veuillez saisir le nom de l'utilisateur<BR>\n"; } if($prenom=="") { echo"Veuillez saisir le prénom de l'utilisateur<BR>\n"; } if($Message==""){ echo "Veuillez saisir le message<BR>\n"; } } fwrite($Fichier, "\n"); fwrite($Fichier,"$Nom|$Prenom|$Message|$date|$heure"); // on écrit les donnees fclose($Fichier); } ?> </body> </form></body></html>
Il apparait que :

Notice: Undefined index: Nom in C:\Program Files\EasyPHP-5.3.2\www\PHP ES\message_fichier.php on line 14

Notice: Undefined index: Prenom in C:\Program Files\EasyPHP-5.3.2\www\PHP ES\message_fichier.php on line 15

Notice: Undefined index: message in C:\Program Files\EasyPHP-5.3.2\www\PHP ES\message_fichier.php on line 16

Tout mes autres programmes fonctionnent et là je ne vois vraiment pas.... :|
Merci d'avance!