Aller au contenu

TheRec

Hubmaster
  • Compteur de contenus

    1 777
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par TheRec

  1. Euh... à part ça, elle est où la question ?
  2. Je tiens juste à préciser que j'ai essayé le "workaround" qui est proposé sur QuirksMode, mais étant donné que le <div> entourant le <ul> est caché (display:none) tant que l'utilisateur ne clique pas sur la liste, cela ne peut pas être utilisé... Cela affiche la scrollbar sur le <div>, sans la scrollbar horizontale (ouf...preuve que ça marche dans la "logique"), mais le <div> étant caché, on ne voit que la scrollbar verticale sans le contenu du <div> tant que l'utilisateur n'a pas cliqué pour voir la liste Bonne nuit...
  3. Oui effectivement...mais sans Javascript, il n'y a pas de mise en forme pour le contrôle "<select>"... le but de ce script est de remplacer la liste déroulante par une "unordered list" (<ul>) qui d'affiche lorsqu'un clic est effectué... Et lorsque Javascript n'est pas activé, aucun remplacement ne s'effectue et le contrôle <select>" est affiché normalement... (d'où l'accessibilité conservée) J'avais oublié de préciser cela
  4. TheRec

    Champ blob

    Bonsoir, Chaque membre est identifié pas un numéro (ci-après appelé "id"), il te suffit d'utiliser ce numéro comme nom pour l'image. Et lorsque tu veux afficher la photo d'un membre tout ce dont tu as besoin c'est de connaître son numéro... Un exemple serait d'avoir un répertoire avec les images de toues les utilisateurs, ou tu déplacerait l'image de l'utilisateur lors de l'upload, et lorsque tu veux l'afficher tu utiliserait quelque chose dans ce genre : <img src="images_membres/<?php echo $_SESSION['userid']; ?> alt="Avatar membre"> La vraible "$_SESSION['userid']", tu la récupère au moment de l'ouverture de sa session en allouant une variable de session. Lorsque tu vérifie que son nom d'utilisateur et son mot de passe est bon, tu récupère directement l'id du membre (logiquement si la combinaison nom d'utilisateur/ mot de passe est correcte, tu récupéreras un id)... Voilà...mais j'ai un peu l'impression de me répéter...à part pour la variable de session
  5. TheRec

    calcul pagerank

    Et a tout hasard, le script que je te propose ne fonctionnerait-il pas ?
  6. Bonsoir, j'essaie d'intégrer une alternative à la balise <select> et je suis confronté à un petit problème. Je modifie un Javascript existant (oui, c'est en Javascript et oui ça reste "accessible" !) : http://icant.co.uk/forreview/tamingselect/ J'ai une liste déroulante contenant beaucoup d'elements (une liste de pays), je dois donc limiter la hauteur du conteneur et y appliquer un attribut "overflow:auto;". Après quelques modifications du Javascript original ainsi que des styles d'originaux, je suis arrivé à ce résultat : http-://www.hexadec.ch/repository/tamingselect/ Le problème est en fait d'ordre esthétique car cette liste fonctionne dans les navigateurs suivants: IE5.5/IE6/IE5.2 Mac (ce dernier ignore ce Javascript...) , Opera 7.5, Safari 1.3. Sous FireFox, Netscape (et autres navigateur Gecko) la barre de défilement horizontal apparaît alors qu'elle n'est pas nécessaire (ce, qu'il y ait "padding" ou "margin", les deux ou même rien). J'ai lu ici : http://www.quirksmode.org/bugreports/archi...to_Firefox.html que ce bug serait résolu dans les versions 1.1 ... mais ça n'arrange pas mes affaires à l'instant présent J'ai aussi trouvé une solution "bancale" à base de balises propiétaires (ou presque, apparemment FireFox semble vouloir inclure overflow-x et overflow-y bientôt : CSS3 oblige) : overflow:-moz-scrollbars-vertical; overflow-y:scroll; overflow-x:hide; Mais cela ne me convient pas, je souhaite que la feuille de style de ce site soit validée :S Et sous Opera empêche même l'accès à la liste... Quelqu'un a-t-il une piste ou même une solution ? Parce que je suis un peu à court d'idées là ... Merci d'avance
  7. Oulà...si ta place dépend d'un jingle... Un petit choix de sons "libre de droits" : http://www.koumis.com/music.htm Sinon Google est ton ami : http://www.google.com/search?hl=fr&q=sons+...echercher&meta= (ceci n'est qu'un exemple de recherche...)
  8. TheRec

    calcul pagerank

    Apparemment c'est juste la propriété de white-space qui n'est pas spécifié pour la CodeBox...mais à toi de voir si tu souhaite attendre la 2.1 .codemain, .sqlmain, .htmlmain { background: #FAFCFE; border: 1px dotted #000; color: #465584; font-family: Courier, Courier New, Verdana, Arial, sans-serif; margin: 0 auto 0 auto; padding: 2px; width: 98%; } Si on rajoute : white-space: pre; Cela semble résoudre le "problème" ... j'ai fait un tour dans quelques messages et cela semble ne rien casser d'autre **EDIT** A noter que cette modification faite, les tabulation sont considérées comme telles et les espaces deviennent des espaces...euh ne serait-ce pas une tautologie ? Presque..mais bon en bref les caractères d'espacements sont considérés comme tels et plus "transformé"
  9. TheRec

    calcul pagerank

    Salut Regarde le message précédent, j'ai fait un "coller" de la même choseque ceque j'avais mis dans le , lors de mon premier message...et l'indentation est totalement supprimée...c'est de cela que je parle...dans le cas présent ce sont des "espaces" et no des tabulations...
  10. TheRec

    calcul pagerank

    Dan, pourrais-tu me dire pourquoi quand je poste dans une "CodeBox" je perds toute l'imdentation (que ce soit des tabulations ou des espaces) ? J'avais utilisé la "Codebox" pour le précédent message, mais j'avais eu ce problème, c'est pour cela que j'avais utilis le simple "Code" // Google PageRank Calculator function by ZeNiTRaM // Licensed under the GPL License // Uses code from The Google Checksum Calculator, by Alex Stapleton, Andy Doctorow, Vijay "Cyberax" Bhatter, and a few others, licensed under the public domain (http://www.mobileread.com/forums/showpost.php?p=7769&postcount=87) and XMLize.php by Hans Anderson (http://www.hansanderson.com/php/xml/). // Use: $pagerank = GetPagerank("http://www.google.es"); function getPageRank($urlo) { define('GOOGLE_MAGIC', 0xE6359A60); function xmlize($data, $WHITE=1) { $data = trim($data); $vals = $index = $array = array(); $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, $WHITE); if ( !xml_parse_into_struct($parser, $data, $vals, $index) ){ die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); $i = 0; $tagname = $vals[$i]['tag']; if ( isset ($vals[$i]['attributes'] ) ) { $array[$tagname]['@'] = $vals[$i]['attributes']; } else { $array[$tagname]['@'] = array(); } $array[$tagname]["#"] = xml_depth($vals, $i); return $array; } function xml_depth($vals, &$i) { $children = array(); if ( isset($vals[$i]['value']) ) { array_push($children, $vals[$i]['value']); } while (++$i < count($vals)) { switch ($vals[$i]['type']) { case 'open': if ( isset ( $vals[$i]['tag'] ) ) { $tagname = $vals[$i]['tag']; } else { $tagname = ''; } if ( isset ( $children[$tagname] ) ) { $size = sizeof($children[$tagname]); } else { $size = 0; } if ( isset ( $vals[$i]['attributes'] ) ) { $children[$tagname][$size]['@'] = $vals[$i]["attributes"]; } $children[$tagname][$size]['#'] = xml_depth($vals, $i); break; case 'cdata': array_push($children, $vals[$i]['value']); break; case 'complete': $tagname = $vals[$i]['tag']; if( isset ($children[$tagname]) ) { $size = sizeof($children[$tagname]); } else { $size = 0; } if( isset ( $vals[$i]['value'] ) ) { $children[$tagname][$size]["#"] = $vals[$i]['value']; } else { $children[$tagname][$size]["#"] = ''; } if ( isset ($vals[$i]['attributes']) ) { $children[$tagname][$size]['@'] = $vals[$i]['attributes']; } break; case 'close': return $children; break; } } return $children; } function traverse_xmlize($array, $arrName = "array", $level = 0) { foreach($array as $key=>$val) { if ( is_array($val) ) { traverse_xmlize($val, $arrName . "[" . $key . "]", $level + 1); } else { $GLOBALS['traverse_array'][] = '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n"; } } return 1; } function zeroFill($a, $ { $z = hexdec(80000000); if ($z & $a) { $a = ($a>>1); $a &= (~$z); $a |= 0x40000000; $a = ($a>>($b-1)); } else { $a = ($a>>$; } return $a; } function mix($a,$b,$c) { $a -= $b; $a -= $c; $a ^= (zeroFill($c,13)); $b -= $c; $b -= $a; $b ^= ($a<<8); $c -= $a; $c -= $b; $c ^= (zeroFill($b,13)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,12)); $b -= $c; $b -= $a; $b ^= ($a<<16); $c -= $a; $c -= $b; $c ^= (zeroFill($b,5)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,3)); $b -= $c; $b -= $a; $b ^= ($a<<10); $c -= $a; $c -= $b; $c ^= (zeroFill($b,15)); return array($a,$b,$c); } function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) { if(is_null($length)) { $length = sizeof($url); } $a = $b = 0x9E3779B9; $c = $init; $k = 0; $len = $length; while($len >= 12) { $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); $mix = mix($a,$b,$c); $a = $mix[0]; $b = $mix[1]; $c = $mix[2]; $k += 12; $len -= 12; } $c += $length; switch($len) { case 11: $c+=($url[$k+10]<<24); case 10: $c+=($url[$k+9]<<16); case 9 : $c+=($url[$k+8]<<8); /* the first byte of c is reserved for the length */ case 8 : $b+=($url[$k+7]<<24); case 7 : $b+=($url[$k+6]<<16); case 6 : $b+=($url[$k+5]<<8); case 5 : $b+=($url[$k+4]); case 4 : $a+=($url[$k+3]<<24); case 3 : $a+=($url[$k+2]<<16); case 2 : $a+=($url[$k+1]<<8); case 1 : $a+=($url[$k+0]); /* case 0: nothing left to add */ } $mix = mix($a,$b,$c); /*-------------------------------------------- report the result */ return $mix[2]; } //converts a string into an array of integers containing the numeric value of the char function strord($string) { for($i=0;$i<strlen($string);$i++) { $result[$i] = ord($string{$i}); } return $result; } $url = 'info:'.$urlo; $ch = GoogleCH(strord($url)); $chf = "6$ch"; $file = @file("http://www.google.com/search?client=navclient-auto&ch=".$chf."&q=".$url); $file_str = implode("", $file); if(preg_match("/<rk\>([0-9]*)\<\/rk\>/i",$file_str,$matches) !== false) { $pr = $matches[1]; } else { $pr = 0; } return $pr; }
  11. TheRec

    calcul pagerank

    Bonjour, Personnelement pour simple étude de cas j'ai utilisé celui-là... Mais je ne peux pas te conceiller de l'utiliser à grande échelle, Google précise dans son User Agreement que seul la barre de Google est sensé utiliser ce système si je me souviens bien... Il serait possible de simplier sans utiliser de parser XML, mais c'est tou de même plus sûr, de n'est pas à l'abris d'un changement de syntaxe de la part de Google et cette méthode est assez felxible... // Google PageRank Calculator function by ZeNiTRaM // Licensed under the GPL License // Uses code from The Google Checksum Calculator, // by Alex Stapleton, Andy Doctorow, Vijay "Cyberax" Bhatter, and a few others, // licensed under the public domain and XMLize.php by Hans Anderson // Use: $pagerank = GetPagerank("http://www.google.es"); function getPageRank($urlo) { define('GOOGLE_MAGIC', 0xE6359A60); function xmlize($data, $WHITE=1) { $data = trim($data); $vals = $index = $array = array(); $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, $WHITE); if ( !xml_parse_into_struct($parser, $data, $vals, $index) ){ die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); $i = 0; $tagname = $vals[$i]['tag']; if ( isset ($vals[$i]['attributes'] ) ) { $array[$tagname]['@'] = $vals[$i]['attributes']; } else { $array[$tagname]['@'] = array(); } $array[$tagname]["#"] = xml_depth($vals, $i); return $array; } function xml_depth($vals, &$i) { $children = array(); if ( isset($vals[$i]['value']) ) { array_push($children, $vals[$i]['value']); } while (++$i < count($vals)) { switch ($vals[$i]['type']) { case 'open': if ( isset ( $vals[$i]['tag'] ) ) { $tagname = $vals[$i]['tag']; } else { $tagname = ''; } if ( isset ( $children[$tagname] ) ) { $size = sizeof($children[$tagname]); } else { $size = 0; } if ( isset ( $vals[$i]['attributes'] ) ) { $children[$tagname][$size]['@'] = $vals[$i]["attributes"]; } $children[$tagname][$size]['#'] = xml_depth($vals, $i); break; case 'cdata': array_push($children, $vals[$i]['value']); break; case 'complete': $tagname = $vals[$i]['tag']; if( isset ($children[$tagname]) ) { $size = sizeof($children[$tagname]); } else { $size = 0; } if( isset ( $vals[$i]['value'] ) ) { $children[$tagname][$size]["#"] = $vals[$i]['value']; } else { $children[$tagname][$size]["#"] = ''; } if ( isset ($vals[$i]['attributes']) ) { $children[$tagname][$size]['@'] = $vals[$i]['attributes']; } break; case 'close': return $children; break; } } return $children; } function traverse_xmlize($array, $arrName = "array", $level = 0) { foreach($array as $key=>$val) { if ( is_array($val) ) { traverse_xmlize($val, $arrName . "[" . $key . "]", $level + 1); } else { $GLOBALS['traverse_array'][] = '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n"; } } return 1; } function zeroFill($a, $ { $z = hexdec(80000000); if ($z & $a) { $a = ($a>>1); $a &= (~$z); $a |= 0x40000000; $a = ($a>>($b-1)); } else { $a = ($a>>$; } return $a; } function mix($a,$b,$c) { $a -= $b; $a -= $c; $a ^= (zeroFill($c,13)); $b -= $c; $b -= $a; $b ^= ($a<<8); $c -= $a; $c -= $b; $c ^= (zeroFill($b,13)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,12)); $b -= $c; $b -= $a; $b ^= ($a<<16); $c -= $a; $c -= $b; $c ^= (zeroFill($b,5)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,3)); $b -= $c; $b -= $a; $b ^= ($a<<10); $c -= $a; $c -= $b; $c ^= (zeroFill($b,15)); return array($a,$b,$c); } function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) { if(is_null($length)) { $length = sizeof($url); } $a = $b = 0x9E3779B9; $c = $init; $k = 0; $len = $length; while($len >= 12) { $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); $mix = mix($a,$b,$c); $a = $mix[0]; $b = $mix[1]; $c = $mix[2]; $k += 12; $len -= 12; } $c += $length; switch($len) { case 11: $c+=($url[$k+10]<<24); case 10: $c+=($url[$k+9]<<16); case 9 : $c+=($url[$k+8]<<8); /* the first byte of c is reserved for the length */ case 8 : $b+=($url[$k+7]<<24); case 7 : $b+=($url[$k+6]<<16); case 6 : $b+=($url[$k+5]<<8); case 5 : $b+=($url[$k+4]); case 4 : $a+=($url[$k+3]<<24); case 3 : $a+=($url[$k+2]<<16); case 2 : $a+=($url[$k+1]<<8); case 1 : $a+=($url[$k+0]); /* case 0: nothing left to add */ } $mix = mix($a,$b,$c); /*-------------------------------------------- report the result */ return $mix[2]; } //converts a string into an array of integers containing the numeric value of the char function strord($string) { for($i=0;$i<strlen($string);$i++) { $result[$i] = ord($string{$i}); } return $result; } $url = 'info:'.$urlo; $ch = GoogleCH(strord($url)); $chf = "6$ch"; $file = @file("http://www.google.com/search?client=navclient-auto&ch=".$chf."&q=".$url); $file_str = implode("", $file); if(preg_match("/<rk\>([0-9]*)\<\/rk\>/i",$file_str,$matches) !== false) { $pr = $matches[1]; } else { $pr = 0; } return $pr; }
  12. Bonjour, chez Infomaniak également...
  13. Magali, as-tu tenté ce que Crazy t'avais proposé précédemment avec le CD de Windows XP... vu qu'apparemment l'utilisation du Live CD n'a pas porté ces fruits cette fois-ci ?
  14. Impécable si ça marche ! Bone restauration de fichier, bien cela signifie que la lecture des partition NTFS est possible, si tu arrive copier ton fichier "ntoskrnl.exe" c'est que tu peux écrire. Merci de nous/me tenir au courrant, je suis intéressé par les capacités Live CD Linux je ne l'ai jamais testé... Buona notte ! PS: En même temps ça ne serait pas si mal pour elle, qu'elle ait sont mot de passe Admininstateur pour une prochaine fois... (désolé de te miner le moral directement ...mais ça arrivera tôt ou tard...à toi comme à nous, personne n'est à l'abri...)
  15. Important pour Magali ! Zut ! N'achète pas d'adaptateur ! Ton PC de bureau est sous Windows ME, je ne n'avais pas fait attention à cela (désolé). Il va être tout à fait difficle de récupérer des données même si tu achète cet adaptateur, Windows ME ne gérant pas NTFS tu ne pourras pas accéder à la partition du disque dur de ton portable une fois connecté à ton PC... Si tu as une version "non-PackardBellisée" de Windows XP c'est la solution de "Crazy" qu'il faut privilégier, mais j'ai crû comprendre que tu n'en n'avais pas :/ Il y a beaucoup de contraintes pour pouvoir effectuer un dépannage sans formatter le portable...la meilleure solution est de te procurer un CD de Windows XP (attention procure toi bien la version que tu as actuellement installée sur le portable, selon tes dires "Microsoft Windows XP Edition Familiale avec Service Pack 2") et suis les conseils de Crazy... Encore désolé de t'avoir mis sur une fausse piste pour cet adaptateur
  16. Très bon choix, la récupération de mot de passe (l'option gratuit) prend tout de même 2 jours et n'est pas garantie ( 98.5% de succès, mais bon quand on a pas la chance avec soi des fois... )... Je surveillerais ce message si tu as besoin d'aide pour récupérer tes données une fois l'adaptateur acheté PS: loginrecovery.com propose également une image de CD bootable, ils sont tout à fait conscient je pense que le lecteur de disquette tend à se raréfier
  17. Bonsoir, dans un fichier .htaccess que tu placera à la racine de ton site, utilise ceci : RedirectPermanent /chemin/fichier.php http://www.site.com/ A toi de remplacer les valeurs nécessaires au vu des détails que tu donne dans ta question. Pour d'autres type de redirection tu peux consulter ceci : http://httpd.apache.org/docs/1.3/mod/mod_alias.html
  18. Les (grands) esprits ce rencontrent... (hmm...Dieu sait combien de fois ce provèrbe a été utilisé sur le Hub...)
  19. Cela serait une très bonne nouvelle si Windows 98 supportait nativement NTFS Malheureusement ce n'est pas le cas, il y a sûrmeent possible d'utiliser des outils comme NTFSDOS pour accéder en LECTURE (version gratuite) à une partition en NTFS mais cela nous avancerait très peu... Effectivement elle peut aussi acheter une licence NTFSDOS Professional avec lecture/ecriture (http://www.sysinternals.com/Utilities/NtfsDosProfessional.html) ... mais je pense que l'adaptateur est moins cher... **EDIT** Je viens de m'apercevoir que ça fait très pub pour sysinternal ce message lol, ce n'est pas mon but du tout. C'est simplement le seul fournisseur d'application dans ce domaine à ma connaissance...
  20. Bonsoir, Peu de sites proposent du Streaming pur, pour une simple raison cela demande beaucoup de ressources au niveau du serveur. La majorité des sites préfèrent le Streaming "côté client", en utilisant un format comme le wmv/asf/asv/rm/ qui supportent l'ouverture d'un fichier incomplet et qui ne le verouillent pas, de cette manière la téléchargement peut continuer tout en permettant à l'utilisateur de commencer la visualisation du contenu (ce que AVI ne permet pas...)... Je ne suis pas professionnel dans ce domaine, je n'ai jamais eu de cas réel à traiter mais dans le cas d'un Streaming pur tu aura besoin d'un serveur logiciel de Streaming : RealNetworks Helix Producer pour un Streaming de fichier Real Windows Media Streaming Server pour les wmv Une brève recherche sur google m'a mené sur ce site : http://www.streaming-solutions.com/technologies/ Je sais également qu'il y a possibilité de faire du streaming avec des applets Java mais je n'ai jamais été convaincu que cela soit une bonne solution, d'ailleur on ne rencontre pas ceci très souvent...
  21. Dan> Le problème c'est qu'apparemment elle n'a pas sont mot de passe Administrateur et donc elle ne peut pas accéder à la Console de Récupération . C'est le faite de NTFS, pas de permissions pas de petit pains si je peux me permettre (désolé pour ceux qui ne connaissent pas la blague, quoi qu'il ont de la chance en fait)... C'est pour ça que je lui ai proposé cet adaptateur, le seul problème c'est qu'il lui faudra s'approprier (se définir comme Propriétaire) les fichiers du disque de son portable...mais c'est assez vite expliqué, il faut juste un compte Administrateur sur le PC (celui qui fonctionne...). Sinon elle peut aussi tenter de récupérer ou modifier son mot de passe Administrateur, mais cela peut être risqué...
  22. Je doute qu'en démarrant depuis un CD de Windows 98 tu aies accès à une partition NTFS (celle de Windows XP, si j'ai bien suivi le début du sujet)...vu que tout simplement ce système d'exploitation ne supporte pas ce système de fichiers aux dernières nouvelles... Désolé de te décourager de ce côté ...
  23. Bonsoir, Si tu n'as pas le mot de passe Administrateur, je doute que tu puisse faire quelque chose de plus au niveau de la Console de récupération... Il existe bien des moyen de retrouver/modifier le mot de passe Administrateur, mais je ne te le conseille pas du tout suivant le système de fichier (NTFS avec ESF en l'occurence) cela peut causer de grave pertes de données...de plus ce la demande quelques connaissances... il y a bien loginrecovery.com qui propose un service gratuit de récupération de mot de passe mais je n'ai jamais testé et je ne me sentirait pas à l'aise en envoyant mes fichiers personnels (la SAM, ce qui contient les mots de passe entre autres) à cette entreprise... Bref, mon conseil se résume à réinstaller ton système... ou si tu as vraiement des données à récupérer achète un adaptateur de disques durs 3.5" pour ton PC et connecte le disque dur de ton portable pour récupérer tes données depuis le PC qui fonctionne... quelque chose comme ceci : http://www.ldlc.ch/fiche/PB00020357.html
  24. Bienvenue cher compatriote ! J'espère, en même temps j'en suis sûr, que tu trouvera réponse à tes questions ici. Et ton aide sera toujours la bienvenue !
  25. Bonjour, Lors d'une requête HTTP (1.0 ou 1.1) le serveur peut renvoyer un champ "Last-Modified" qui te permet de obtenir la date de dernière modification déclarée par le document demandé. Ce n'est en aucun cas une source fiable (tout comme la date de modification que tu récupèrerais avec FTP). Voici un script qui te permet de récupérer ce champ depuis PHP. Attention tu as besoin d'avoir la librairie CURL installé : $modified = ""; function read_header($ch, $header) { global $modified; $length = strlen($header); if(strstr($header, "Last-Modified:")) { $modified = substr($header, 15); } return $length; } function last_mod($remote_file) { global $modified; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $remote_file); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header'); $headers = curl_exec ($ch); curl_close ($ch); return $modified; } echo last_mod("http://www.php.net/"); Source: http://www.php.net/curl , Commentaires des utilisateurs Je répète que le serveur peut retourner ce champs, mais s'il n'est pas reseigné au moyen de header() ou par une balise <meta> dans le document rien ne l'oblige à fournir cette date. Je ne sais pas s'il est possible de forcer le serveur à envoyer la date de modification du fichier, mais je doute que ce soit utile, surtout lorsqu'il s'agit de sites dynamiques (le fichier du script ne change pas, mais le contenu présenté, lui change)... PS: En l'occurence www.php.net semble renseigner correctement ce champ... **EDIT** Personnelement je n'utiliserais pas par une variable globale ($modified), à toi de changer le script selon tes besoins...
×
×
  • Créer...