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 :

Vérif anti spam champs formulaire [Fait] [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Vérif anti spam champs formulaire
    Bonjour,

    Mon formulaire étant en proie au spam depuis quelques temps, j'ai voulu effectuer quelques vérifications sur les champs transmis avant l'envoi.

    Mon formulaire se compose simplement de 6 champs (nom, prénom, adresse, ville, code postal, téléphone).

    j'aimerai donc faire une boucle pour vérifier l'existence de certaine chaine,
    voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	for($i=0;$i<sizeof($_POST);$i++)
    		{
    			if (eregi("\r",$_POST[$i]) || (eregi("http:",$_POST[$i]) || eregi("\n",$_POST[$i]) || eregi("Content-Type:",$_POST[$i])){ 
    			header("Location:page.php?result=false");
    		);
    l'autre solution serait d'effectuer une recherche a partir d'un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$find = array("/bcc\:/i","/Content\-Type\:/i","/cc\:/i","/to\:/i","\r","\n");
    d'élément, mais je ne crois pas que la fonction eregi puisse accepter un tableau dans son premier argument ?

    merci par avance

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je pense que tu pourras tirer parti de ces tutoriels :
    Les expressions régulières
    Les formulaires

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par khyor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$find = array("/bcc\:/i","/Content\-Type\:/i","/cc\:/i","/to\:/i","\r","\n");
    si je me trompe pas tu peux te passer du 'i' dans tes expressions si tu utilise eregi.Ca sert a rien d'indiquer l'insensibilite a la case a une fonction qui est insensible a la case.
    La fonction eregi n'accepte pas de tableau en entree.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    galette, tu confonds les regex POSIX et PCRE : j'explique la différence dans le tutoriel sus mentionné.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    j'ai fait quelques modifications en utilisant le tableau d'élément lié au spam :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $findspam = array("/bcc\:/i","/Content\-Type\:/i","/cc\:/i","/to\:/i","\r/i","\n/i"); 
     
    	foreach ($findspam as $spam) {
    		if (eregi($spam,$_POST['nom']) || eregi($spam,$_POST['prenom']) || eregi($spam,$_POST['societe']) ||
     eregi($spam,$_POST['mail']) || eregi($spam,$_POST['adresse']) ||
     eregi($spam,$_POST['ville']) || eregi($spam,$_POST['cp']) ||
     eregi($spam,$_POST['tel'])){ header("Location:page.php?result=false");}
    };
    cependant mon formulaire passe outre cette vérification comme si tout était normal et passe a l'envoie du message ?

    aurais je omi quelque chose ?

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Tu n'aimes pas nos conseils ? Tes expressions sont incorrectes.
    Ajoute exit; après header();

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Ceci serait plus correct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	$pattern = "#bcc:|Content-Type:|cc:|to:|http://|\r|\n#"; 
     
    	foreach ($_POST as $valeur) {
    		if (preg_match($pattern,$valeur))
    		{
    			header("Location:page.php?result=false");
    			exit;
    		};
    	};

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Ça m'en a tout l'air. Cela fonctionne-t-il ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    C'est parfait, tout est opérationnel grâce à vous.
    merci de votre aide.

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

Discussions similaires

  1. vérif champ formulaire rempli
    Par mathier dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 07/04/2012, 23h33
  2. [WB15]filtre anti spam pour formulaire
    Par celeborn56 dans le forum WebDev
    Réponses: 2
    Dernier message: 09/03/2010, 16h17
  3. formulaire de contact avec filtre anti spam
    Par Interface dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2008, 21h12
  4. Contrôle anti-spam sur un formulaire
    Par Oberown dans le forum Langage
    Réponses: 6
    Dernier message: 30/07/2006, 14h31
  5. Anti Spam sous RedHat
    Par TuxP dans le forum Réseau
    Réponses: 3
    Dernier message: 03/02/2004, 12h26

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