Emplacement et taille de la page d'accueil d'un site

W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010 - 14 avril 2010 à 15:47
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010 - 23 avril 2010 à 10:59
Bonjour,

Je suis actuellement en train de créer un script qui permet d'analyser le contenu d'une page web (présence des balises, nombre et taille des images etc...)

Toutes mes fonctions sont prêtes et fonctionnent mais je me heurte à deux problèmes :

_ Sur la page d'analyse, je demande au visiteur d'entrer le nom de son site, par exemple : www.monsite.com
Mais comment faire pour savoir quelle est la page d'accueil, si par exemple c'est www.monsite.com/home/accueil/index.php, ou encore monsite.com/index.php

_ Deuxièmement, une fois cette page localisée, comment obtenir la taille de la page?? J'ai déjà une fonction permettant de récupérer la taille des images et script incluent dans la page, mais ça ne fonctionne pas sur les pages php.
Voici le code de cette fonction :
function filesize_url($url,$port){
global $url_site;
$size=-1;
 
$site=substr($url,7,strpos(substr($url,7),'/'));
$errstr='';

if($fp=@fsockopen($site, $port,$errno,$errstr)){
fputs($fp,"HEAD $url HTTP/1.0\r\n\r\n",strlen("HEAD $url HTTP/1.0\r\n\r\n"));
while(!feof($fp)){
$buffer=fgets($fp, 1024);
$split=explode(' ', $buffer);
if($split[0]=="Content-Length:"){
$size=(int)$split[1];
break;
}
}
fclose($fp);
}

if($errstr!='' || $size==-1) return false;
return $size;
}


J'espère m'être fait comprendre et surtout que vous allez pouvoir m'aider...

D'avance merci!!

8 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 avril 2010 à 18:25
Salut,

Mais comment faire pour savoir quelle est la page d'accueil, si par exemple c'est www.monsite.com/home/accueil/index.php, ou encore monsite.com/index.php


