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

PHP & Base de données Discussion :

Positionnement d'un script de validation d'une adresse [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut Positionnement d'un script de validation d'une adresse
    Bonjour à toutes et à tous,

    Pour mon formulaire d'adhesion, j'ai crée un script permettant de valider l'adresse email saisie par le futur producteur.
    L'inconvénient est que la validation est sujette au bouton submit du formulaire.
    Lorsque je clique sur le bouton submit l'adresse email est envoyée en base alors que cette dernière est invalide.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <?php
    require_once("inc_connexion.php");	
    	$conn=opendb_conn(); // on se connecte à la Base de données	
    	/* script permettant l'insertion d'un producteur en Base, ce script ne vérifie pas que le login est dejà présent.
    		L'identifiant saisie dans le formulaire d'adhésion correspond à la première lettre du prénom suivi du nom
    		de famille, le tout attenant. Cet identifiant sera le login inséré en Base
    		Il faudra envoyer un mail au producteur inscrit afin de lui communiquer son login et son password après validation
    		de l'unicité du login en base.
    	*/
     
     
    	if(isset($_POST['submit'])) {
     
    		// variables correspondant aux champs présents en base
    		// utilisation de l'opérateur ternaire ?: pour assigner la variable $login de la valeur du champ identifiant du formulaire
    		$login = (isset($_POST['login']))?$_POST['login']:''; 
    		$login=htmlentities(trim($login));
    		$password = (isset($_POST['password']))?$_POST['password']:'';
    		$password = sha1($password);		
    		$nom = (isset($_POST['nom']))?$_POST['nom']:'';
    		$nom = htmlspecialchars($_POST['nom']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$prenom = (isset($_POST['prenom']))?$_POST['prenom']:'';
    		$prenom = htmlspecialchars($_POST['prenom']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$langue = (isset($_POST['langue']))?$_POST['langue']:'';
    		// vérification du contenu du champ téléphone
    		$telephone = (isset($_POST['telephone']))?$_POST['telephone']:'';
    		$telephone = htmlspecialchars($_POST['telephone']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$fax = (isset($_POST['fax']))?$_POST['fax']:'';
    		$fax = htmlspecialchars($_POST['fax']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$site = (isset($_POST['site']))?$_POST['site']:'';
    		$email = (isset($_POST['email']))?$_POST['email']:'';
    		$email  = htmlspecialchars($_POST['email']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$propriete = (isset($_POST['propriete']))?$_POST['propriete']:'';
    		$adresse = (isset($_POST['adresse']))?$_POST['adresse']:'';
    		$cp = (isset($_POST['cp']))?$_POST['cp']:'';
    		$region = (isset($_POST['region']))?$_POST['region']:'';
    		$appellation = (isset($_POST['appellation']))?$_POST['appellation']:'';
    		$appellation = htmlspecialchars($_POST['appellation']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
    		$pays = (isset($_POST['pays']))?$_POST['pays']:'';
     
    		// requête pour l'insertion du producteur en base
    		$req = 
    			"insert into producteurs 
    				values(null,:login,:password,:nom,:prenom,:langue,:telephone,:fax,:site,:email,:propriete,:adresse,:cp,:region,:appellation,:pays,CURDATE())";
     
    		// on prépare le traitement de la requête
    		$stm=$conn->prepare($req);
    		// Tentative d'insertion en base d'un nouveau producteur en utilisant le mode transactionnel
    		// bloc try ... catch()
    		try {			
    			$conn->beginTransaction();			
    			// on associe les marqueurs nommés avec les variables crées plus haut
    			$stm->bindParam(':login', $login, PDO::PARAM_STR);
    			$stm->bindParam(':password', $password, PDO::PARAM_STR);
    			$stm->bindParam(':nom', $nom, PDO::PARAM_STR);
    			$stm->bindParam(':prenom', $prenom, PDO::PARAM_STR);
    			$stm->bindParam(':langue', $langue, PDO::PARAM_STR, 2);
    			$stm->bindParam(':telephone', $telephone, PDO::PARAM_STR);
    			$stm->bindParam(':fax', $fax, PDO::PARAM_STR);
    			$stm->bindParam(':site', $site, PDO::PARAM_STR);
    			$stm->bindParam(':email', $email, PDO::PARAM_STR);
    			$stm->bindParam(':propriete', $propriete, PDO::PARAM_STR);
    			$stm->bindParam(':adresse', $adresse, PDO::PARAM_STR);
    			$stm->bindParam(':cp', $cp, PDO::PARAM_STR,5);
    			$stm->bindParam(':region', $region, PDO::PARAM_STR);
    			$stm->bindParam(':appellation', $appellation, PDO::PARAM_STR);
    			$stm->bindParam(':pays', $pays, PDO::PARAM_STR);			
    			// exécution de la requête
    			$stm->execute();			
    			// on commit
    			$conn->commit();
    			$stm->closeCursor();			
    			print '<div style="color:green">Vous êtes enregistré ... </div>';
    			header( "refresh:3;url=http://localhost/index.php" ); 
    		}catch(PDOException $e) {
    			// on rollback si cela se passe mal
    			$conn->rollback();
    			// on affiche un message d'erreur
    			print "Erreur lors de l'insertion en base !: " . $e->getMessage() . "</br>";
    		}		
    	} //if
    ?>
    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
     
    <?php
    if (isset($_POST['mail']))
    {
        $_POST['mail'] = htmlspecialchars($_POST['mail']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
     
        if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
        {
            echo 'L\'adresse ' . $_POST['mail'] . ' est <strong>valide</strong> !';
        }
        else
        {
            echo 'L\'adresse ' . $_POST['mail'] . ' n\'est pas valide, recommencez !';
        }
    }
    ?>
    Je ne vois pas où placer ce code pour que la validation de l'adhésion ne se fasse que si l'adresse email est correcte.
    Merci d'avance.
    Transact.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    php 5 permet de valider nativement les emails

    http://php.net/manual/fr/filter.filters.validate.php

  3. #3
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Merci pour cette information heretik25 qui allège mon script, cependant je ne vois toujours pas où placer ce script pour que l'enregistrement de l'adhésion ne se fasse que si l'adresse email est valide.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $email_address = "me@example.com";
    if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
      // The email address is valid
    } else {
      // The email address is not valid
    }
    ?>

  5. #5
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    "Le problème " vient du bouton submit qui envoi les données du formulaire; en plaçant le code que tu m'as donné et que j'avais dejà placé cela ne change rien puisque que l'information est "submit".
    Il faudrait un check avant submit sur le bouton du formulaire.

  6. #6
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    [Résolu]
    J'ai modifié le script afin d'effectuer le test avant l'envoi des données du formulaire.
    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
     
    <?php
    /* si la variable submit est définie, on inclus le fichier permettant l'injection SQL 
    	vérifier que le champ submit du formulaire possède l'attribut name="submit"
    */
     
    /** vérification de la validité des valeurs des champs saisis par l'utilisateur **/
    if(isset($_POST['email'])) {
    	if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    		echo $_POST['email'].'<br>'; 
    		var_dump(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL));
    		if (isset($_POST['submit'])) {require_once 'includes/inc_ajoutProducteur.php';}	
    	} else {
    		//var_dump(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)); 
    		print '<div style="color:red">Adresse email invalide ... </div>';
    	}
    }
    ?>
    Merci encore pour votre aide.

    Transact.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2011, 15h26
  2. [RegEx] Validation d'une adresse e-mail
    Par sarah65536 dans le forum Langage
    Réponses: 11
    Dernier message: 30/03/2009, 16h51
  3. [MySQL] script pour valider une news
    Par crazy_inf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/06/2008, 15h04
  4. [RegEx] Validation d'une adresse mail
    Par elvan49 dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 11h32
  5. Cherche script PHP pour crypter une adresse menant a une musique
    Par mascotte_alex dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 02/11/2006, 19h51

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