Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

Script de referer amélioré [Maj]

Script de referer amélioré [Maj]


Script de referer amélioré [Maj]     Posté le 8/08/2005 à 00:00
Sky
Administrateur
sky
Site perso
4188 posts
Inscrit le : 13/08/2003
Mis à jour le lundi 8 aout 2005 à 18:57

Voici un petit script qi vous permettra d'afficher les référants (lien qui pointe vers votre sites).
La seul qui le diférenci des autres, c'est qu'il fais un controle sur la page qui est censer contenir le lien. Si le lien n'existe pas, le domaine est bein dans une liste noir. Si le lien existe vraiment, le domaien est mis dans la liste blanche.

Vous pouvez bien sur paramétrer plusieur options comme une liste de mots clefs sur lesquel il faudra bannir tous site qui les contiennent. Une liste de domaine à autorisé meme si le lien n'existe pas. (Le cas pour les forums qui requiert d'être connecté. (ou autre raison personels)

J'en ai tellement marre des gens qui spam le site avec leurs pub que je voudrai vraiment developper un script qui les fassent vraiment chier smiley

Il vous faudra :
- 1 page badlinks.txt (les mauvais domaines)
- 1 page goodlinks.txt (les bon domaines)
- 1 page ref.txt (liste des referer apres test)
- 1 page referant.php (la page qui calcul e tout)

referant.php :
<?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);
    }
}
?>


Il suffit ensuite d'inclure cette page sur votre site en utilisant include();

Sky

________________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Script de referer amélioré [Maj]     Posté le 8/08/2005 à 19:02
3run0
Administrateur
Avatar
1747 posts
Inscrit le : 1/10/2004
Si j\'ai bien compris, la variable $listePerso filtre les domaines qui ont des mots banis et les envoient vers badlinks.txt.
Vu que ces domaines là sont déjà filtrés on est peut être pas obligé de les stocker dans badlinks.txt, ça rendrait le fichier plus leger et le script plus rapide.
Et badlinks.txt serai consacrés uniquement à des url du genre:
www.jaipaslairmechant.com ou www.jailairderien.com qui elles ne peuvent pas etre filtrées par $listePerso.

_______________________
_ww.gabian-herault.com
 
Réponse à : Script de referer amélioré [Maj]     Posté le 8/08/2005 à 19:15
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Ha, oui, en effet.
Pkoi enregistrer. je changerai ça demain.

Sinon, il est en test sur le site, je verrai demain les erreurs ou pas.

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Script de referer amélioré [Maj]     Posté le 8/08/2005 à 23:52
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Faudrai rajouter un truc qui englobe les hébergeurs genre lycos ...

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Script de referer amélioré [Maj]     Posté le 9/08/2005 à 00:20
3run0
Administrateur
Avatar
1747 posts
Inscrit le : 1/10/2004
c\'est a dire?
modifier la regle dans la function set_domain pour garder le nom du 1er repertoire quand c\'est membres.lycos.fr

_______________________
_ww.gabian-herault.com
 
Réponse à : Script de referer amélioré [Maj]     Posté le 9/08/2005 à 08:35
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
ui smiley

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Vous n'est pas connecté en temps que membre, parceque j'en ai marre du spam, SEUL les membres peuvent poster des messages sur le forum.

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