Problème de vérification d'envoi de message via site

Fermé
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 - Modifié par jimmy1120112 le 27/04/2014 à 21:26
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 - 8 mai 2014 à 08:28
Bonjour à tous,

Je viens vers ceux qui connaissent mieux que moi concernant le php...

Je voudrais savoir pourquoi un message parviens à être envoyé avec ce type de vérification :
if (!$name) $errors[count($errors)] = 'Entrez votre nom'; 
if (!$email) $errors[count($errors)] = 'Entrez votre email.';
if (!$numero) $errors[count($errors)] = 'Entrez votre numero.';
if (!$comment) $errors[count($errors)] = 'Entrez votre texte.';

if (!$errors) {

Alors qu'avec ce type de vérification, il est impossible de l'envoyé :
if ( isset($_POST['hidden']) && !empty($_POST['hidden'])) {
$errors[] = "désolé vous êtes un robot";}

if (!$name) $errors[count($errors)] = 'Entrez votre nom';
if (preg_match('/^[a-zA-Z\-\ ]{2,30}$/', $name)) {
$errors[] = "Nom invalide";}

if (!$email) $errors[count($errors)] = 'Entrez votre email.';
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailErr = "Mail invalide";}

if (!$numero) $errors[count($errors)] = 'Entrez votre numero.';
if (preg_match('^[0-9]{9,13}[0-9]$', $numero)) {
$errors[] = "numéro invalide";}

if (!$comment) $errors[count($errors)] = 'Entrez votre texte.';

if (!$errors) {

Est-ce que j'aurais mal rédigé le codage ?

Vous verrez la première vérification est
if ( isset($_POST['hidden']) && !empty($_POST['hidden'])) {
$errors[] = "désolé vous êtes un robot";}

Cette vérification est pour vérifier si le champs invisible sur le site est bel et bien vide, car depuis quelques temps je n'arrête pas de recevoir des mails de publicité via mon formulaire donc j'emploie cette astuce pour évité un captcha à mes visiteurs.

Il y a une vérification avec un fichier js qui ce fait aussi mais elle ne pose pas de problème...

Merci beaucoup d'avance !
Cdt

Cordialement.
Jim
A voir également:

5 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 28/04/2014 à 12:20
Salut,

Premièrement les deux conditions suivantes sont identiques :

if (isset($_POST['hidden']) && !empty($_POST['hidden']))
équivaut à
if (!empty($_POST['hidden']))


La fonction empty vérifie également l'existence de la variable, tu peux donc simplifier tes tests en utilisant uniquement empty.

L'erreur vient surement du nom de ton input. La valeur 'hidden' doit correspondre au type de l'input si il s'agit d'un champ caché.
Dans ton formulaire :
<form>
    <input type="hidden" name="antispam" value="1" />
</form>


dans ton traitement php :
if (!empty($_POST['antispam']))


Bonne journée
0
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 54
Modifié par jimmy1120112 le 29/04/2014 à 06:25
Bonjour et merci d'avoir répondu au sujet,

J'ai modifié ce que vous m'avez conseillé mais malheureusement le message ne parviens toujours pas à être envoyé.

Bizarrement si je retire tout le reste pour n'ajouté que la vérification du numéro de téléphone par exemple, cela suffit pour que le message ne soit pas envoyé.

Je ne sais donc pas si c'est vraiment le code en lui même qui dérange ou la façon dont à été fait la structure qui ne permet pas de supporter ces vérifications...

Ce n'est que mon sentiment car en php je touche un peu mais pas suffisamment pour détecter et corriger une erreur...

Merci encore !

Cordialement.
Jim
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
29 avril 2014 à 14:06
Si toutes tes vérifications fonctionnent sauf pour le numéro de téléphone, c'est surement que celui-ci ne correspond pas à l'expression régulière définie (preg_match).

Essaye sans l'expression régulière pour voir si le problème vient bien de là, si oui il faudra corriger cette expression.
0
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 54
30 avril 2014 à 15:59
Bonjour Pitet, je test ce soir et je vous tien au courant, merci !
0
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 54
Modifié par jimmy1120112 le 30/04/2014 à 22:16
Re-bonjour Pitet ;)

Je viens d'essayé comme ceci :
if ( isset($_POST['hidden']) && !empty($_POST['hidden'])) {
$errors[] = "désolé vous êtes un robot";}

if (!$name) $errors[count($errors)] = 'Entrez votre nom';
if ('/^[a-zA-Z\-\ ]{2,30}$/', $name) {
$errors[] = "Nom invalide";}

