Bonjour,
Je viens à l'instant de recopier le script du formulaire de grafikart; il fonctionne à merveille. Seulement j'aimerais que l'utilisateur qui saisissse son nom avec la barre d'espace ne soit plus valide; je sais qu'il existe la fonction trim() pour celà mais elle ne marche pas. Merci d'avance pour votre aide.

<?php
$nom = trim($_POST'nom']);
$message = trim($_POST'message']);

if(!empty($_POST))
{
    extract($_POST);
    $valid=true;
    if($adresse != ""){
    }
    else{

    if (empty($nom))
    { 
      $valid=false;
      $erreurnom="Vous n'avez pas rempli votre nom";
    }

    if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,4}$/i",$email))
    {
         $valid=false;
         $erreuremail = "Votre email n'est pas valide";
    }
    if (empty($email))
    { 
      $valid=false;
      $erreuremail="Vous n'avez pas saisi votre email";
    }
    if (empty($message))
    {
      $valid=false;
      $erreurmessage="Vous n'avez pas saisi votre message";
    }

    if($valid)
    {
      $to = "jean-charles@hotmail.fr";
      $sujet = $nom." a contacté le site";
      $header = "From: $nom <$email>";
      $message = stripslashes($message);
      $nom = stripslashes($nom);

      if(mail($to,$sujet,$message,$header))
      {
          $erreur = "Votre message nous est bien parvenu";
          unset($nom);
          unset($email);
          unset($message);
      }else
      {
        $erreur = "Une erreur est survenu et votre email n'est pas parti";
      }
    }
    }
}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
       <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

     <title>Design internet</title>
     <script type="text/javascript" language="Javascript" src="jquery.js"></script>
     <script type="text/javascript">
        $(function() {
            $("#adresse").hide();
              $("#envoyer").click(function(){
                  valid=true;
                   if($("#nom").val()==""){
                       $("#nom").css("border-color","#FF0000");
                       $("#nom").next(".error-message").text("Veuillez entrer votre nom");
                       valid=false;
                   }
                   else{
                       $("#nom").css("border-color","#00FF00");
                       $("#nom").next(".error-message").text("");
                   }
                   if($("#email").val()==""){
                       $("#email").css("border-color","#FF0000");
                       $("#email").next(".error-message").text("Veuillez entrer un email");
                       valid=false;
                   }
                   else{
                       if(!$("#email").val().match(/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,4}$/i))
                   {
                       $("#email").css("border-color","#FF0000");
                       $("#email").next(".error-message").text("Veuillez entrer un email valide");
                       valid=false;
                   }
                   else{
                       $("#email").css("border-color","#00FF00");
                       $("#email").next(".error-message").text("");
                   }
                   }

                   if($("#message").val()==""){
                       $("#message").css("border-color","#FF0000");
                       $("#message").next(".error-message").text("Veuillez entrer votre message");
                       valid=false;
                   }
                   else{
                       $("#message").css("border-color","#00FF00");
                       $("#message").next(".error-message").text("");
                   }

                   return valid;
              });
         });

</script>

<head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
       <title></title>
       <link rel="stylesheet" media="screen" href="css/style.css" type="text/css" title="Design" />

</head>
<body>

            <div id="contenu">
            <h1>Contactez-nous</h1>
            <h2>N'hésitez pas à nous contacter</h2>
            <hr/>
            <?php
            if(isset($erreur)){ echo "<p>$erreur</p>"; }
            ?>
            <form method="post" action="index.php">
            <label for="nom"><strong>Nom :</strong></label>
            <input type="text" name="nom" id="nom" value="<?php if(isset($nom)) echo $nom; ?>"/>
            <span class="error-message"><?php if(isset($erreurnom)) echo $erreurnom; ?></span><br />

            <input type="text" name="adresse" id="adresse"/>

            <label for="email"><strong>Email :</strong></label>
            <input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email; ?>"/>
            <span class="error-message"><?php if(isset($erreuremail)) echo $erreuremail; ?></span><br />

            <label for="message"><strong>Votre message :</strong></label>
            <textarea name="message" id="message"><?php if(isset($message)) echo $message; ?></textarea>
            <span class="error-message"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></span><br />

            <input type="submit" value="Envoyer" id="envoyer"/>

            </form>
            </div>

            <div id="pied_de_page">
            <p>Code et Design par Devillers. 2012.<br />
            N'hésitez pas à <a href="exemple.php">me contacter</a>
            </p>
            </div>

            <script src="jquery.js"></script>
            <script src="cycle.js"></script>
            <script src="func.js"></script>

          </body>
         </html>

6 réponses


Xtr3me
Réponse acceptée

Tu fais une expression régulière qui autorises les caractères que tu veux admettons, alphanumériques et dedans tu n'y inclus pas les espaces avec un preg_match tu vérifies que ce qui a été rentré correspond bien à l'expression régulière si c'est pas le cas tu renvoies une erreur pour dire que le format n'est pas adapté ;) .

Tu peux utiliser une expression régulière pour interdire les espaces où remplacer les espaces par des tirets par exemple avec un str_replace.

Merci j'y avis pas pensé.

Voilà ce que j'ai pu faire. Merci.

<?php

if(!empty($_POST))
{
    extract($_POST);
    $valid=true;
    if($adresse != ""){
    }

    else{
    $nom = trim($nom);
    if (empty($nom))
    {
      $valid=false;
      $erreurnom="Vous n'avez pas rempli votre nom";
    }

    if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,4}$/i",$email))
    {
         $valid=false;
         $erreuremail = "Votre email n'est pas valide";
    }
    if (empty($email))
    { 
      $valid=false;
      $erreuremail="Vous n'avez pas saisi votre email";
    }
    //$message = trim($message);
    //if (empty($message))
    //{
      //$valid=false;
      //$erreurmessage="Vous n'avez pas saisi votre message";

    //}
    if(!preg_match("#[A-Za-z0-9\-_.^èçéà&ù%:;,!?/@'¨]#",$message))
    {
         $valid=false;
         $erreurmessage = "Votre message n'est pas valide";
    }

    if($valid)
    {
      $to = "jean@hotmail.fr";
      $sujet = $nom." a contacté le site";
      $header = "From: $nom <$email>";
      $message = stripslashes($message);
      $nom = stripslashes($nom);

      if(mail($to,$sujet,$message,$header))
      {
          $erreur = "Votre message nous est bien parvenu";
          unset($nom);
          unset($email);
          unset($message);
      }else
      {
        $erreur = "Une erreur est survenu et votre email n'est pas parti";
      }
    }
    }
}

Voilà exactement ce qu'il fallait ;) .

Merci mec.