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 :

Ouvrir un URL grâce à un entête HTTP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    skandhal
    Invité(e)
    Par défaut Ouvrir un URL grâce à un entête HTTP
    Bonjour à toutes et à tous,

    Je voulais savoir s'il était possible d'ouvrir un URL (site externe) en envoyant un entête (header) HTTP au serveur de ce site externe?

    J'ai essayé cela:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
    	header('POST /infogreffe/newRechercheEntreprise.xml HTTP/1.1');
    	header('HOST: www.infogreffe.fr');
    	header('User-Agent: Nono');
    	header('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    	header('Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3');
    	header('Accept-Encoding: gzip,deflate');
    	header('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7');
    	header('Keep-Alive: 115');
    	header('Connection: keep-alive');
    	header('Content-Length: 51');
    	header('Content: denomination=&commune=&departement=&siren=954507976');
    	exit();
    ?>

    Mais je n'ai qu'un page blanche au final.

    Enfait, j'aimerai envoyer sur le site infogreffe.fr la requête permettant de rechercher une entreprise depuis son RCS (partie du SIREN).

    Le numéro RCS est présent dans la ligne juste avant le exit();. Il s'agit du RCS de la Lyonnaise de Banque (CIC) de Lyon. Le seul RCS que j'avais sous la main facilement pour faire mes tests

    Mais étant donner qu'aucun paramètre ne peut être passer par l'url, j'ai analysé les entêtes HTTP, avec Live HTTP Header (extension de Firefox).

    J'ai repris ces entêtes dans Client REST simple (extension de Chrome) pour vérifier que je pouvais afficher le résultat. Client REST simple me retourne le code source de la réponse à l'entête HTTP que j'envoie (copie de Live HTTP Header). Si je créé un fichier avec le code source récupéré par Client REST simple, et que je l'affiche dans mon navigateur, j'ai bien la page d'infogreffe.fr avec le résultat de ma recherche.

    En fait je souhaite simplement vérifier au prés d'infogreffe qu'une entreprise existe sans avoir à faire des copier/coller de numéros RCS dans leur page d'accueil. Ces RCS étant stocké dans une base de données, il est logiquement plus facile de générer des entêtes HTTP pour voir le résultat directement dans un navigateur.

    ---
    Récapitulatif:
    Un site avec une base de données contenant des RCS > Générer des liens qui envoient un entête HTTP au serveur d'infogreffe.fr > Ouvrir le résultat dans un nouvel onglet (ou nouvelle fenêtre).

    En espérant m'être fait comprendre.
    Dernière modification par sabotage ; 30/11/2010 à 20h51.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    PHP n'est pas un navigateur, il ne reçoit pas la réponse du serveur web.

    La méthode la plus simple pour effectuer des requête HTTP est d'utiliser cURL.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par sabotage Voir le message
    PHP n'est pas un navigateur, il ne reçoit pas la réponse du serveur web.

    La méthode la plus simple pour effectuer des requête HTTP est d'utiliser cURL.
    ou file_get_contents et/ou stream ca suffis

  4. #4
    skandhal
    Invité(e)
    Par défaut
    Avec cURL j'ai un début de résultats. La seule chose qui ne me satisfait pas c'est que je ne fini pas sur le site souhaité. C'est uniquement une copie du site qui remplace ma page PHP. Est ce que je peux envoyer un entête http perso avec cURL? (Je ne me suis pas assez penché sur la question.)

    Est ce que je résultat sera le même avec file_get_content? avec stream? (Je pense que oui, à la vu du nom de ces outils )

    J'ai un autre problème qui va me "contraindre" à utiliser les outils PEAR. Est ce que ce framework PHP peut éventuellement m'aider? (Cela peut paraître totalement con comme question, mais je ne connais absolument pas PEAR.)

    Personne d'autres ne sait comment je pourrais faire pour devenir le maître du monde? réaliser cette opération (décrite dans mon premier message, cf. Récapitulatif)?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par skandhal Voir le message
    Avec cURL j'ai un début de résultats. La seule chose qui ne me satisfait pas c'est que je ne fini pas sur le site souhaité. C'est uniquement une copie du site qui remplace ma page PHP. Est ce que je peux envoyer un entête http perso avec cURL? (Je ne me suis pas assez penché sur la question.)

    Est ce que je résultat sera le même avec file_get_content? avec stream? (Je pense que oui, à la vu du nom de ces outils )

    J'ai un autre problème qui va me "contraindre" à utiliser les outils PEAR. Est ce que ce framework PHP peut éventuellement m'aider? (Cela peut paraître totalement con comme question, mais je ne connais absolument pas PEAR.)

    Personne d'autres ne sait comment je pourrais faire pour devenir le maître du monde? réaliser cette opération (décrite dans mon premier message, cf. Récapitulatif)?
    Comme la dis Sabotage, PHP n'est pas un navigateur, a part la "copie" du site t'aura rien d'autre

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Citation Envoyé par skandhal Voir le message
    Récapitulatif:
    Un site avec une base de données contenant des RCS > Générer des liens qui envoient un entête HTTP au serveur d'infogreffe.fr > Ouvrir le résultat dans un nouvel onglet (ou nouvelle fenêtre).

    En espérant m'être fait comprendre.
    Pas sur d'avoir compris, mais si tu veux des onglets avec le contenu du site info greffe pour vérification manuelle, pourquoi s'emmerder comme ça et ne pas générer une page html avec les liens vers infogreffe ?

    Si tu ne veux pas cliquer, tu as juste à faire un javascript qui les ouvres en popup...

  7. #7
    skandhal
    Invité(e)
    Par défaut
    Pour PHP, j'avais compris depuis fort longtemps que ce n'était pas un navigateur

    Je pensais pouvoir faire une "redirection" (en quelque sorte) avec un entête spécifique tout en ouvrant un nouvel onglet (ou une nouvelle page).

    A défaut, j'ai décidé de refaire un formulaire qui reprend le même schéma de celui d'infogreffe. Mais je ne sais pas si je vais arrivé au résultat souhaité, j'ai quelques problèmes sur le résultat justement. (Je pense les appeler pour savoir s'ils n'ont pas déjà un outil qui me permettrait d'avoir le résultat souhaité).

    Citation Envoyé par Joker-eph
    [...]ne pas générer une page html avec les liens vers infogreffe ?
    C'est justement ce que je cherche à faire, mais les variables sont passées en POST donc ça implique de générer les entêtes HTTP. Mon problème c'est justement de créer des liens me permettant d'envoyer ces entêtes HTTP. Si tu sais comment faire je suivrai tes explications avec plaisir

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Euh moi je viens d'essayer en GET et ça fonctionne...

    http://www.infogreffe.fr/infogreffe/...iren=954507976

  9. #9
    skandhal
    Invité(e)
    Par défaut
    Euh moi je viens d'essayer en GET et ça fonctionne...
    Cela fonctionne si tu as déjà une session ouverte sur le site infogreffe. Efface ton cache et colle le lien. Cela ne fonctionne plus. En tout cas pas chez moi, que ce soit sur Firefox ou Chrome, j'ai un message d'erreur: "Session expirée".

    J'avais essayé en GET mais sans résultat peut-être parce que je ne mettais pas denomination=&commune=&departement=& devant le siren=

    Bref, je vais voir ce que je peux obtenir avec ça. Merci pour le coup de main.
    Je passe en résolu dans le journée je pense.

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Ben ça ne change pas grand chose, tu génère un premier lien qui arrive sur la page de formulaire pour ouvrir la session, et ensuite les liens suivant fonctionneront ;-)

Discussions similaires

  1. [PHP 5.2] L'inclusion d'un URL affiche les entêtes HTTP
    Par lioudow dans le forum Langage
    Réponses: 1
    Dernier message: 17/06/2010, 16h02
  2. [URL Rewriting] Réécriture sur entête HTTP
    Par dedz dans le forum Apache
    Réponses: 11
    Dernier message: 16/12/2007, 17h08
  3. [ASP] Ouvrir une url
    Par castaka dans le forum ASP
    Réponses: 2
    Dernier message: 04/08/2005, 11h02
  4. [URL] Fichier présent en HTTP : comment savoir?
    Par ®om dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 10/06/2005, 15h11
  5. Ouvrir une URL en C/C++ sous Win32
    Par pykoon dans le forum MFC
    Réponses: 7
    Dernier message: 26/04/2005, 09h08

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