formulaire via PHP

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 : formulaire via PHP

par Lpu8er » 06 août 2005, 21:22

Autre alternative: la balise <meta>, avec un petit attribut refresh et le lien de page.


Lpu8er

par Cyrano » 06 août 2005, 18:28

Pas obligatoires, mais très utiles pour la validation en JavaScript ou encore les styles CSS.

par Manio 54 » 06 août 2005, 08:17

Dans ton formulaire les id sont-ils vraiment indispensables ?

par Guimetz » 05 août 2005, 16:31

Merki bien, je vais fouiner du côté de header()... :wink:

par Cyrano » 05 août 2005, 16:16

Dans ton formulaire, tu as oublié les crochets : name="je_souhaite[]" et non name="je_souhaite".

Pour la redirection, si tu as déjà envoyé des données vers le navigateur, tu peux utiliser un JavaScript window.location... mais si tu n'as encore rien envoyé, tu peux le faire en PHP avec header();

par Guimetz » 05 août 2005, 16:09

Merci à toi Cyrano!

Alors j'ai un peu avancé, je te redonne le HTML car toutes petites modifs de noms d'occurences:
<form action="formulaire.php" method="post" name="formulaire" id="formulaire">
   <fieldset><legend>Votre entreprise:</legend>
        <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50">
         <input name="ville" type="text" id="ville" size="40" maxlength="50">
         <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50">
         <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea>
   </fieldset>
			 
   <fieldset>
      <input name="je_souhaite" type="checkbox" id="je_souhaite" value="avis_sans _engagements">
      <input name="je_souhaite" type="checkbox" id="je_souhaite" value="en_savoir_plus">
   </fieldset>
			 
   <fieldset>
      <input name="contact" type="checkbox" id="contact" value="email">
      <input name="email" type="text" id="email" size="40" maxlength="50">
      <input name="contact" type="checkbox" id="contact" value="telephone">
      <input name="telephone" type="text" id="telephone" size="40" maxlength="50">
      <input name="ligne_directe" type="text" id="ligne_directe" size="40" maxlength="50">
   </fieldset>
      <input type="submit" name="Submit" value="Envoyer">
</form>
Et voici le fameux code:
<? 
/*J'identifie les variables*/ 
$prenom = trim($_POST["personne"]); 
$raison_sociale = trim($_POST["raisonSociale"]); 
$adresse = trim($_POST["adresse"]); 
$ville = trim($_POST["ville"]); 
$codepostal = trim($_POST["codePostal"]); 
$commentaire = trim($_POST["codePostal"]);

$email = trim($_POST["email"]);
$telephone = trim($_POST["telephone"]);

/*j'affiche les résultats du formulaire*/ 
 
echo "son prenom: ". $prenom; 
echo "sa raison sociale: ". $raisonSociale; 
echo "son adresse: ". $adresse; 
echo "Sa ville: ". $ville; 
echo "son code postal: ". $codepostal; 
echo "son commentaire: ". $commentaire;
echo "ligne directe: ". &ligne_directe;

/*je passe au checkboxes*/
if(!empty($_POST["je_souhaite"])) { ?>
   Vous avez choisi que l'on vous réponde par  -
   <b>
   <?
   for ($i = 0; $i < count($_POST["je_souhaite"]); $i++)
      echo $_POST["je_souhaite"][$i]." - ";
   ?>
   </b>
<? }

/*checkboxes voisines de champs de saisie*/
if(!empty($_POST["contact"])) { ?>
   Vous avez choisi que l'on vous réponde par  -
   <b>
   <?
   for ($i = 0; $i < count($_POST["contact"]); $i++)
      echo $_POST["contact"][$i]." - ";
	    <br> echo "votre email: ". $email;
        <br> echo "votre telephone: ". $telephone;
		<br> echo "votre ligne directe: ". &ligne_directe;
   ?>
   </b>
<? }
Alors selon toi c'est bon pour les checkboxes? Sâchant que pour la 2e série pour chaque checkbox cochée, on a un champ de saisie a côté?
Une dernière chose: je souhaite que à condition que l'utilisateur ai répondu au moins à un champ, ça renvoie à une page HTML disant en gros:
"Merci d'avoir remplit ce formulaire, etc..."
Sinon on a:
"Vous devez remplir le formulaire même partiellement."

Pourrais tu once again me mettre sur la voie stp?

par Cyrano » 05 août 2005, 12:54

