PHP

Problème avec "FILTER_VALIDATION_EMAIL"

Résolu

Bonsoir,


J'ai un problème avec le code lorsque j'ai rempli les champs des formulaire et ensuite je clique sur le bouton "Envoyer" j'obtiens les erreurs :


Warning: Use of undefined constant FILTER_VALIDATION_EMAIL - assumed 'FILTER_VALIDATION_EMAIL' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs\mail\tuto mail\indeex.php on line 25


Warning: filter_var() expects parameter 2 to be int, string given in C:\xampp\htdocs\mail\tuto mail\indeex.php on line 25


Au-dessus de formulaire il y a une erreur qu'il m'affiche " Ceci n'est pas une adresse mail " alors que j'ai fait entrer mon adresse mail. Je pense qu'il y a un problème avec cette ligne code :


if (!filter_var(@$email, FILTER_VALIDATION_EMAIL)) {
    # code...
    $error= "Ceci n'est pas une adressee mail";
}


Voici le code :


<?php

  require 'phpmailer/PHPMailerAutoload.php';
  $error="";
  $flag_attachement=false;

   
 

   //var_dump(($_POST));

  if (isset($_POST['submit']) and !empty($_POST['submit'])) {
    # code...


    if (!empty($_POST['email']) or !empty($_POST['Objet'])) {

      $email=test_input($_POST['email']);
      /*$objet = test_input($_POST['objet']);*/
      if (isset($_POST['objet'])) {
        $objet = $_POST['objet'];
      }
      $message=test_input($_POST['message']);
      if (!filter_var($email, FILTER_VALIDATION_EMAIL)) {
        # code...
        $error= "Ceci n'est pas une adressee mail";
      }else{

          # code...
        if ($_FILES['attachement']['erro²r']==0) {
          if($_FILES['attachement']['size'] <=5000000){
            $infos_fichier=pathinfo($_FILES['attachement']['name']);
            $extension_fichier=$infos_fichier['extension'];

            $extension_autorisees=array('jpeg', 'jpg', 'png', 'doc', 'odt', 'pdf');
            $flag_attachement=true;

            if(in_array($extension_fichier, $extension_autorisses)){
              $name_file=$_FILES['attachement']['name'];
              $chemin="piece_jointe".basename($name_file);
              move_uploaded_file($_FILES['attachement']['tmp_name'], $chemin);

              //eenvoie du mail

              $mail=new PHPMailer();
              $mail->addAddress('epenyblaise@yahoo.fr', 'contact');
              $mail->setFrom('Root', 'Administrateur');
              $mail->subject='Nouveau mail';
              $mail->isHTML(true);
              $object_mail="Re".$object;
              $mail->addReplyTo($email,'$object_mail');
              $mail->Body='
              <html>
                <head>
                    <meta charset="utf-8"

                </head>
                <body>
                    <h1> Vous avez recu un message </h1>
                    <div>

                        Email: '.$email.'<br/>
                        Password:'.$password.'<br/>
                        Objet:'.$object.'<br/><br/>


                        '.nl2br($message).' <br/>


                    </div>

                </body>

              </html>
              ';
              if($flag_attachement==true){
                $mail->attachement($chemin, $name_file);
              }


              if($mail->send()){
                $error="envoyeé avec sucès";
              }else{
                $error="Echec d'envoi.";
              }


            }else{
              $error="fichier non prise en compte";
            }
                }
              else{
                  $error="fichier trop de volumineux";
        }


        }else{
          $error="une erreur est survenue avec la pièce jointe";
        }
        }

      # code...
    }else{
      $error= "Vous devez compléter tout les champs.";

    }
  }

  function test_input($data){
    $data=trim($data);
    $data=stripslashes($data);
    $data=htmlspecialchars($data);
    return $data;
  }
?>




Comment faire pour corriger cette erreur ?


Merci d'avance pour vos réponses.

465 vues
11 novembre 2020 à 23:39 (Édité)
Cette pub permet au site de vivre ...
Compte-supprimé
Le 10 Novembre 2020 à 23:13

Salut,


bases-toi sur ce code issu de la doc de PHP :


<?php
  $email_a = 'joe@example.com';
  $email_b = 'bogus';
  
  if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
      echo "L'adresse email '$email_a' est considérée comme valide.";
  }
  if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
      echo "L'adresse email '$email_b' est considérée comme valide.";
  } else {
      echo "L'adresse email '$email_b' est considérée comme invalide.";
  }
?>


Dans ton filter_var, tu avais oublié de spécifier ta variable de ton champs Mail.

Aussi, cette méthode de vérification n'est pas forcément idéale, je te conseille d'effectuer une vérification grâce à un regex 😉

Cette pub permet au site de vivre ...

2 commentaires

Bonjour @Doppler,


Dans filter_var j'ai ajouté la variable d'un champ mail l'erreur que j'ai eu avant n'affiche plus dans le navigateur.


if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "L'adresse email '$email' est considérée comme valide.";
}


Je te remercie pour ton aide.

Salut,


bases-toi sur ce code issu de la doc de PHP :


<?php
  $email_a = 'joe@example.com';
  $email_b = 'bogus';
  
  if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
      echo "L'adresse email '$email_a' est considérée comme valide.";
  }
  if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
      echo "L'adresse email '$email_b' est considérée comme valide.";
  } else {
      echo "L'adresse email '$email_b' est considérée comme invalide.";
  }
?>


Dans ton filter_var, tu avais oublié de spécifier ta variable de ton champs Mail.

Aussi, cette méthode de vérification n'est pas forcément idéale, je te conseille d'effectuer une vérification grâce à un regex 😉

Cette pub permet au site de vivre ...