petit code pour controle de partenariat

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

petit code pour controle de partenariat

Message le Dim Jan 07, 2007 0:36

Slt à tous,

Voilà, j'ai vu ici que certains cherchaient à vérifier si leurs partenaires tenaient leurs promesses dans le temps, à savoir si nos liens étaient tjrs présents sur leur site. 8)

Je vous propose en attendant d'avoir mieux (y' a tjrs mieux) ce script .

Il nécessite (malheureusement pour certains) de pouvoir exécuter php5, mais pas mal d'hébergeurs maintenant le proposent.
Il teste par groupe de 10 url car je me suis rendu compte en le testant que certains sites étaient lent, et on a vite dépassé le temps autorisé pour un script chez certains hébergeurs (à modifier selon votre cas).

Il demande une base de données avec une table de trois champs.
Le champ url est celui qui stocke l'url de la page où est censé être notre lien
Le champ lien est celui qui stocke l'url qu'on a fournie à notre partenaire.
Si vous ne voulez pas de l'id, penser à changer $tab[1] par $tab[0] et $tab[2] par $tab[1].
Si certains d'entre vous désire l'adapter à un fichier texte je ferai un bout de code en plus.

Certains trouverons que je suis un peu lourd, mais j'ai essayé d'être le plus simple et précis possible pour que les tout-débutants s'en sortent.

Faites moi savoir ce que vous en pensez.

A copier et coller dans un fichier d'extension .php5, après avoir créé la table table_url.
Comme champ pour la table: id (numérique et incrémentation), url (varchar 250 -on ne sait jamais-) et lien (varchar).
Placez l'url de vos partenaires dans la table (champ url) et l'url de votre site tel que vous leur avez fourni (champ lien).

Voici le code:

Code: Tout sélectionner
<html>
<body>

<?php

// fonction pour se connecter à la base
// il est préférable de mettre cette fonction dans un autre fichier protégé
// et de l'inclure ( include('chemin_du_fichier'); )

function connexion(){

   $link = mysql_connect("hote_de_la_base","pseudo_de_la_base","mot_de_passe_de_la_base")or die("connexion hote failed1");
   $result = mysql_select_db("nom_de_la_base") or die("connexion base failed");
   return $link;

}

// renvoie les urls et les liens stockée dans la base de données table_url
// la table contient 3 champs: id, url (la page du partenaire) et
// lien (celui que vous avez placez chez le partenaire)

function trouve_url($limit){

   $result = mysql_query("select * from table_url LIMIT $limit,10")or die("requete trouve_url failed");
   return $result;

}

// ouvre une url et teste si le lien est présent
// renvoie 0 si absent, 1 si présent, 2 si présent en nofollow

function test_url($url, $lien){

   $trouve = "Absent";
   $trouve_nofollow = "";

   $doc = @DOMDocument::loadHTMLFile($url);
   
   if(!empty($doc)){
   $tags_recherche = $doc->getElementsByTagName("a");
   $meta_recherche = $doc->getElementsByTagName("meta");
   
   foreach ($meta_recherche as $meta){// cherche dans les metas la présence de nofollow, ou noindex
      $content = $meta->getAttribute("content");
      if( eregi( "nofollow", strtolower($content) ) ){$trouve_nofollow = " META nofollow";}
      elseif( eregi( "noindex", strtolower($content) ) ){$trouve_nofollow = " META noindex";}
   }
      
   foreach ($tags_recherche  as $tag){
      $r = $tag->getAttribute("href");
      if( trim($r) == $lien || trim($r) == $lien."/"){
         $trouve = "Pr&eacute;sent";
         $follow = $tag->getAttribute("rel");
         if( strtolower(trim($follow)) == "nofollow"){$trouve = "Pr&eacute;sent avec nofollow";}
         $onclick = $tag->getAttribute("onclick");
         if( $onclick!=""){$trouve = "Pr&eacute;sent avec onclick='".$onclick."'";}
         break;
      }
   }

   }
   else{ $trouve = "erreur ouverture";}
   return $trouve." ".$trouve_nofollow;

}