if (!$email) $errors[count($errors)] = 'Entrez votre email.';
if ("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email) {
$emailErr = "Mail invalide";}

if (!$numero) $errors[count($errors)] = 'Entrez votre numero.';
if ('^[0-9]{9,13}[0-9]$', $numero) {
$errors[] = "numéro invalide";}

if (!$comment) $errors[count($errors)] = 'Entrez votre texte.';

if (!$errors) {

Mais le problème est le même, en le modifiant avec DW (DreamWeaver) il m'a indiqué que ces lignes comportait une erreur. Peut-être l'ai-je mal rédigé ?

Attention que j'ai bien dit "par exemple" donc que je ne mette que la vérification pour le nom ou mail ou nom et mail ou autre combinaison le problème est le même du moment que le code simple est modifié.

Merci encore pour vos réponses, je continu de creuser de mon coté.

Cordialement.
Jim
0
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 54
3 mai 2014 à 10:34
Up ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
5 mai 2014 à 09:29
Oui tu as une erreur de syntaxe : tu as oublié d'utiliser la fonction preg_match dans tes conditions :
if ('/^[a-zA-Z\-\ ]{2,30}$/', $name)

à remplacer par
if (preg_match('/^[a-zA-Z\-\ ]{2,30}$/', $name))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jimmy1120112 Messages postés 619 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 7 décembre 2014 54
8 mai 2014 à 08:28
Merci pitet,

Désoler, j'avais mal compris.
Je pensais que c'était justement preg_match qui dérangeais.

En reprenant le chemin depuis le début, dite moi si je me trompe mais voici quelques points qui me titille :

1) Je pense que si le nom dans la form du fichier html n'est pas le même que dans le le fichier php d'envoi, la vérification ne se fait pas et donc erreur.

2) Dans la récupération des données il n'y a pas ce champs d'indiquer, selon moi, ci les données ne sont pas récupéré la vérification ne peux s'effectuer donc erreur.

3) Un autre point mais qui viens de m'échapper... Je vous dirais si il me reviens.

Pour pouvoir savoir ou j'en suis et pourquoi ça ne fonctionne pas voici les code :

1) La form dans le fichier html :
    <form method="post" action="process.php" class="form">
          <table>
			<div class="nom">
				<label for="nom">Ne remplissez pas ce champs, ceci est un test anti-spam.</label>
				<input type="text" name="prenom" id="nom"  onblur="verifNom(this)"/>
			</div>
            <tr class="element">
              <td><label>Nom</label></td>
              <td class="input"><input type="text" name="name" /></td>
            </tr>
            <tr class="element">
              <td><label>Email</label></td>
              <td class="input"><input type="text" name="email" /></td>
            </tr>
            <tr class="element">
              <td><label>Téléphone</label></td>
              <td class="input"><input type="text" name="numero" /></td>
            </tr>
            <tr class="element">
              <td><label>Message</label></td>
              <td class="input"><textarea name="comment" class="text textarea" ></textarea></td>
            </tr> 
          </table>
       <div class="element">
       	<div class="clearfix"></div>
        <input type="submit" id="submit" value="Envoyer"/>
        <div class="loading"></div>
       </div>
       <div class="error"></div>
       <div class="nonenvoyé"></div>
       </form>


2) Le code du fichier php avec la récupération de données :
//Récupération des données 
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name']; 
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email']; 
$numero = ($_GET['numero']) ?$_GET['numero'] : $_POST['numero']; 
$comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment']; 

if ($_POST) $post=1; 

//Validation simple HTML
if ( isset($_POST['hidden']) && !empty($_POST['hidden'])) {
    $errors[] = "désolé vous êtes un robot";}
 
if (!$name) $errors[count($errors)] = 'Entrez votre nom';
if (preg_match('/^[a-zA-Z\-\ ]{2,30}$/', $name)) {
    $errors[] = "Nom invalide";}
 
if (!$email) $errors[count($errors)] = 'Entrez votre email.'; 
if (preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
 $emailErr = "Mail invalide";}
 
if (!$numero) $errors[count($errors)] = 'Entrez votre numero.';  
if (preg_match('^[0-9]{9,13}[0-9]$', $numero)) {
    $errors[] = "numéro invalide";}
 
if (!$comment) $errors[count($errors)] = 'Entrez votre texte.';  
 
if (!$errors) {


Merci de votre présence, je continu de chercher et si quelque chose change je vous le poste de suite.

Merci encore !
0