Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2010, 23h00   #1
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 :
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 00h00   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 00h51   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 01h46   #4
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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)?
  Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 11h17   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h36   #6
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
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...
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h04   #7
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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
  Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h55   #8
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Euh moi je viens d'essayer en GET et ça fonctionne...

http://www.infogreffe.fr/infogreffe/...iren=954507976
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h03   #9
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Citation:
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h21   #10
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
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 ;-)
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h50   #11
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Je crois que je n'ai pas bien le choix de toutes manières

En tout cas merci du coup de main une fois de plus.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h47.


 
 
 
 
Partenaires

Hébergement Web