// la recherche se limite à 10 url à partir de $limit
// (pour ne pas dépasser le temps d'exécution du script si un serveur ne répond pas).
// Au premier passage, $limit est fixé à 0 (première url dans la base)

if(!isset($limit)){$limit = 0;}

$l = connexion(); //se connecte à ma base de donnée

$tab_url = trouve_url($limit); // recherche dans la base les urls à scanner

// teste chaque url
while($tab = mysql_fetch_array($tab_url)){

   $url = $tab[1];
   $lien = $tab[2];
   
   $resultat .= "<a href='$url' target='_blank'>".$url."</a> reponse : ".test_url($url,$lien)."<br>";
}

mysql_close($l); //ferme la connexion

echo $resultat; //renvoie le résultat

// on rajoute 2 boutons pour voir les 10 prochains résultats et les 10 précédants

print "<br /><br />";

$precedent = $limit-10;
$suivant = $limit+10;

if($limit != 0){
   print "<form action='' method='post'>
      <input type='text' name='limit' value='".$precedent."' />
      <input type='submit' value='10 pr&eacute;c&eacute;dants' />
   </form>";
}

print "<form action='' method='post'>
   <input type='text' name='limit' value='".$suivant."' />
   <input type='submit' value='10 suivants' />
</form>";

// et voilà
?>

</body>
</html>


Pour moi ça marche, merci de remonter les bug ou perfectionnements
Dernière édition par DomicilePC le Dim Jan 07, 2007 13:15, édité 2 fois.

cmda
 

Test partenariat

Message le Dim Jan 07, 2007 6:58

C'est un bon début, mais cela ne tiens pas compte des liens en rel="nofollow", des métas contenant nofolow, des pages orphelines, des liens menant à cette page de lien avec un attibut nofollow, les liens de type javascript, etc...

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Dim Jan 07, 2007 9:45

Slt, et merci

Pour le nofollow dans le lien, j'ai remplacé
Code: Tout sélectionner
if( trim($r) == $lien || trim($r) == $lien."/"){$trouve = 1;break;}

par
Code: Tout sélectionner
if( trim($r) == $lien || trim($r) == $lien."/"){
    $trouve = 1;
    $follow = $tag->getAttribute("rel");
    if( strtolower(trim($follow)) == "nofollow"){$trouve = 2;}
    break;
}


Ca m'a d'ailleurs permis de constater qu'un de mes chers partenaires s'en était servi :evil: A dégager, j'vous jure...

J'ai également remplacé:
Code: Tout sélectionner
$resultat .= $url." reponse : ".test_url($url,$lien)."<br>";

par
Code: Tout sélectionner
$resultat .= "<a href='$url' target='_blank'>".$url."</a> reponse : ".test_url($url,$lien)."<br>";

ce qui permet d'allez jeter un oeil manuellement, ça peut être pratique

Pour le javascript, tu peux me donner un exemple? Parceque je suppose que tu ne parles pas d'un javascript que tu as donné à un partenaire (ça n'aurait pas bcp d'intérêt).

Merci, j'édite le code de départ

cmda
 

Lien javascript

Message le Dim Jan 07, 2007 10:09

pas facile à détecter !
l'option href peut contenir l'url correcte mais sur les événement comme onclic il est possible de coder un javascript qui redirige vers une autre page type loader en inhibant le lien dans le href... Note que les liens de ce type sont comptabilisés par google mais ils génèrent souvent une redirection... gare au 302 !

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Dim Jan 07, 2007 10:19

Bien, je vais tester la présence de onclick et si il existe l'afficher après la réponse.
Il faudra alors faire une vérification manuelle, pour le moment

Pour les métas, je recherche dans les métas si nofollow existe et la réponse sera 3 .
Je pense que les réponses ne seront plus numériques mais textuelles, c'est plus commode.

Merci

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Dim Jan 07, 2007 13:25

Voila donc,

Ce code détecte maintenant:
La présence de nofollow ou noindex dans les métas
La présence ou non de notre lien sur la page du partenaire
La présence de nofollow dans le lien
La présence d'un onclick dans le lien (javascript)
Si il y a eu une erreur à l'ouverture de la page

