IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Analyse de champs de formulaire


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut Analyse de champs de formulaire
    Bonjour,

    J'ai un formulaire en post avec un bouton submit qui envoi des donné de champ en e-mail et je souhaiterai que si l'utilisateur clique sur le bouton submit et qu'il n'a pas tout rempli les champs rien ne se passe, car j'ai utilisé la fonction required/ mais pour des navigateur un peu trop ancien ça ne prend pas en compte et donc envoi 0 valeur des champs en e-mail.

    Voici donc un extrait de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    form name="informations" action="formulaire.php" method="post"> 
    	<p>
    		<label for="societe">Société :</label>
    		<input type="text" name="societe" id="societe" autofocus required/>
    		<br />
    		<br />
    		<label for="nom">Nom :</label>
    		<input type="text" name="nom" id="nom" required/>
    		<br />
    		<br />			
    		<input type="submit" name="valider" value="Ok" 
     
    <?php	
    if(isset($_POST['valider']))
    {		
    	$nom = $_POST['nom'];
    	$societe = $_POST['societe']; 
    	$to = "monmail@monmail.com";	
    	$subject = "M. ou Mme" . $nom . "de la société" . $societe;
    	$message = "Ce message apparait car une personne a fait une demande";
    	$from = "noreply@dde.com"; 
    	$headers = "From:" .$from; 			
    	mail($to,$subject,$message,$headers);			
    }	
    ?>
    Quelqu'un pourrait il m'aider, merci

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut


    Attribut required ou pas, tu dois toujours vérifier côté serveur la présence et le bon format des données reçues, c'est le B.A.BA de la gestion des formulaires et accessoirement de la sécurité !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Je suis entièrement d'accord, serait il possible d'avoir une réponse qui m'aide d'avantage

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    2 choses, la première on t'a répondu pour la partie serveur. a toi de faire des tests et de nous montrer éventuellement ton code si tu rencontres des soucis (par ce que là en dehors de faire nom = nom, adresse = adresse .... et pif paf c'est partie tu fait pas grand chose)
    donc améliorer d'une part ton code php.

    2eme choses, il faut bien te dire que la vérification côté serveur veux forcément dire que ton formulaire à été envoyé donc si tu souhaite que rien ne se passe réellement il faudrait éventuellement en complément de ton test en php ajouter de la vérification de formulaire en javascript en amont.

    donc en gros sur un onsubmit() fare la vérification si tout est ok alors le formulaire part si rien ne va tu affiche un message d'erreur ou autre.

    donc vérification si uniquement alphanumérique pour les champs de regex pour l'adresse mail etc ....
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Par défaut
    Tu peux faire un If isset pour chaque donnée récupérer
    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset ($_POST['societe'])) $societe = $_POST['societe'];
    				else		$societer="";
    Après je ne sais pas si c'est cela que tu cherche.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    En règle générale, un !empty() est préférable à un isset().
    Ensuite, il faut aussi vérifier que chaque paramètre reçoit bien un format cohérent.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Merci pour vos réponses, je vais travailler sur le !empty().

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Voici donc mon code qui ne fonctionne pas avec le !empty().

    Je vous prie de bien vouloir excuser ma noob attitude et oui je débute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php	
    			if (empty($POST['societe']) or empty($POST['nom']) or empty ($POST['n°serie']) or empty ($POST['e-mail']))
                {
    			echo "Veuillez remplir tout les champs";
    			}
                else {
                (isset($_POST['valider']))
     
    			$nom = $_POST['nom']; 
    			$societe = $_POST['societe']; 		
    			$to = "mail@mail.com";	 
    			$subject = "Demande de code par M. ou Mme " . $nom . " de la société " . $societe; 
    			$message = "Ce message apparait car une personne a fait une demande de code.";
    			$from = "noreply@dde.com"; 
    			$headers = "From:" .$from;
     
    			mail($to,$subject,$message,$headers);			
    			}
    			?>
    Si possible de savoir ce qui est incorrect.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu ne peux mettre une condition directement sur un else, il faut que tu utilises un else if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (empty(...)) {
    // ici traitement des champs vides
    } else if (isset($_POST['valider'])) {
    //
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Merci Celira pour ta réponse, j'ai encore une erreur quelques part je dois sans doute mal utilisé le "empty()".
    Si je peux encore embêter quelqu'un pour me dire ce qui ne va pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php	
    $nom = $_POST['nom'];
    $societe = $_POST['societe'];
    $n°serie = $_POST['n°serie'];
    $e-mail = $_POST['e-mail'];
    if (empty($societe)) or (empty($nom)) or (empty ($n°serie)) or empty ($'e-mail'))
    {
    	echo "Veuillez remplir tout les champs";
    }
    else if (isset($_POST['valider']))
    {   
    	$to = "mail@mail.com";	 
    	$subject = "Demande de code par M. ou Mme " . $nom . " de la société " . $societe; 
    	$message = "Ce message apparait car une personne a fait une demande de code.";
    	$from = "noreply@dde.com"; 
    	$headers = "From:" .$from;		
    	mail($to,$subject,$message,$headers);			
    }
    ?>

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il existe des règles concernant les noms de variables...

    A titre d'exemple, pour PHP, $e-mail ça correspond à la variable $e moins la constante mail !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Merci reste plus qu'a renommé tout ça. En espérant qu'il n'y avait que cette faute de nom de variable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester si un champ de formulaire est vide
    Par pekka77 dans le forum ASP
    Réponses: 3
    Dernier message: 28/06/2005, 17h18
  2. Champ de formulaire "file"
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/05/2005, 14h56
  3. [Word] Création d'un champs de formulaire
    Par Oberown dans le forum Word
    Réponses: 2
    Dernier message: 18/04/2005, 12h10
  4. Réponses: 2
    Dernier message: 28/10/2004, 17h54
  5. Probleme avec les champs du formulaire
    Par Red_devils dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 29/09/2004, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo