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

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dadovb, 30 Mai 2008.

  1. dadovb
    dadovb WRInaute passionné
    Inscrit:
    22 Novembre 2005
    Messages:
    1 653
    J'aime reçus:
    0
    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... :(

    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. :D
     
  2. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    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> -->
     
Chargement...
Similar Threads - Script php mysql Forum Date
PHP : script pour mettre catalogue xml clickbank dans mysql Développement d'un site Web ou d'une appli mobile 6 Décembre 2017
Probleme avec Script PHP pour remplir mysql avec un fichier Excel Développement d'un site Web ou d'une appli mobile 13 Février 2013
[script] Oméga-Annonces 1.5.1 - Php/MySqL Développement d'un site Web ou d'une appli mobile 4 Septembre 2012
script annonce ou developpeur php/mysql pour créer site sur mesure Développement d'un site Web ou d'une appli mobile 6 Février 2010
Nouveau script php/mysql GreenSD : création d'annuaire Développement d'un site Web ou d'une appli mobile 12 Octobre 2008
Script d'annuaire Php/MySql facilement customisable ? Développement d'un site Web ou d'une appli mobile 3 Septembre 2008
Script PHP pour MAJ table Mysql Développement d'un site Web ou d'une appli mobile 6 Février 2007
Faire connaître un script php/MySQL Open Source Demandes d'avis et de conseils sur vos sites 4 Décembre 2006
[Sécurité] Script php / Serveur Mysql Crawl et indexation Google, sitemaps 21 Août 2006
recherche script php maintenance table mysql Développement d'un site Web ou d'une appli mobile 10 Octobre 2005
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022
Détecter arrêt user d'un script PHP ? Développement d'un site Web ou d'une appli mobile 28 Décembre 2021
Actualiser un script php toutes les 10 secondes Développement d'un site Web ou d'une appli mobile 6 Septembre 2021
Quel script PHP conversion HTML -> JSON ? Développement d'un site Web ou d'une appli mobile 17 Février 2021
script PHP erreurs inexplicables. Développement d'un site Web ou d'une appli mobile 14 Février 2021
Du php dans du javascript Développement d'un site Web ou d'une appli mobile 16 Novembre 2020
Title et meta déscription par PHP Référencement Google 20 Décembre 2019
Créer des graphiques en php - Vers quel script se tourner ? Développement d'un site Web ou d'une appli mobile 19 Octobre 2017
Quel package/script PHP complet de gestion Paypal ? e-commerce 13 Juin 2017
Quel script de consentement <=> tarteaucitron en pur php ? Développement d'un site Web ou d'une appli mobile 19 Août 2016