En 2 mots : c'est mort !!!
... enfin si je comprends correctement ce que tu veux dire :
S'il s'agit de récupérer cette page aucun pb, c'est celle que l'on obtient en tapant www.monsite.com ... en principe (sisi, y a plein de sites pour lesquels ce n'est pas le cas )
S'il s'agit comme je le pense de connaitre le fichier servi : c'est mort !!!(bis) => url rewriting notamment.


mais ça ne fonctionne pas sur les pages php.

Peux tu être plus précis, je ne comprends pas bien ce que tu entends par pages php ?
Peux tu l'être également sur le but final de "un script qui permet d'analyser le contenu d'une page web " ?

Cordialement,


Kohntark -
0
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010
15 avril 2010 à 09:00
Bonjour,

Tout d'abord, merci d'avoir répondu!

Alors pour préciser un peu le contexte, je réalise ce projet dans le cadre d'un site de référencement. Le but et d'analyser le contenu de la page d'index afin d'en améliorer son référencement sur les moteurs de recherches.

Pour être encore plus précis, je suis en train de réaliser quelque chose qui ressemble à ça : http://www.atypirank.fr/audit.php

Toutes mes fonctions prêtes et fonctionne à condition que si je rentre www.monsite.com, la page d'index soit www.monsite.com/index.php ou index.html etc...

Mais en testant le site dont j'ai donné l'adresse ci-dessus, si on rentre par exemple :
http://www.intersport.fr/

il semble bien trouver la page d'accueil, qui pourtant à l'air d'être dans

http://www.intersport.fr/resources/home/

Au passage, désolé pour la pub, mais j'en pense que ma question est plus claire comme ça :)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 avril 2010 à 18:50
Re,


Au passage, désolé pour la pub, mais j'en pense que ma question est plus claire comme ça :)

C'est le cas effectivement !

Soyons clair :
"Mais comment faire pour savoir quelle est la page d'accueil" ?
[list]
[*] Page d'accueil === page fournie en appelant "http://leSite.truc"
[*] impossible de connaitre son réel chemin et son nom sur le serveur
/list

il semble bien trouver la page d'accueil, qui pourtant à l'air d'être dans [...]

Oui, car il "suit" les headers reçus du site, chose que tu ne fais vraisemblablement pas.
Voici ce qu'il se passe lorsque tu entres "http://www.intersport.fr/" dans ton navigateur :
1 => GET de la page d'accueil
2 <= réception d'un code HTTP 301 Moved Permanently, ce qui indique au navigateur que la page demandée a été déplacée de façon permanente et fournie également la nouvelle adresse, en l'occurrence http://www.intersport.fr/resources/home/
3 => le navigateur fait donc une nouvelle demande (GET) de l'adresse de redirection ci-dessus
4 <= le site retourne la page demandée (== la page d'accueil)

En procédant comme dans le code de ton premier message (== tu t'arrêtes au point 1) tu recevras et analysera le point 2, qui peut contenir ou non des données HTML (message style "Cette page a été déplacée, ..."), ce qui est incorrect.

Il est donc impératif de "suivre" les codes HTTP de redirection jusqu'à l'obtention d'un code "valide" (200, 404, ...), ... et traiter en conséquence.
Il y a comme d'habitude plusieurs façons de faire, cURL étant la solution la plus simple.

Deuxièmement, une fois cette page localisée, comment obtenir la taille de la page?? J'ai déjà une fonction permettant de récupérer la taille des images et script incluent dans la page, mais ça ne fonctionne pas sur les pages php.

J'ai fait quelques tests très rapides pour valider un peu ce que je pensai, et éviter ainsi de dire trop de conneries.

fputs($fp,"HEAD $url HTTP/1.0\r\n\r\n",strlen("HEAD $url HTTP/1.0\r\n\r\n"));
=>
$str = "HEAD / HTTP/1.0\r\n\r\nHost: $url\r\n\r\n";
fputs($fp, $str, strlen($str));

A noter la présence de bugs (potentiels) dans ta fonction.

Une nouvelle fois tu gagnerai à utiliser cURL pour ce genre de chose.


Cordialement,

Kohntark -
0
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010
16 avril 2010 à 09:26
Bonjour,

Merci beaucoup pour toutes ces infos, je penses que ça va me faire gagner pas mal de temps et protéger mes cheveux d'un arrachage inopiné...

J'ai testé avec cURL quelque chose comme

function test($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}


... et ça a l'air de marcher déjà beaucoup mieux!

Merci encore!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010
16 avril 2010 à 11:16
Et en rajoutant :

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);


c'est juste parfait!

Merci de ton aide kohntark!!
0
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010
19 avril 2010 à 10:08
En fait, les problèmes ne sont pas terminés :'(

Tout fonctionne correctement en local avec cette fonction :


function MaFonction($url){
global $data;
    $ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);

echo curl_getinfo($ch, CURLINFO_HTTP_CODE)."
";
echo curl_getinfo($ch, CURLINFO_REDIRECT_COUNT)."
";
echo curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)."
";


    curl_close($ch);
    return $data;
}


Mais quand je met ma page sur le serveur de test : Ca ne marche plus!

Je test sur un site www.monsite.com
En local, si je rentre cette adresse, tout fonctionne.

Met sur le serveur, je suis obligé de mettre monsite.com sinon il ne trouve pas la page d'accueil.

cURL est pourtant bien activé sur le serveur..

Quelqu'un à une petite idée??
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
19 avril 2010 à 18:18
Re,

En fait, les problèmes ne sont pas terminés :'(

Si ça peut te rassurer je ne connais aucun développeur qui pourrait prétendre l'inverse

J'ai peur de ne pas bien comprendre ... peux tu être plus précis sur la nature du problème, les éventuelles erreurs retournées, etc ... ?

Cordialement,

Kohntark -
0
W@$h! Messages postés 70 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 16 juin 2010
23 avril 2010 à 10:59
Bonjour,

Désolé de ne pas avoir répondu avant... Beaucoup de boulot!

Il semblerais que tout fonctionne (enfin presque!), mais la redirection ne se fait pas sur le serveur car la version de cURL pose problème.

Donc tout semble maintenant bon sur ce point après une petite mise à jour sur le serveur! J'ai une nouvelle question, mais comme elle n'a rien à voir => Nouveau post

Merci beaucoup de ton aide en tous cas kohntark, tu m'aurais fait gagner un temps précieux!
0
Rejoignez-nous