Pour le checkbox, il faudrait utiliser des [] pour le nom des champs s'ils sont les mêmes pour plusieurs et tu récupères un tableau indexé. Ensuite, n'éparpilles pas ton code aux quatre vents, c'est illisible:
<form action="formulaire.php" method="post" name="formulaire" id="formulaire">
  <fieldset>
    <legend>Votre entreprise:</legend>
    <input name="personne" type="text" id="personne" size="40" maxlength="50">
    <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50">
    <input name="adresse" type="text" id="adresse" value="" size="40" maxlength="50">
    <input name="ville" type="text" id="ville" size="40" maxlength="50">
    <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50">
    <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea>
  </fieldset>
  <fieldset>
    <legend>Je souhaite:</legend>
    <input name="je_souhaite[]" type="checkbox" id="je_souhaite" value="beneficier">
    <input name="je_souhaite[]" type="checkbox" id="je_souhaite" value="en_savoir">
  </fieldset>
  <fieldset><legend>Je souhaite être contacté par:</legend>
    <input name="contact" type="checkbox" id="contact" value="email">
    <input name="email" type="text" id="email" size="40" maxlength="50">
    <input name="contact" type="checkbox" id="contact" value="telephone">
    <input name="telephone" type="text" id="telephone" size="40" maxlength="50">
    <input name="textfield" type="text" size="40" maxlength="50">
  </fieldset>
  <input type="submit" name="Submit" value="Envoyer">
</form>
Pour ton bout de code PHP, afin d'éviter de récupérer des champs vides ou qui auraient un espace, la première chose à faire es de supprimer les espaces surnuméraires:
<?
/*J'identifie les variables*/
$prenom = trim($_POST["personne"]);
$raison_sociale = trim($_POST["raisonSociale"]);
$adresse = trim($_POST["adresse"]);
$ville = trim($_POST["ville"]);
$codepostal = trim($_POST["codePostal"]);
$commentaire = trim($_POST["codePostal"]);

/*j'affiche les résultats du formulaire*/
echo "son prenom: ". $prenom;
echo "sa raison sociale: ". $raisonSociale;
echo "son adresse: ". $adresse;
echo "Sa ville: ". $ville;
echo "son code postal: ". $codepostal;
echo "son commentaire: ". $commentaire;
?>
La fonction trim() fait ceci. Ensuite tu fais effectivement une alternative if($val == "") pour déterminer si le champ est vide ou non.

formulaire via PHP

par Guimetz » 05 août 2005, 11:45

Salut à tous,

Voilà j'ai essayé ici et là plusieurs tuto qui décrivent comment envoyer le contenu d'un formulaire(HTML) à une boite e-mail, et j'ai commencé à coder le truc, mais mes connaissances sont trop limitées en PHP (voire même nulles). Alors si vous pouviez me donner un micro coup de pouce...

Dans mon formulaire j'ai 6 champs de texte de saisie, 2 checkboxes,
et 2 autres dont chacune permet la saisie d'un texte dans un champ de texte de saisie:


Code : Tout sélectionner

<form action="formulaire.php" method="post" name="formulaire" id="formulaire"> <fieldset><legend>Votre entreprise:</legend> <input name="personne" type="text" id="personne" size="40" maxlength="50"> <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50"> <input name="adresse" type="text" id="adresse" value="" size="40" maxlength="50"> <input name="ville" type="text" id="ville" size="40" maxlength="50"> <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50"> <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea> </fieldset> <fieldset> <legend>Je souhaite:</legend> <input name="je_souhaite" type="checkbox" id="je_souhaite" value="beneficier"> <input name="je_souhaite" type="checkbox" id="je_souhaite" value="en_savoir"> </fieldset> <fieldset><legend>Je souhaite être contacté par:</legend> <input name="contact" type="checkbox" id="contact" value="email"> <input name="email" type="text" id="email" size="40" maxlength="50"> <input name="contact" type="checkbox" id="contact" value="telephone"> <input name="telephone" type="text" id="telephone" size="40" maxlength="50"> <input name="textfield" type="text" size="40" maxlength="50"> </fieldset> <input type="submit" name="Submit" value="Envoyer"> </form>
Et voici ma maigre tentative pour les champs de texte de saisie:
<body>
<?
/*J'identifie les variables*/
$prenom = $_POST["personne"];
$raison_sociale = $_POST["raisonSociale"];
$adresse = $_POST["adresse"];
$ville = $_POST["ville"];
$codepostal = $_POST["codePostal"];
$commentaire = $_POST["codePostal"];

/*j'affiche les résultats du formulaire*/
echo "son prenom: $prenom";
echo "sa raison sociale: $raisonSociale";
echo "son adresse: $adresse";
echo "Sa ville: $ville";
echo "son code postal: $codepostal";
echo "son commentaire: $commentaire";
?>

</body>
Pour les checkboxes je crois qu'il faut que j'utilise une instruction en boucle du type
for (i=0,i<=...,i++){
...
}
et il faut éviter de prendre en compte les chaînes de caractères vides, pour éviter des erreurs dans le code.

D'où l'utilisation de
if(la_variable==""){
....
}

Sâchant que j'ai donné des noms d'occurences aux objets de mon formulaire comment s'il vous plait mettre en place mon code?
Merci d'avance. :wink: