Fonction de vérification

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonction de vérification

par Guillaume » 29 avr. 2006, 13:48

Sauf erreur il n'y a pas que le $i++ qui est inutile...

Ce code :
    // création d'un tableau
$request = array();
// On remplit le tableau de variables
foreach ($_REQUEST as $key=>$val){
    $request[$key] = $val;
    $i++;
}
est équivalent à :
$request = $_REQUEST;
Attention, c'est pas fonction mais function ;)

Version simplifiée et optimisée de ton script :
function test_vars() {
    $tableauDeMots = array('select', 'update', 'drop', 'add', 'delete');
    foreach ($_REQUEST as $key => $val) {
        foreach ($tableauDeMots as $mot) {
            if (strpos($val, $mot.' ') !== false) {
                header('Location: http://www.google.fr');
            }
        }
        $GLOBALS[$key] = $val;
    }
}

par ant » 26 avr. 2006, 18:57

Ta fonction a l'air correct :)

2 petites choses:

- Comme l'a souligné Goeb, le $i++ est inutile

- le sizeof($tableauDeMots) dans ta boucle for implique qu'à chaque itération ta fonction est appelée. Tu peux éviter cela donc à des fins d'optimisation tu peux faire ceci:

$LongueurTab = sizeof($tableauDeMots);

for($b=0; $b<$LongueurTab; $b++){ 
(bon, je te l'accorde c'est un détail)
:roll:

par zeus » 25 avr. 2006, 13:03

modération : juste 2 petites remarques qui n'apporte, malheureusement, rien à ton problème:
- pense à utiliser les balises
 quand tu postes du code, c'ets plus clair et plus lisible
- merci de ne pas utiliser le rouge qui est réservé aux modérateurs
;)[/color]

par goeb » 25 avr. 2006, 11:34

salut,
le i++ est inutile à mon avis.

pour ce qui est de la liste des mots à interdire, il n'y a pas de liste toute faite. c'est à toi de voir ce que tu veux interdire. si tu veux boquer "toto", "select", "garde-manger" et "lolipop", y a que toi qui peux le savoir.

Fonction de vérification

par Astroboy_01 » 24 avr. 2006, 18:14

Bonjour,

je cherche à vérifier toutes les données qui arrivent sur une de mes pages (grace à $_REQUEST) et à re-créer automatiquement les variables postées.

voici la fonction :
fonction test_vars (){ // Test avec quelques mots-clés
	// création d'un tableau
	$request = array();
	// On remplit le tableau de variables
	foreach ($_REQUEST as $key=>$val){
		$request[$key] = $val;
		$i++; 
	}
	
	//Tableau de mots clef
	$tableauDeMots[] = "select ";
	$tableauDeMots[] = "update ";
	$tableauDeMots[] = "drop ";
	$tableauDeMots[] = "add ";
	$tableauDeMots[] = "delete ";
	
	// Pour chaque variable
	foreach ($request as $key=>$val){
		// Pour chaque mot 
		for($b=0; $b<sizeof($tableauDeMots); $b++){
			// Si le mot est contenu dans la variable
			if (eregi($tableauDeMots[$b],$val)==true){
				// Redirection à la violente
				header('Location: http://www.google.fr');				
			}
		}
		
	}
	
	// On construit les variables à partir du tableau
	foreach ($request as $key=>$val){
		$$key=$val;
	}
	
}

J'ai deux questions :
- Ma fonction vous semble-telle correcte ?
- Ou pourai-je trouver une liste de mots clés à bloquer ? (ex: SELECT,...)

Merci.