IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Retrouver le header de n'importe quel fichier distant ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut [Système] Retrouver le header de n'importe quel fichier distant ?
    Bonjour à tous,

    je cherche une fonction simple qui me permet de trouver le header de n'importe quel fichier distant sur le web. J'ai bien trouvé cela:

    function remote_file_exists ($url)
    {
    /*
    Permet de tester si les urls sont valides
    Return error codes:
    1 = Invalid URL host
    2 = Unable to connect to remote host
    3 = Le fichier n'est pas une application
    */
    $head = "";
    $url_p = parse_url ($url);

    if (isset ($url_p["host"]))
    { $host = $url_p["host"]; }
    else
    { return 1; }

    if (isset ($url_p["path"]))
    { $path = $url_p["path"]; }
    else
    { $path = ""; }

    $fp = @fsockopen ($host, "80", $errno, $errstr, 20);

    if (!$fp)
    { return 2; }
    else
    {
    $parse = parse_url($url);
    $host = $parse['host'];

    fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
    fputs($fp, "HOST: ".$host."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");

    $headers = "";
    while (!feof ($fp))
    {
    $headers .= fgets ($fp, 128);
    }
    // -- est ce une application ? --
    $type = substr_count($headers,"Content-Type: application");
    if ($type!=1){
    return 3;
    }

    }
    fclose ($fp);
    $arr_headers = explode("\n", $headers);
    $return = false;
    if (isset ($arr_headers[0]))
    { $return = strpos ($arr_headers[0], "404") === false; }
    return $return;
    }
    Mais la seule chose qui m'interesse, c'est de savoir si le fichier distant est bien une application obtenue ici
    $type = substr_count($headers,"Content-Type: application");
    N'y a t'il pas quelque chose de plus simple sans passer par un fsockopen qui nécessite de de connaitre le port du serveur ? Ce ne serait pas possible avec un :
    fopen("$url", "r");
    Merci d'avance... Car je suis entrain de m'arracher les cheveux.

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Ben tu le connais le port... Tout serveur web écoute par defaut sur le port 80
    Sinon tu peux aussi utiliser http://php.net/curl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] Récupérer n'importe quel fichier du serveur
    Par zobbyzobba dans le forum Langage
    Réponses: 1
    Dernier message: 15/12/2011, 10h46
  2. Réponses: 26
    Dernier message: 28/10/2009, 11h07
  3. Executer n'importe quel fichier
    Par ZouBi dans le forum Qt
    Réponses: 9
    Dernier message: 14/05/2008, 01h19
  4. Convertir n'importe quel fichier to Xml.
    Par thierryakaguy dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 01/10/2007, 22h29
  5. Réponses: 2
    Dernier message: 12/06/2007, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo