Filtres sur les urls de vos formulaires
Du coté PHP
|
|
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 :
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
Quelques articles qui devraient vous intéresser










Connexion
Les derniers!

