Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2006, 13h22   #1
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 3
Points : 3
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 :
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 :
	$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
khyor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h00   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Je pense que tu pourras tirer parti de ces tutoriels :
Les expressions régulières
Les formulaires
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h17   #3
Membre du Club
 
Inscription : mars 2005
Messages : 38
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 38
Points : 44
Points : 44
Envoyer un message via MSN à galette
Citation:
Envoyé par khyor
Code :
	$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.
galette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h37   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
galette, tu confonds les regex POSIX et PCRE : j'explique la différence dans le tutoriel sus mentionné.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h17   #5
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 3
Points : 3
j'ai fait quelques modifications en utilisant le tableau d'élément lié au spam :

Code :
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 ?
khyor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h28   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Tu n'aimes pas nos conseils ? Tes expressions sont incorrectes.
Ajoute exit; après header();
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h45   #7
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 3
Points : 3
Ceci serait plus correct ?
Code :
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;
		};
	};
khyor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h54   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ça m'en a tout l'air. Cela fonctionne-t-il ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 16h13   #9
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 3
Points : 3
C'est parfait, tout est opérationnel grâce à vous.
merci de votre aide.
khyor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h22.


 
 
 
 
Partenaires

Hébergement Web