Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Script php/mysql de contrôle des échanges de liens

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
dadovb
WRInaute accro
WRInaute accro

Inscrit le: 22 Nov 2005
Messages: 1485
Localisation: Grenoble

URL permanente de ce messagePosté le : Ven Mai 30, 2008 17:37    Sujet du message: Script php/mysql de contrôle des échanges de liens

Bonjour à tous,

Actuellement en pleine campagne de netlinking, je me suis fendu d'un petit script de contrôle des échanges de liens. Parce que bon, ça a du arriver à tout le monde de mettre en place des échanges de liens qui comme par hasard disparaissent au bout de quelques semaines... Sad

C'est du bon vieux php/mysql. Il faut une table ("liens") dans la BD avec les champs suivants :

reference : identifiant unique du lien
lien : page du site partenaire où est censé apparaitre le lien
pagerank : valeur de la petite barre verte de la google toolbar (à titre purement indicatif, bien sur Wink )
site : si vous gérez plusieurs sites, vous pouvez les différencier dans ce champ

Perso, je la remplis tranquillement à la main à chaque fois qu'un nouvel échange est en place.

Côté PHP :

La fonction PHP qui détecte si au moins un lien vers le site $site est présent sur la page $url.
IMPORTANT : la fonction renvoie l'anchor text du lien s'il est trouvé
IMPORTANT : vous avez besoin du framework PEAR (http://pear.php.net/)


Code:

function controlUrl($url,$site){
   
   require_once "HTTP/Request.php";
   
   $req =& new HTTP_Request($url);
   $req->addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
   
   $response = $req->sendRequest();
   
   if (PEAR::isError($response)) {
       return false;
   } else {
    
        $reponse   = $req->getResponseBody();
        // supprimer les retour à la ligne d'un texte
      $reponse   = str_replace(CHR(10)," ",$reponse);
      // et celle là aussi :
      $reponse   = str_replace(CHR(13)," ",$reponse);         
    
      if(preg_match('$<[Aa](.*?)[href|HREF]=["|\']http://'.$site.'(.*?)["|\'](.*?)>(.*?)</[Aa]>$',$reponse,$tab) || preg_match('$<[Aa] [href|HREF]=["|\']http://'.$site.'(.*?)["|\'](.*?)>(.*?)</[Aa]>$',$reponse,$tab)){
         
         $anchor   = $tab[count($tab)-1];
         //on test si c'est une image
         if(preg_match('[img(.*?)alt="(.*?)"]',$anchor,$t) || preg_match("[img(.*?)alt='(.*?)']",$anchor,$t)){
            $anchor   = "Image : ".$t[count($t)-1];
         }elseif(preg_match('[img]',$anchor)){
            $anchor   = "Image : pas d'attribut alt";
         }
         
         return $anchor;
      
      }
      //cas spéciaux de saut de page
   else{
         return false;
      }
   }
   
}


Ensuite le script qui est lancé en CRON une fois par semaine :

Code:

set_time_limit(5000);
require ("fonctions.php");

/*dans le cas où vous gérez plusieurs sites, on passe le site qu'on souhaite tester en paramètres (cf champ "site" dans la table)*/
$site   = $_GET['site'];

   ConnectToDatabase();
 
   $sql   = "SELECT ref, lien FROM liens WHERE site = '$site'";
   $resultats = mysql_query($sql, $_SESSION['connection']) or die(mysql_error());
   
   $ligne   = mysql_fetch_assoc($resultats);
   $txt   = '<html>';
   
   while($ligne){
      
      $trouve   = controlUrl($ligne['lien'],$site);
      
      if($trouve){
         $txt   .= "Lien trouvé sur  : <i>".$ligne['lien']."</i> || référence : ".$ligne['ref']." || <u>$trouve</u><br>";
      }else{
         $txt   .= "<strong>Pas de lien trouvé sur</strong> : <a href='".$ligne['lien']."'>".$ligne['lien']."</a> || référence : ".$ligne['ref']."<br>";
      }
      
      $ligne   = mysql_fetch_assoc($resultats);
      
   }
   echo $txt;
   
   EnvoiMailHTML('votreemail@ndd.com','','controlepartenariats@votresite.com', 'Contrôle des partenariats : '.$site, $txt."</html>");



Résultat :
Un mail se dépose dans votre boite mail et vous affiche tous les liens OK. Pour les pages où il n'a pas trouvé le lien, il met le lien dans le mail pour que vous ayez juste à cliquer dessus pour aller vérifier si effectivement, vous avez disparu du site de votre "partenaire".

A savoir : L'expression régulière utilisée pour détecter le lien et ressortir l'anchor text n'est pas parfaite, il y a des sites où elle ne fonctionne pas, mais j'ai passé déjà trop de temps à la trouver... Si y'a un expert qui passe dans le coin, il est le bienvenu pour l'améliorer.


Voilà, j'espère que ça vous servira. Very Happy
 
dadovb Visiter le site web du posteur
webmasterlamogere
WRInaute accro
WRInaute accro

Inscrit le: 17 Déc 2006
Messages: 1718
Localisation: urlrewriting.fr

URL permanente de ce messagePosté le : Ven Mai 30, 2008 20:38    Sujet du message: Script php/mysql de contrôle des échanges de liens

si le lien est dans un commentaire html tu vas le détecter mais il ne sera pas valide.
Code:
<!-- <a href="http://www.tonsite.fr">ton site</a> -->
 
webmasterlamogere Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort