Conditions dans un formulaire 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 : Conditions dans un formulaire php

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 18:40

Je n'ai vue aucune erreur de type: Headers already sent by...
Ce qui laisse a penser que ce n'est pas un problème exclusivement de header...

L'utilisatation de fichier wp, laisserait penser que se sont des fichiers Wordpress.
Donc la meilleur chose à faire à mon avis est:
- soit si il utilise Wordpress -> d'aller sur le forum spécialisé dans ce domaine
- soit ne pas utiliser ce formulaire qui n'est pas approprié en dehors de Wordpress...

Sinon, l'information sur l'utilisation de ob_start()... est toujours intéressante :wink:

Re: Conditions dans un formulaire php

par FuZZyLine » 07 oct. 2009, 17:18

Salut,
Je suis tout a fait d'accord, l'explication m'a convaincue.
Mais concrètement, si on se base sur le wp-form ci dessus, en code php, ça donne quoi ? Je note ça où, comment ?????
Je ne peux inventer des lignes de code que je ne maitrise pas.
(Disons, que j'ai fait 80% du boulot en créant le formulaire et le wp-form... mais les 20% qui restent me bloquent).
Merci pour votre compréhension.
Quand Header est utilisé il ne faut en aucun cas que "quelque chose" soit envoyé donc il
te faut utiliser un tampon (ou buffer) Tu as la série des ob_ pour le faire :
http://fr2.php.net/manual/fr/book.outcontrol.php Il faut juste faire attention à la pile mais
sinon c'est assez génial et correcspond tout à fait à ce que tu veux faire.

@+ bon code ;)

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 15:23

Le mieux c'est de poser cette question ici:
http://www.wordpress-fr.net/support/

Mes explications étaient générales mais non spécifiques a Wordpress.

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 15:14

Je comprends le principe, mais je sais pas faire.

Merci quand même.
Et bonne continuation.

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 15:09

Par contre, si ton script d'envoi de mail est extérieur à ton formulaire mail -> sans redirection il ne retombera pas sur le formulaire en cas d'erreurs.

Le mieux est de tout rassembler si cela est possible ou au pire, mais seulement dans ce cas -> utiliser une redirection mais en direction du formulaire...

C'est pour cette raison, que dans les formulaires mails, en général, le formulaire et le script sont dans le même script...
Ou dans un fichier include() ou require()...
C'est bien plus simple et logique en fait.

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 15:04

Je suis tout a fait d'accord, l'explication m'a convaincue.
Mais concrètement, si on se base sur le wp-form ci dessus, en code php, ça donne quoi ? Je note ça où, comment ?????

Je ne peux inventer des lignes de code que je ne maitrise pas.

