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 :

Validation formulaire Method POST sur la même page [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 45
    Points : 32
    Points
    32
    Par défaut Validation formulaire Method POST sur la même page
    Bonjour à tous,

    J'ai un problème avec ce bout de 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
    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
     
    if (isset($_POST['email'])) {
    		//**********************************//
    		$email = $_POST['email'];
    		$email = stripslashes($email);
    		$email = trim($email);
    		$email = str_replace("'","",$email);
    		$email = str_replace(" ","",$email);
    		$email = str_replace('"','',$email);
    		$email = str_replace(";",",",$email);
    		$email = str_replace("#","@",$email);
     
    		$j=explode(',',$email);
     
    		for ($i=0; $i<count($j); $i++){ 
     
    			$j[$i]=str_replace("'","",$j[$i]);
    			if (!preg_match("#^[\w.-]+@[\w.-]+\.[a-z]{2,6}$#i",$j[$i])) {
    				echo '<h2 class="error">Attention !</h2><p class="not-valid">Le format des e-mails n\'est pas valide.</p>';
    				$warning = 'style="color:#C00;"';
    				//break;
    			}
    		}
     
    		if (!preg_match("#^[\w.-]+@[\w.-]+\.[a-z]{2,6}$#i",$_POST['mailperso'])) {
    			echo '<h2 class="error">Attention !</h2><p class="not-valid">Votre adress e-mail n\'est pas valide.</p>';
    			$warning = 'style="color:#C00;"';
    			}
     
    		elseif (empty($_POST['mailperso'])) {
     
    			echo '<h2 class="error">Attention !</h2><p class="not-valid">Vous n\'avez pas insérer votre adresse e-mail.</p>';
    		}
     
    		if (!empty($_POST['message'])) {
     
    			 $txtArea = $_POST['message'];
    	$txtArea = stripslashes($txtArea);
    	$txtArea = nl2br($txtArea);			
    	$txtArea = str_replace('\r\n','<br>',$txtArea);
    	$txtArea = str_replace('\r','<br>',$txtArea);
    	$txtArea = str_replace('\n','<br>',$txtArea);
     
    			  if ($_POST['lang'] == 'fr') {
    			  include('mail-perso-fr.php');
    			  } else {
    			  include('mail-perso-en.php');
    			  } 
     
    		} else {
     
    			  echo '<h2 class="error">Attention !</h2><p class="not-valid">Vous n\'avez pas écrit de message.</p>';   
     
    		}  
     
    		}

    Il s'agit de valider des champs remplis préalablement dans un formulaire qui se trouve en dessous de ce script sur la même page.

    Mon problème est le suivant, en l'état il contrôle bien que les trois champs (email, mailperso et message) sont remplis et complétés correctement mais j'ai essayé d'y placer la fonction mail() et la selon son positionement il envoi le mail et affiche les erreurs.

    Je comprends pourquoi mais je n'arrive pas à trouver une solution pour que quand toutes les conditions sont positives il envoie l'email si et seulement si...

    D'avance merci beaucoup pour votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$j=explode(',',$email);
     
    		for ($i=0; $i<count($j); $i++){ 
     
    			$j[$i]=str_replace("'","",$j[$i]);
    Pitié les horreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $lstEmails = explode(',',$email);
    foreach ($lstEmails as $adresse_email) {
            $adresse_email = str_replace("'","",$adresse_email);
    Pour la gestion des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (!preg_match("#^[\w.-]+@[\w.-]+\.[a-z]{2,6}$#i",$adresse_email)) {
    	$erreurs[] = 'Le format des e-mails n\'est pas valide.';
    }
    .......
     
    if (isset($erreur)) {
        foreach ($erreurs as $erreur_message) {
             echo '<h2 class="error">Attention !</h2><p class="not-valid">' . $erreur_message .'</p>';
       }
    }
    else {
        mail(....);
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 45
    Points : 32
    Points
    32
    Par défaut Merci
    Merci pour les corrections c'est tout bon !

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

Discussions similaires

  1. Envoi d'un formulaire et rester sur la même page
    Par Marie.B dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/08/2009, 11h22
  2. Formulaire qui renvoie sur la même page
    Par agnaou dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2009, 20h32
  3. Fonction valider formulaire appelle 2 fois la même page. Comment éviter celà ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/02/2009, 09h58
  4. Réponses: 11
    Dernier message: 19/09/2007, 10h20
  5. [Conception] formulaire et résultat sur la même page
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 13/07/2006, 16h47

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