
<?php
//Configuration ::::
$_votresite='www.graphiks.net'; //Url de votre site sans http:// ni / a la fin
$_rep=""; //Repertoire ou ce trouve les 3 fichiers (badlinks.txt, goodlinks.txt et ref.txt) (a laisser vde si directement à la racine)
$_listePerso='sexe|test.com|votresite.com'; //Liste de mots qui banniré un site refereant
$_listeok='in-extremis.graphiks.net|www.unautresite.com'; //Il est possible aussi d'avoir une liste de site a toujours accepté
//Configuration ::::
//
//Le script en lui même ::
//On récupère le référant
//Vu qu'il ne faut jamais faire confiance à qqchose fourni par l'utilisateur, on utilise htmlentities pour enlever tut risque de piratage.
$ref=htmlentities($_SERVER['HTTP_REFERER'], ENT_QUOTES);
//Initialisons les erreurs a 0 (pas d'erreur)
$error=0;
//On recupere la liste des bon domaines et des mauvais domaines :
$badlinks=implode("", file("http://".$_votresite."/".$_rep."/badlinks.txt"));
$goodlinks=implode("", file("http://".$_votresite."/".$_rep."/goodlinks.txt"));
//Si le referant est vide, ou s'il existe dans la liste des mauvais domaine : error = 1
if(empty($ref) OR ereg(set_domain($ref),$badlinks)){
$error=1;
}
//Les cas particuliers
//Mettre a jours la variable $_listeperso pour ajouter vos propres cas. (mot1|mot2|mot3)
if($error==0){
$refTest=preg_replace('`(^|W*)('.$_listePerso.')s?(W|$)`Usi','$1 _###_ $3', $ref);
if(ereg('_###_',$refTest)){
$error=1;
}
}
//Si le referant existe dans la liste blanche, on remet les erreurs a 0
if(eregi(set_domain($ref), $_listeok)){
$error=0;
}
//Fin des cas particluliers
//Si error=1, on test si ce domaine existe deja dans la liste des bon domaine
//S'il n'existe pas, on le rajoute, puis, on met à jours la liste des referer.
if($error==0){
$dataTemp=implode("", file($ref));
if(eregi($_votresite,$dataTemp) OR eregi(set_domain($ref), $_listeok)){
add_good_link($ref,$goodlinks);
}else{
add_bad_link($ref, $badlinks);
}
}
//Fin du script ::
//
//
//Les fonctions :
//Fonction qui extrait le nom de domaine de l'url
function set_domain($ref){
$serveur = ereg_replace("(http://[^/]*/)(.*)", "\\1", $ref);
return $serveur;
}
//Fonction qui ajoute un domaine à la liste des MAUVAIS domaine
function add_bad_link($ref, $badlinks){
global $_rep;
$domain=set_domain($ref);
if(!ereg($domain,$badlinks)){
$data="
".$domain;
$fp = fopen($_rep."/badlinks.txt", "a+");
fwrite($fp, $data);
fclose($fp);
}
}
//Fonction qui ajoute un domaine à la liste des BON domaine
function add_good_link($ref, $goodlinks){
global $_rep;
$domain=set_domain($ref);
if(!ereg($domain,$goodlinks)){
$data="
".$domain;
$fp = fopen($_rep."/goodlinks.txt", "a+");
fwrite($fp, $data);
fclose($fp);
}
update_referers($ref);
}
//Mise à jours de la liste des referer.
//En meme temps, on supprime les ligne en trop.
function update_referers($ref){
global $_rep, $_votresite;
$tableau=file($_rep."/ref.txt");
$nb=count($tableau);
if($nb>=10){ // on supprime les refs en trop
$fp = fopen($_rep."/ref.txt", "w+");
$T=$nb-10;
for($i=$T; $i<$nb; $i++){
fwrite($fp, $tableau[$i]);
}
fclose($fp);
}
$refsActuel=implode("", file("http://".$_votresite."/".$_rep."/ref.txt"));
if(!eregi(set_domain($ref), $refsActuel)){
$d="
".$ref;
$fp = fopen($_rep."/ref.txt", "a+");
fwrite($fp, $d);
fclose($fp);
}
}
?>

Nous - Plan du site - Informations légale - Contact - © Graphiks.net