(Disons, que j'ai fait 80% du boulot en créant le formulaire et le wp-form... mais les 20% qui restent me bloquent).

Merci pour votre compréhension.

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 14:59

Alors la redirection dans les mails est surtout utilisés à la base pour protéger du Refresh ( réactualiser la page et donc ré-envoyer le mail d'un simple clic).
Cela est pratique quand le mail est envoyé.

Si le mail n'est pas envoyé, la redirection perd son intérêt.
Donc redirection pour remerciements -> oui
Redirection en cas d'erreurs -> non

Comment faire?
Un simple echo personnalisé avec une explication de l'erreur, tout en laissant l'utilisateur sur la même page, il peut ainsi corriger son erreur et essayer a nouveau d'envoyer le mail, au lieu de devoir revenir sur la page du formulaire après la redirection et tout refaire pour juste une malheureuse faute de frappe...

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 14:52

En fait, j'ai une page avec le formulaire.
Si la personne rempli correctement, elle automatiquement redirigée vers une autre page, n°2, remerciements (personnalisées).
Par contre si elle ne rempli pas correctement, elle est automatique redirigée vers une page n°3, vous avez fait une erreur (aussi personnalisée).

Si y a moyen plus simple de faire, je suis preneur. Mais, je ne sais rien du php, ou presque. Et puis, je voudrais ne rien changer au style de la page n°1.

Voilà pourquoi.

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 14:47

Déjà, que l'apporte ta redirection comme avantages?
Tout dépend des raisons de l'utilisation de la redirection...
Donc pourquoi veux tu utiliser une redirection supplémentaire?

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 14:46

Comment faire alors ?

Est-ce que tu (ou quelqu'un) saurais comment le ré ecrire correctement ( en t'aidant du wp-form.php et du formulaire fournit ci-dessus) ?

Désolé de te faire perdre ton temps. Mais je nage.

Merci.

Re: Conditions dans un formulaire php

par Dr@ke » 07 oct. 2009, 14:20

C'est bien ça ?
Il n'y a pas de html avant.
Oui c'est bien ça.
Sauf pour le exit(), le script se terminant juste après la redirection, cela fera office de exit.
Le else sécurise le reste...

Sinon, je ne comprend pas pourquoi tu aimerais utiliser une redirection supplémentaire, car:
- l'utilisateur va perdre toutes les données entrées dans le formulaire pour peut-être juste une faute de frappe.
- ton else te permet déjà de traiter les erreurs d'une façon efficace.
...

[EDIT]
Sinon, j'interviens surtout car ta boucle me parait pas du tout Safe...
Je pense que le soucis dans ton script est la boucle.
Elle incorpore tous les Posts dans le mail même ceux qui n'ont rien avoir avec le formulaire, ce qui rend tout filtrage de données ou presque non efficace...
Même si tu utilises, intelligemment, avant ta boucle:
$message = "";
je dirais plutôt quelle est surtout inutile...

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 14:17

Oups, là j'ai un vrai problème.
En utilisant ces lignes de code, lorsque je valide en appuyant sur Envoyer, j'ai le message suivant :

Parse error: syntax error, unexpected T_ELSE in /home/xxxxxxx/public_html/wp-form.php on line 19

(xxxxxxx étant mon serveur).


Pour faire simple, j'ai employé un fichier wp-form.php ... qui est appelé par le visiteur en cliquant sur Envoyer, et qui donc m'envoie les données en question.

Voici mon wp-form.php complet :

Code : Tout sélectionner

<?php $TO = "<[email protected]>"; $h = "From: " . $TO; $message = ""; If (isset($_POST['nom']) AND isset($_POST['email']) AND isset($_POST['message'])) { while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $subject, $message, $h); Header("Location: http://mapagederemerciements"); Else { header("location: http://mapageerreur"); exit; } ?>
et enfin, le formulaire en question :

Code : Tout sélectionner

<form action="http://monsite/wp-form.php" method="post" id="mailform"> <p> <input name="author" type="text" id="author" size="22" tabindex="1"><label for="author"><small> Nom (requis)</small></label></p> <p> <input name="email" type="text" id="email" size="22" tabindex="2"><label for="email"><small> Mail (ne sera pas rendu public) (requis)</small></label></p> <p> <input name="url" type="text" id="url" size="22" tabindex="3"><label for="website"><small> Website</small></label></p> <p><textarea name="comment" cols="100%" rows="10" style="overflow:hidden" tabindex="4"></textarea><br /> <small> </small><br /> <input name="submit" type="submit" id="submit" value="Envoyer votre message" tabindex="5"></p> </form>
Pour les puristes du CSS, je sais, de ce côté c'est pas terrible, mais ça correspond visuellement à ce que je veux.
Le problème c'est qu'avant n'importe qui pouvait m'envoyer un mail via le formulaire, donc j'ai demandé à ce qu'une condition (champs requis) soit imposée.

Mais là, avec ce que l'on m'a gentillement donné, ça marche toujours pas. :(

Une idée d'ou vient l'erreur ?
Merci.


Un newbee en Php.

Re: Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 12:03

Merci pour la réponse.

Donc, si je comprends bien, je remplace la dernière ligne de code par :

Code : Tout sélectionner

Else { header('location: adresse/de/redirection.php'); exit; }
C'est bien ça ?

Il n'y a pas de html avant.

Re: Conditions dans un formulaire php

par Genova » 07 oct. 2009, 11:52

Salut,
pour faire une redirection procède comme ceci :
header('location: adresse/de/redirection.php');
exit;
Par contre pour que cela marche tu ne dois pas avoir envoyé de code HTML avant.

Conditions dans un formulaire php

par chrisdz » 07 oct. 2009, 11:04

Bonjour,

Quelqu'un pourrait m'aider avec le code qui suit ?
En cliquant sur le bouton Envoyer de mon formulaire, le fichier form.php m'envoie les données. Pas de problèmes d'envoi, ni de réception.

Code : Tout sélectionner

<?php $TO = "<[email protected]>"; $h = "From: " . $TO; $message = ""; If (isset($_POST['nom']) AND isset($_POST['email']) AND isset($_POST['message'])) { while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $subject, $message, $h); Header("Location: http://pagederemerciements.com"); } Else { echo "Vous n'avez pas saisi toutes les informations"; } ?>
Sauf que :
Je voudrais rediriger le visiteur vers une page d'erreur, s'il n'a pas saisi tous les champs correctement, au lieu de l'envoyer vers une page blanche où est seulement indiqué le message "Vous n'avez pas saisi toutes les informations".
En somme, comme pour la page de remerciement, quelles lignes dois-je mettre dans la dernière partie du code ? D'ailleurs, est-ce le bon endroit ?

Code : Tout sélectionner

Else { echo "Vous n'avez pas saisi toutes les informations"; }

J'espère avoir été clair.
Merci d'avance.