Vous êtes ici Articles > Filtres sur les urls de vos formulaires

 

Filtres sur les urls de vos formulaires

Du coté PHP
 
KOogar
Vu 7141 fois
Enregistré le 03 Jan 2008
  • Digg cet article sur digg.com
  • Bookmark cet article sur del.icio.us
  • Bookmark cet article sur Google
  • Bookmark cet article sur Yahoo
  • Ajoute Filtres sur les urls de vos formulaires
  • Partage cet article sur Facebook
 
 
 
 

Filtres sur les urls de vos formulaires


Il existe de multiples façons pour un utilisateur de rentrer des urls erronées dans un formulaire. Que cela soit dans un formulaire de soumission d'annuaire ou d'un simple envoi de post sur un livre d'or. Si la meilleure manière est de vérifier manuellement à chaque validation, j'ai créé des filtres avec PHP et des expressions régulières qui devraient vous aider à économiser un temps précieux.

Sommaire des filtres:

Filtre 1 : url profonde de niveau 1 non autorisée
Filtre 2 : gestion du sous domaine www
Filtre 3 : vérifie si l'url n'est pas un lien mort

Je me suis d'abord mis à la place d'un 'hackeur' et je me suis dit que ma première idée serait de mettre une url profonde, c'est à dire une url de type : http://www.monsite.com/dossier/pages. Pour enlever ce problème, nous allons prendre l'URL, la placer dans une variable et considérer l'URL comme une chaîne de travail pour lui appliquer un masque. Si la capture de la chaîne correspond au masque, nous retournons un résultat positif avec un message d'erreur.

Filtre 1 :

.01
.02
.03
.04
.05
.06
.07
.08
 
<?php
 
$url ""// url 
if (ereg("^(http://(www.-)?[^/]+/[^/]+)",$url)) { 
echo 'URL profonde non autorisé'; 
} 
?>



Un des standards du Net est la présentation d'une url avec son sous domaine à l'état naturel : www. L'url présente bien sous la forme : http://www.monsite.com/ et moyennement sous la forme http://monsite.com/. Pour enlever le cas ou l'utilisateur oublierais de mettre le www, nous reprendrons le même principe de masque:

Filtre 2 :

.01
.02
.03
.04
.05
.06
.07
.08
.09
 
<?php
 
$url ""// url 
if (ereg("http://([[:alnum:]])+.([a-z]{2,4}/?)$",$url)) { 
echo '<br />Il vous manque votre sous domaine: www'; 
} 

?>


Le dernier problème majeur est de voir si l'url que l'utilisateur a postée est valide. Rentrer un lien mort n'apporte rien. Il existe des codes sources PHP mais ceux ci ont l'inconvénient d'être très gourmand en ressource et peuvent faire planter votre page de soumission si les fatidiques 30 secondes sont dépassés. La solution que j'apporte est pertinente mais elle-même a ses inconvénients. elle va chercher le nombre de pages indexées dans Google pour savoir si le site existe. l'avantage est au niveau temps machine, peu gourmand en ressource avec un résultat toujours pertinent. L'inconvénient est d'avoir un site non placé dans l'index de Google, et il est peu recommandé d'interroger Google à travers des requêtes internes. A utiliser avec modération. Mais Google peut t-il nous reprocher de faire le même travail que lui? Automatiser les taches ;)

Filtre 3 :

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
 
<?php
 
$url ""// url 
// enleve le http:// 
$bl_url str_replace("http://","",$url); 
// url de google 
$url_link_GG 'http://www.google.fr/search?hl=fr&q=link%3A'.$bl_url.''// prend le fichier entier 
$BL_GG = @file_get_contents($url_link_GG); 
// trouve le nombre de Back Link retourné sur la page de Google 
preg_match('`<b>([0-9 ]+)</b> liés à`'$BL_GG$BL); 
$bre_bl $BL[1]; 

if ($bre_bl==''OR $bre_bl==0) { 
echo 'votre URL ne correspond pas à nos critères'; 
} 

?>


Vous pouvez appliquer ces filtres à vos formulaires (forums, livre d'or, annuaires..) les résultats vous surprendrons et vous économiserez un temps précieux tout en responsabilisant vos utilisateurs.
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Quelques articles qui devraient vous intéresser