Bonjour à toutes et tous,

Je veux mettre en place un annuaire solidaire pour mon association, les webmaster qui viendraient inscrire leurs sites dessus devraient en echange placer un lien retour sur une de leurs pages.<br>
Je voudrais savoir comment vérifier si ce lien est bien présent sur leurs sites et afficher leurs liens dans l'annuaire uniquement si c'est le cas.<br>
je ne suis pas une bête en Programmation mais si vous m'expliquer une marche à suivre, ce sera un bon début lol.<br>
Merci d'avance pour vos réponses qui m'aiderons à avancer je l'espere :)

9 réponses


Balbert
Réponse acceptée

// Verifie si une chaine est present sur un site.

/**
*  $chaine : est la chaine de caractere à retrouver.
*  $url_du_tiers : est l'url du site sur lequel il faut retrouver la chaine.
*  $status : est l'ensemble des status qui seront acceptés.
**/
function rechercher($chaine, $url_du_tiers , array $status = [200])
{
    // On initialise la fonction curl en lui passant l'url à visité
    $resource = curl_init($url_du_tiers);
    // On precise qu'on ne veut pas d'entete lorsqu'on recuppere le contenue de la page.
    curl_setopt($resource, CURLOPT_HEADER, FALSE);
    ob_start();
    // on envoie la requete
    $envoyer = curl_exec($resource);
    // on recuppere le contenu de la page dans la variable html.
    $html = ob_get_clean();
    // on reccupere les informations concernant la requete 
    // elle return un tableau contenant l'infos et c'est http_code qui nous interesse car elle contient le status 200 ou 404 ... 
    $reponse = curl_getinfo($resource);
    // on ferme la resource.
    curl_close($resource);

    return $envoyer and in_array($reponse['http_code'],$status) and
        preg_match("#$chaine#", $html);
}

Exemple d'usage :

On veut verifier si monsite.com est sur la page grafikart.fr
Cela donne :

if(rechercher('http://monsite.com', 'http://www.grafikart.fr/'))
{
    // votre code ici
    echo "Mon lien est sur site de grafikart";
} else
{
    echo "Mon lien n'est pas sur le site de grafikart";
}

Je pense qu'il faudrais faire une condition si ton lien sur son site est présent alors j'afiche son lien sur mon site sinon non, pour vérifier faudrais parcourir la page Html et regarder si le lien est présent ...

Merci pour ta reponse, c'est tout à fait ca mais par contre, comment ? Une reponse à été postée juste avant avec une fonction mais le msg à été supprimé, même pas eu le temps de regarder les fonction php qui était utilisées ...

Je pense que le meilleur moyen serais que le tiers mettent un code Javascript qui vérifie la présence sur la page du lien avec une id particulière et te renverrais un résultat sur ton serveur "Ok le lien est présent".

Ou alors tu fais une tâche cron que tu executes tout les jours dans la nuit avec un script php qui va crawler tout les sites des tiers pour vérifier la présence de ton lien et t'enregistrer si oui ou non à tel heure il y figurais.

Je faisais un appel curl sur une certaine url "Serveur de jeu qui me sortais du HTML directement" et je pouvais récupérer le dom grâce à:

http://simplehtmldom.sourceforge.net/

Je pense que simplehtmldom va grandement t'aider, c'est un peu chiant à débugger mais une fois mis en place ça marche niquel

Bonjour @Tom Delorme,

Je vous propose cette fonction :

function rechercher($chaine, $url_du_tiers , array $status = [200])
{
    $resource = curl_init($url_du_tiers);
    curl_setopt($resource, CURLOPT_HEADER, FALSE);
    ob_start();
    $envoyer = curl_exec($resource);
    $html = ob_get_clean();
    $reponse = curl_getinfo($resource);
    curl_close($resource);

    return $envoyer and in_array($reponse['http_code'],$status) and
        preg_match("#$chaine#", $html);
}

Usage :

if(rechercher('http://monsite.com', 'http://www.grafikart.fr/'))
{
    // votre code ici
    echo "Mon lien est sur site de grafikart";
} else
{
    echo "Mon lien n'est pas sur le site de grafikart";
}

Merci a vous pour vos reponses rapides :)
@Jean-christophe Pires : je vais regarder ce que tu me propose, le principe si je comprend bien est de crawler un site inscrit dans l'annuaire et de trouver un bout de code en particulier c'est bien ca ? en l’occurrence mon <a href> auquel je tiens lol ...
@balbert : peux-tu m'expliquer ta fonction stp ? comment cela fonctionne en gros ?

Merci d'avance pour vos reponses et votre aide :)

Je viens de tester ta fonction sur deux de mes sites que je développe et ca marche très très bien, je dois juste l'adapter pour que ca reponde à mes besoins, mon projet d'annuaire solidaire n'est encore que sur papier, en gros, il y aurale formulaire d'inscription, là il faudra demander de préciser l'url exact ou il y aura le lien retour sans quoi leurs entrée ne sera pas diffusée... <br>la page d'affichage des entrés et une partie admin ou la je met en place le petit bouton qui check tout ça ... <br>d'ailleurs, a ce propos, il faudra faire une boucle pour vérifier toutes les entrés je suppose ?<br>
Merci pour ton aide, j'ai bien compris le principe et vais étudier ta fonction en détail pour bien comprendre ;)

Oui il faudra faire une boucle pour vérifier toutes les entrés.

Je pense utiliser un script tout fait comme Arfoo annuaire pour réaliser ce projet, quelq'un à un avis là dessus ?
Merci beaucoup Balbert pour ton aide tu as assuré ;)