Pour les pages orphelines, ou les liens pointant vers elle avec nofollow, sur un petit code comme ça c'est pas possible.
Mais je pense que c'est le genre de truc que l'on peut regarder avant de faire son partenariat, il serait surprenant que le "faux partenaire" change la totalité de son site à chaque nouvelle escroquerie de lien (quoi que...)

En espérant que ça servira à quelques uns d'entre vous

cmda
 

javascript & co

Message le Dim Jan 07, 2007 14:16

J'ai dit que c'était pas facile car une action javascript n'indique pas nécessairement une redirection douteuse ! Beaucoup d'annuaires utilisent ce type de code pour compter les hits par exemple... et dans ce cas c'est l'url naturelle qui est invoquée : donc bon site !

La solution (assez lourde) consisterait à questionner le lien lui même (dans le cas de la présence d'un code javascript) pour obtenir son code de retour et à l'analyser...

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Dim Jan 07, 2007 14:39

C'est pour ça que j'ai placé l'url du partenaire dans les résultats.
Si la réponse montre la pésence d'un onclick, la première chose à faire est d'aller voir sur le site du partenaire pour voir de quoi il s'agit, et non de se précipiter sur nos codes pour supprimer le lien du partenaire.

Sur la cinquataine de partenaires que j'ai, 4 n'avez plus de lien vers moi. J'y suis allé, et seulement 2 en fait avez supprimé mon lien, sur les deux autres mon lien avait changé de page, avec PR identique ou supérieur, donc OK.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Lun Jan 08, 2007 0:06

Je vais abuser, mais il serait possible d'avoir la table table_url et merci pour les "tout-débutants" :wink: .
Il est possible de voir le script tourner ?Eventuellement l'url en pv...
merci

istreen
 

Message le Lun Jan 08, 2007 12:41

il serais bien de fournir la strucuture de la base sql.

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Lun Jan 08, 2007 13:08

Slt

Vous l'avez dans le premier post:
nom de la table table_url
champ id numérique (int) autoincrémentation clé primaire
champ url varchar 250 (on se sait jamais)
champ lien varchar 250 (j'espère que vous n'avez pas d'url aussi longue sur votre site)

Pour la créer, copiez-collez ce code dans un fichier extension .php et exécutez-le
Code: Tout sélectionner
<?
function connexion(){

   $link = mysql_connect("hote_de_la_base","pseudo_de_la_base","mot_de_passe_de_la_base")or die("connexion hote failed1");
   $result = mysql_select_db("nom_de_la_base") or die("connexion base failed");
   return $link;

}

$l=connexion();
// votre requete de création de la table
$create_table = "CREATE TABLE table_url
( id int auto_increment not null,
url VARCHAR (250) not null,
lien VARCHAR (250) not null,
PRIMARY KEY(id)
)";
$r = mysql_query("$create_table", $l);
if($r){echo "table créée";}
else{echo "Echec de la création de table";}
mysql_close($l);
?>

baptiste
WRInaute impliqué
WRInaute impliqué
 
Messages: 579
Inscription: 25 Avr 2004

Message le Mar Jan 09, 2007 10:30

Merci pour ce bout de code !!!!!!!


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5257
Inscription: 20 Oct 2005

Message le Mer Jan 10, 2007 11:07

...ou avoir des partenaires de confiance... :roll:


saypee
WRInaute accro
WRInaute accro
 
Messages: 2859
Inscription: 7 Mai 2005

Code

Message le Mer Jan 17, 2007 16:46

Quelqu'un aurait un code similaire à celui ci fonctionnant en Php4 ?
Merci d'avance

felinderace
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 24 Avr 2007

Bonjour

Message le Sam Mai 17, 2008 0:37

Bonjour,

et merci pour votre travail.

ça fait des mois que je cherche un script pouvant me révéler qui ne respecte pas le lien retour sur mes annuaires. existe t'il un truc tout fait ? (je n'ai pas les connaissances pour le faire). Mais j'ai penser à ce bout de code, je peux le mettre avant l'inscription dans l'annuaire ? ... mais es qu'il est possible de rajouter un champ email afin de contacter le webmaster pour qu'il puisse remettre le lien ?


merci en tout cas

petit code pour controle de partenariat

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité