PHP : tester si des champs d'un formulaire sont vides
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

PHP : tester si des champs d'un formulaire sont vides



  1. #1
    invite48ca7510

    PHP : tester si des champs d'un formulaire sont vides


    ------

    Bonjour,

    J'ai créé un formulaire en html, et je récupère les valeurs dans des variables que je traite en php.

    Je voudrais que si l'un des champs n'a pas été remplis, un message en dessous du bouton "envoyer" s'affiche avec "Erreur : tous les champs n'ont pas été renseignés". Aussi, si tous les champs ont été renseignés mais que le code de vérification entré n'est pas le bon, un message en dessous du bouton "envoyer" s'affiche avec "erreur lors de la vérification du code".
    Or, cela ne marche pas. Que je remplisse aucun champ, tous les champs ou juste quelques uns, j'ai toujours le message que les champs n'ont tous été renseignés....

    Voici mon code, et merci d'avance !
    Code HTML:
    <!DOCTYPE HTML>
    
    <html>
    
    <title>Contact </title>
    
    <head> 
    	<meta charset="utf-8" />
    	<link rel="stylesheet" href="style.css" />
    </head>
    
    <body bgcolor="#94C2F7">
    	<div id="page">
    		<div id="left"></div>
    		<div id="right"></div>
    		<div id="center"> 
    
    			<header> 
    				
    				<p class="header"> <b> Site d'essai du formulaire </b> </p>
    				
    			<br>
    			<hr style="width:auto;" /> 
    			</header>
    
    			<p class="titlepage"> Contact </p>
    			
    			<p class="textpage">
    			
    			
    				Vous avez la possibilité de me joindre en remplissant ce forumulaire :
    				<form action="contact.php" methode="post">
    				
    				<table>
    					<tr>
    						<td> Nom : </td>
    						<td><input type="text" name="nom"></td>
    					</tr>
    					<tr>
    						<td> Prenom : </td>
    						<td><input type="text" name="prenom"></td>
    					</tr>
    					<tr>
    						<td> Mail: </td>
    						<td><input type="text" name="mail"></td>
    					</tr>
    					<tr>
    						<td> Message : </td>
    						 <td><textarea name="message" rows="5" cols="30">
    						</textarea></td>
    					</tr>
    					
    					<tr>
    						<td> Code de vérification : </td>
    						<td>
    							<?php 
    								$nb_verif=rand(0,999);
    								echo "$nb_verif";
    							?>
    						</td>
    					</tr>
    					<tr>
    						<td> Entrer le code de vérification : </td>
    						<td><input type="text" name="code"></td>
    					</tr>
    				</table>
    				
    				<input type="submit" value="Envoyer" name="submit_evoyer">
    				
    				
    				</table>
    				
    				</form>
    
    			</p>
    			
    			<footer>
    				<hr style="width:auto;" /> 
    				<center>
                                            Essai du formulaire
    				</center>
    			</footer>
    			
    		</div>
    	</div>
    </body>
    
    <?php
    	
    	if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['mail']) || empty($_POST['message']) || empty($_POST['code']))
    	{
    		echo "ERREUR : tous les champs n'ont pas ete renseignés.";
    	}
    	else
    	{
    		$nom=$_POST['nom'];
    		$prenom=$_POST['prenom'];
    		$mail=$_POST['mail'];
    		$message=$_POST['message'];
    		$code=$_POST['code'];
    		
    		if($code==$nb_verif)
    		{
    			// envoyer un mail
    		}
    		else echo "ERREUR : le champ de verification....";
    	}
    	
    
    	
    ?>
    
    </html>[
    ]

    -----
    Dernière modification par JPL ; 08/12/2013 à 12h57. Motif: Remplacement par la balise adaptée

  2. #2
    invitecba2e9e4

    Re : PHP : tester si des champs d'un formulaire sont vides

    hello,

    tout m'a l'air correct. Essaies d'écrire en anglais. Pas de e à method
    Code:
    form action="" method=""
                         ^

  3. #3
    Optimix

    Re : PHP : tester si des champs d'un formulaire sont vides

    Je pense que le plus simple consiste à gérer le contenu des champs en amont, donc au niveau du formulaire. Le contenu du formulaire n'est envoyé que s'il n'y a aucune erreur.
    Dans le code qui suit, tous les champs sont obligatoires au format texte, sauf l'adresse e-mail qui doit contenir @ et le code aléatoire qui doit contenir une valeur numérique de 0 à 999. Adaptez la fonction MM_validateForm() à votre besoin.
    Ici, le message d'erreur apparaît sur la première erreur rencontrée (si vous laissez tous les champs vides, le script vous signalera une erreur au niveau du Nom).

    Code:
    <!DOCTYPE HTML>
    
    <html>
    
    <title>Contact </title>
    
    <script type="text/javascript">
    function MM_validateForm() { //v4.0
      if (document.getElementById){
        var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
        for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
          if (val) { nm=val.name; if ((val=val.value)!="") {
            if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
              if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
            } else if (test!='R') { num = parseFloat(val);
              if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
              if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
                min=test.substring(8,p); max=test.substring(p+1);
                if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
          } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
        } if (errors) alert('The following error(s) occurred:\n'+errors);
        document.MM_returnValue = (errors == '');
    } }
    </script>
    <head> 
    	<meta charset="utf-8" />
    	<link rel="stylesheet" href="style.css" />
    </head>
    
    <body bgcolor="#94C2F7" onclick="MM_validateForm('nom','','R','prenom','','R','mail','','RisEmail','code','','R','message','','R');return document.MM_returnValue">
    	<div id="page">
    		<div id="left"></div>
    		<div id="right"></div>
    		<div id="center"> 
    
    			<header> 
    				
    				<p class="header"> <b> Site d'essai du formulaire </b> </p>
    				
    			<br>
    			<hr style="width:auto;" /> 
    			</header>
    
    			<p class="titlepage"> Contact </p>
    			
    			<p class="textpage">
    			
    			
    				Vous avez la possibilité de me joindre en remplissant ce forumulaire :
    		  <form action="contact.php" method="post">
    				
    				<table>
    					<tr>
    						<td> Nom : </td>
    						<td><input name="nom" type="text" id="nom"></td>
    					</tr>
    					<tr>
    						<td> Prenom : </td>
    						<td><input name="prenom" type="text" id="prenom"></td>
    					</tr>
    					<tr>
    						<td> Mail: </td>
    						<td><input name="mail" type="text" id="mail"></td>
    					</tr>
    					<tr>
    						<td> Message : </td>
    						 <td><textarea name="message" cols="30" rows="5" id="message">
    						</textarea></td>
    					</tr>
    					
    					<tr>
    						<td> Code de vérification tapez un chiffre compris entre 0 et 999: </td>
    						<td>
    							<?php 
    								$nb_verif=rand(0,999);
    								echo "$nb_verif";
    							?>
    						</td>
    					</tr>
    					<tr>
    						<td> Entrer le code de vérification : </td>
    						<td><input name="code" type="text" id="code"></td>
    					</tr>
    				</table>
    				
    				<input type="submit" value="Envoyer" name="submit_evoyer">
    				
    				
    				</table>
    				
    		  </form>
    
    			</p>
    			
    			<footer>
    				<hr style="width:auto;" /> 
    				<center>
                                            Essai du formulaire
    				</center>
    			</footer>
    			
    		</div>
    </div>
    </body>
    
    </html>

  4. #4
    invite48ca7510

    Re : PHP : tester si des champs d'un formulaire sont vides

    Bonjour,

    merci pour vos réponses.

    J'ai vu pour le "e" de method, je l'ai enlevé et ça ne marche toujours pas.

    Ensuite, je n'ai pas le droit d'utiliser du js (javascript), je dois faire ce formulaire en html et php, c'est tout (pour mes études).

    J'ai aussi tenté ce code, mais rien n'y fait, ça ne marche encore pas....
    Code:
    if($_POST['envoi']){
    		$champ_vide=0;
    		if (empty($_POST['nom']))     $champ_vide=1;
    		if (empty($_POST['prenom']))  $champ_vide=1;
    		if (empty($_POST['mail']))    $champ_vide=1;
    		if (empty($_POST['message'])) $champ_vide=1;
    		if (empty($_POST['code']))    $champ_vide=1;
    	
    		if ($champ_vide==1) echo "ERREUR : tous les champs ne sont pas remplis.";
    		else
    		{
    			$nom=$_POST['nom'];
    			$prenom=$_POST['prenom'];
    			$mail=$_POST['mail'];
    			$message=$_POST['message'];
    			$code=$_POST['code'];
    		
    			if($code!=$nbverif)
    			{
    				echo "ERREUR : le champ de verification....";
    			}
    			else echo "coucou";
    		}
    	}
    ?>

  5. A voir en vidéo sur Futura
  6. #5
    invitecba2e9e4

    Re : PHP : tester si des champs d'un formulaire sont vides

    Code:
    if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['mail']) || empty($_POST['message']) || empty($_POST['code']))
    {
    	echo "ERREUR : tous les champs n'ont pas ete renseignés.";
    }
    Ici, on sait même pas c'est quoi le champs qui est vide. Donc déjà quand tu débuggues, t'évites ca.
    Code:
    if(empty($_POST['nom'])){
      echo "nom is empty";
    }
    if(empty($_POST['prenom'])){
      echo "prenom is empty";
    }
    ...
    Ensuite, si method="post" ne marche pas, pe que pour une raison ou une autre tes paramètres ne sont pas envoyés par le navigateur, ou que ton serveur interdit les post.

    Dans le premier cas, installes firebug, et regardes si dans tes headers tu as bien les paramètres.
    Dans le second cas, essaies plutot method="get" et dans côté php
    Code:
    if(empty($_GET['nom'])){//noter GET au lieu de POST
      echo "nom is empty";
    }
    ps: petite parenthèse, bien que les modifications en amont faites c'est sympa pour l'utilisateur, il faut de toute façon les faire côté serveur, donc l'effort investit à le faire en php est pas perdu

  7. #6
    Optimix

    Re : PHP : tester si des champs d'un formulaire sont vides

    L'extension du formulaire doit être .php.
    Il est vrai qu'il vaut mieux ne pas utiliser Javascript pour cela. Essayez ceci pour voir (j'ai utilisé un champ caché) :

    Formulaire :
    Code:
    <!DOCTYPE HTML>
    
    <html>
    
    <title>Contact </title>
    
    <head> 
    	<meta charset="utf-8" />
    	<link rel="stylesheet" href="style.css" />
    </head>
    
    <body bgcolor="#94C2F7">
    	<div id="page">
    		<div id="left"></div>
    		<div id="right"></div>
    		<div id="center"> 
    
    			<header> 
    				
    				<p class="header"> <b> Site d'essai du formulaire </b> </p>
    				
    			<br>
    			<hr style="width:auto;" /> 
    			</header>
    
    			<p class="titlepage"> Contact </p>
    			
    			<p class="textpage">
    			
    			
    				Vous avez la possibilité de me joindre en remplissant ce forumulaire :
    				<form action="contact.php" method="post">
    				
    				<table>
    					<tr>
    						<td> Nom : </td>
    						<td><input type="text" name="nom"></td>
    					</tr>
    					<tr>
    						<td> Prenom : </td>
    						<td><input type="text" name="prenom"></td>
    					</tr>
    					<tr>
    						<td> Mail: </td>
    						<td><input type="text" name="mail"></td>
    					</tr>
    					<tr>
    						<td> Message : </td>
    						 <td><textarea name="message" rows="5" cols="30">
    						</textarea></td>
    					</tr>
    					
    					<tr>
    						<td> Code de vérification :					    </td>
    						<td><?php
    								$nb_verif=mt_rand(0,999);
    								echo $nb_verif;
    								echo"<input name=\"captcha\" type=\"hidden\" id=\"captcha\" value=".$nb_verif."></td>";
    							?>
    				    </tr>
    					<tr>
    						<td> Entrer le code de vérification: </td>
    						<td><input name="code" type="text" value=""></td>
    					</tr>
    				</table>
    				
    				<input type="submit" value="Envoyer" name="submit_evoyer">
    				
    				
    				</table>
    				
    				</form>
    
    			</p>
    			
    			<footer>
    				<hr style="width:auto;" /> 
    				<center>
                                            Essai du formulaire
    				</center>
    			</footer>
    			
    		</div>
    	</div>
    </body>
    
    </html>
    contact.php :
    Code:
    <?php
    	$captcha=$_POST['captcha'];
    	
    	$champ_vide=0;
    	if (empty($_POST['nom']))     $champ_vide=1;
    	if (empty($_POST['prenom']))  $champ_vide=1;
    	if (empty($_POST['mail']))    $champ_vide=1;
    	if (empty($_POST['message'])) $champ_vide=1;
    	if (empty($_POST['code']))    $champ_vide=1;
    	
    	if ($champ_vide==1):
    		exit("ERREUR : tous les champs ne sont pas remplis.");
    	else:
    		$nom=$_POST['nom'];
    		$prenom=$_POST['prenom'];
    		$mail=$_POST['mail'];
    		$message=$_POST['message'];
    		$code=$_POST['code'];
    	endif;
    
    	if($code!=$captcha):
    		exit("ERREUR : le champ de verification....");
    	endif;
    	
    	// Tout est OK
    	echo "coucou";
    ?>
    Dernière modification par Optimix ; 09/12/2013 à 07h14.

  8. #7
    bisou10

    Re : PHP : tester si des champs d'un formulaire sont vides

    Si pas de JS - qui est *LA* solution a privilégier, tu dois utiliser un fonction php comme celle du dessus pour effectuer tes validations.

    Une bonne occasion d'utiliser les fonctions PHP de reference pour (re) construire ta page (ex.: header() die()...) voire de faire du php objet.

    Bonne chance

  9. #8
    invitecc13ad94

    Re : PHP : tester si des champs d'un formulaire sont vides

    Bonjour,

    Pourquoi n'utilise tu pas ceci, pour les champs que tu veux rempli :

    Code HTML:
    <input type="XXX" name="XXX" required>
    cela évite les tests (optimisation), et puis c'est un outil puissant en HTML, après tu as d'autre fonction pour les mail, téléphone, ..

    Cordialement.

  10. #9
    invitecba2e9e4

    Re : PHP : tester si des champs d'un formulaire sont vides

    j'insiste, la vérification côté client, c'est bien pour le temps de réponse, mais dans >tous< les cas, il faut la faire côté serveur. Sécurité oblige.

  11. #10
    gauvin95

    Re : PHP : tester si des champs d'un formulaire sont vides

    Page HTML
    Code HTML:
    <!DOCTYPE HTML>
    
    <html>
    
    <title>Contact </title>
    
    <head> 
    	<meta charset="utf-8" />
    	<link rel="stylesheet" href="style.css" />
    </head>
    
    <body bgcolor="#94C2F7">
    	<div id="page">
    		<div id="left"></div>
    		<div id="right"></div>
    		<div id="center"> 
    
    			<header> 
    				
    				<p class="header"> <b> Site d'essai du formulaire </b> </p>
    				
    			<br>
    			<hr style="width:auto;" /> 
    			</header>
    
    			<p class="titlepage"> Contact </p>
    			
    			<p class="textpage">
    			
    			
    				Vous avez la possibilité de me joindre en remplissant ce forumulaire :
    				<form action="contact.php" method="post">
    				
    				<table>
    					<tr>
    						<td> Nom : </td>
    						<td><input type="text" name="nom" required></td> <!-- required est reconnu par HTML5 -->
    					</tr>
    					<tr>
    						<td> Prenom : </td>
    						<td><input type="text" name="prenom" required ></td>
    					</tr>
    					<tr>
    						<td> Mail: </td>
    						<td><input type="email" name="mail" required ></td> <!-- type="email" est reconnu par HTML5 -->
    					</tr>
    					<tr>
    						<td> Message : </td>
    						 <td><textarea name="message" rows="5" cols="30" required ></textarea></td>
    					</tr>
    					
    					<tr>
    						<td> Code de vérification : </td>
    						<td>
    							<?php 
    								$nb_verif=rand(0,999);
    								echo "$nb_verif";
    							?>
    						</td>
    					</tr>
    					<tr>
    						<td> Entrer le code de vérification : </td>
    						<td><input type="text" name="code" required ></td>
    					</tr>
    				</table>
    				
    				<input type="submit" value="Envoyer" name="submit_evoyer">
    				
    				
    				</table>
    				
    				</form>
    
    			</p>
    			
    			<footer>
    				<hr style="width:auto;" /> 
    				<center>
                                            Essai du formulaire
    				</center>
    			</footer>
    			
    		</div>
    	</div>
    </body>
    </html>
    Page nommé contact.php

    Code PHP:
    <?php 
    // Tableau des valeurs du formulaires (correspond a l'attribut name="" sur le champ du formulaire")
    $valeurs = array(
        
    "nom"    => "",
        
    "prenom" => "",
        
    "email" => "",
        
    "message"    => "",
            
    "code"    => "",
    );

    // Tableau des erreurs de validation
    $erreurs = array();

    // Variable indiquant si le formulaire est 
    // correctement rempli (par défaut non)
    $formulaireOK false;

    // Si l'utilisateur a posté les données,
    // il faut les traiter.
    if( isset( $_POST["mail"] ))    // ça veux dire : si l'utilisateur à appuyé sur le bouton qui a le name="mail" alors...
    {
        
    // On met à jour le tableau des valeurs
        // ça veux dire : la valeur du tableau nom = a ce qu'a été envoyé par le champ qui a le name="nom" etcc
        
    $valeurs["nom"]         = $_POST["nom"];
        
    $valeurs["prenom"]        = $_POST["prenom"];
        
    $valeurs["email"]         = $_POST["email"];
        
    $valeurs["message"]        = $_POST["message"];
        
    $valeurs["code"]        = $_POST["code"];;
        
        
    // On valide les champs uns par uns
        
    if( $valeurs["nom"] == "" )  // Si la valeur "nom" est vide
        
    {
            
    // On rempli le tableau des erreurs par un texte
            
    $erreurs["nom"] = "Veuillez entrer votre nom !";
        }
        
        if( 
    $valeurs["prenom"] == "" )  // Si la valeur "prenom" est vide
        
    {
            
    // On rempli le tableau des erreurs par un texte
            
    $erreurs["prenom"] = "Veuillez entrer votre pr&eacute;nom !";
        }
        
        if( 
    $valeurs["email"] == "" // Si la valeur du tableau email est vide
        
    {
            
    $erreurs["email"] = "Veuillez entrer votre adresse e-mail."// on rempli le tableau des erreurs email par un texte
        
    }
        
    //Ou sinon, on verfifie si c'est bien un email (ça c'est compliqué, ça check si ya tant de caractere, si ya un point et si ya un @
        
    if( !preg_match"#^[\.\-_A-Za-z0-9]+@[\.\-_A-Za-z0-9]+\.[A-Za-z]{2,3}$#"$valeurs["email"] ) )
        {
            
    $erreurs["email"] = "Veuillez entrer une adresse e-mail valide."// on rempli le tableau des erreurs email par un texte
        

        
        if( 
    $valeurs["code"] == "" )  // Si la valeur "code" est vide 
        
    {
            
    // On rempli le tableau des erreurs par un texte
            
    $erreurs["code"] = "Veuillez entrer votre code !";
        }

        if(
    $valeur["code"] == $nb_verif// Je ne suis pas tout a fait sur de ce code (a vérifier)
        
    {
            
    $erreurs["code"] = "Le code saisi n'est pas bon !";    
        }
        
        if( 
    $valeurs["message"] == "" )  // Si la valeur "message" est vide
        
    {
            
    // On rempli le tableau des erreurs par un texte
            
    $erreurs["message"] = "Veuillez entrer votre message !";
        }
        
        if( empty( 
    $erreurs ) )   // Si le tableau des "erreurs" est vide,
        
    {
            
    // CREATION DU MAIL
            
            
    $destinataire "destinataire@mail.com"
            
    $objet "Question [nomdusite] de ".$valeurs["prenom"]. "\r\n" ;
            
    $message "Nom : ".$valeurs["nom"]. "\r\n" ;
            
    $message.= "Prénom : ".$valeurs["prenom"]. "\r\n" ;
            
    $message.= "Mail : ".$valeurs["email"]. "\r\n" ;
            
    $message.= "Message envoyé : "."\r\n".$valeurs["message"];
            
            
    //=====Création du header de l'e-mail
            
    $header 'From: site@site.com' "\r\n" 
             
    'Reply-To: ' .$valeurs["email"]. "\r\n" .
             
    'X-Mailer: PHP/' phpversion();
            
    //==========
            
            
    mail($destinataire$objet$message$h);
            
    // On met la variable du formulaireOK appelé tout en haut en VALIDE (soit true)
            
    $formulaireOK=true;
        }
    }
    ?>

    <!-- On remet tout le code de la page HTML ou est le formulaire en rajoutant la réponse -->

    <!DOCTYPE HTML>

    <html>

    <title>Contact </title>

    <head> 
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
    </head>

    <body bgcolor="#94C2F7">
        <div id="page">
            <div id="left"></div>
            <div id="right"></div>
            <div id="center"> 

                <header> 
                    
                    <p class="header"> <b> Site d'essai du formulaire </b> </p>
                    
                <br>
                <hr style="width:auto;" /> 
                </header>

                <p class="titlepage"> Contact </p>
                
                <p class="textpage">
                
                
                    Vous avez la possibilité de me joindre en remplissant ce forumulaire :
                    <form action="contact.php" method="post">
                    
                    <table>
                        <tr>
                            <td> Nom : </td>
                            <td><input type="text" name="nom" required></td> <!-- required est reconnu par HTML5 -->
                        </tr>
                        <tr>
                            <td> Prenom : </td>
                            <td><input type="text" name="prenom" required ></td>
                        </tr>
                        <tr>
                            <td> Mail: </td>
                            <td><input type="email" name="mail" required ></td> <!-- type="email" est reconnu par HTML5 -->
                        </tr>
                        <tr>
                            <td> Message : </td>
                             <td><textarea name="message" rows="5" cols="30" required ></textarea></td>
                        </tr>
                        
                        <tr>
                            <td> Code de vérification : </td>
                            <td>
                                <?php 
                                    $nb_verif
    =rand(0,999);
                                    echo 
    "$nb_verif";
                                
    ?>
                            </td>
                        </tr>
                        <tr>
                            <td> Entrer le code de vérification : </td>
                            <td><input type="text" name="code" required ></td>
                        </tr>
                    </table>
                    
                    <!-- C'est a dire ici a la place du bouton ENVOYER -->
                    <!-- Je le laisse au cas ou tu veuilles le garder <input type="submit" value="Envoyer" name="submit_evoyer"> -->
                    <?php if( $formulaireOK ) : //si la variable formulaireOK est à oui alors ...?>
                    <p>Votre demande a &eacute;t&eacute; envoy&eacute;e !</p>
                    <a href="index.html">Retour a l'acceuil</a>
                    <?php else:    // SInon...?>
                    <?php foreach( $erreurs as $erreur ) : // Pour toutes les erreurs qui existe tu me le met dans une variable erreur?>
                    <p><?php echo $erreur// ça affiche la variable erreur?></p> 
                    <?php endforeach; // fin de condition foreach?>
                    <?php endif; // fin de condition?>  
                    
                    </table>
                    
                    </form>

                </p>
                
                <footer>
                    <hr style="width:auto;" /> 
                    <center>
                                            Essai du formulaire
                    </center>
                </footer>
                
            </div>
        </div>
    </body>
    </html>
    Apres il y aura peut etre quelques trucs a enlever et un peu de CSS a faire

    Voila
    Dernière modification par JPL ; 15/01/2014 à 14h29. Motif: remplacement de Code par HTML

  12. #11
    invitecba2e9e4

    Re : PHP : tester si des champs d'un formulaire sont vides

    hello,

    effectivement
    Code:
        if($valeur["code"] == $nb_verif) // Je ne suis pas tout a fait sur de ce code (a vérifier)
        {
            $erreurs["code"] = "Le code saisi n'est pas bon !";    
        }
    ne marchera pas.
    la variable nb_verif n'existe pas encore lors de ce if (et vaut vide).
    Pour ça, il faut augmenter sa durée de vie lors de sa génération.
    SESSION, ou bien fichier txt correspondant au formulaire avec un hash pour retrouver le bon code, etc..

  13. #12
    bisou10

    Re : PHP : tester si des champs d'un formulaire sont vides

    Citation Envoyé par galerien69 Voir le message
    j'insiste, la vérification côté client, c'est bien pour le temps de réponse, mais dans >tous< les cas, il faut la faire côté serveur. Sécurité oblige.
    Oui, tu as tout à fait raison. Je conseillais la validation côté client dans un but éducatif, mais il est strictement nécessaire d'en faire une côté serveur, c'est crucial.

    Pour ceux qui ne sont pas familliers avec ça:
    - la validation côté client (javascript) est rapide et ne nécessite pas le rechargement de la page mais peut facilement soit être contournée, voire carrement ne pas être disponible.
    - la validation côté serveur (php) est par contre non modifiable, et permet de prévenir toutes malfaçons ou mauvaises intentions dans les paramètres.
    La

  14. #13
    Optimix

    Re : PHP : tester si des champs d'un formulaire sont vides

    Faisons semblant d'oublier un moment Javascript, le client ne pouvant pas forcément en vouloir.

    Question sans arrière-pensée, car je ne suis pas du tout spécialisé en PHP (évolution trop rapide pour mes 65 ans) : dans le code proposé, comment est gérée l'injection de codes exotiques (pas forcément malveillants).

    Je suis assez d'accord sur le principe que le problème soit complètement géré côté serveur. Mais quand je dis "complètement", cela signifie "sans faille de sécurité". Ce qui me chagrine dans cette logique, c'est que mes codes écrits sous PHP 4 ne valent plus un kopeck sous PHP 5 (classique "deprecated function") et que j'ai le sentiment que mes corrections seront forcément obsolètes dans les jours qui viennent.

    Alors je pense qu'un pré-filtre côté client (JS ou autre) simplifie la vie. Et que ceux qui n'en veulent pas soient moins exigeants.

  15. #14
    bisou10

    Re : PHP : tester si des champs d'un formulaire sont vides

    C'est d'ailleurs traditionnellement ce qui est fait:
    - JS permet de vérifier les erreurs de syntaxe, de cohérence, de range, et un retour local et précis d'information sur la nature de l'erreur
    - PHP permet de valider ou d'invalider un jeu de données, sans forcément s'embêter d'autre chose qu'un valide/invalide en retour

  16. #15
    invitec20da42e

    Re : PHP : tester si des champs d'un formulaire sont vides

    Salut,

    Ça commence à faire un moment que je n'ai pas touché au php mais une chose est sûre.

    Comme tu doit le savoir (en tout cas ça me parait primordial) le php est exécuté sur le serveur. Lors de la génération de la page.

    Lors de l’exécution de ton if qui test si les champs sont remplis ou pas et affiche ou non l'echo, la page n'est pas encore générée (c'est l’exécution du code php et html qui va générer la page html à afficher sur le navigateur). Elle est donc encore loin d'être affichée sur le navigateur. Il est donc impossible que l'utilisateur ai pu remplir le moindre champ.

    Du coup, toujours lors de l’exécution du if, tes champs sont tous vides, ton if est toujours valide et la page html est générée avec ton echo. Pour faire se genre de test côté client, le javascript est, je pense, incontournable. Il ne remplace cependant pas un contrôle côté serveur. Disons que le js permet d'avoir un côté "ludique" et "ergonomique" à ce genre de saisie. Il ne permet pas, a mon avis, d'effectuer un contrôle fiable en partie pour les raisons exposées dans les posts précédents.

    Cordialement.

Discussions similaires

  1. Article de Pour la Science : Particules et champs sont-ils réels ?
    Par Archyves dans le forum Discussions scientifiques
    Réponses: 50
    Dernier message: 23/10/2013, 23h37
  2. Les ampoules sont-elles vides ?
    Par invite978fd738 dans le forum Bricolage et décoration
    Réponses: 11
    Dernier message: 28/07/2012, 16h58
  3. CSS + JavaScript ; Changer la couleur des champs d'un formulaire
    Par zoup1 dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 05/07/2011, 15h17
  4. pourquoi les champs en 1/R^2 sont fascinants?
    Par invite57f30d74 dans le forum Physique
    Réponses: 43
    Dernier message: 02/03/2010, 00h27