Discussion:
Lecture Image source renvoyee par un script php
(trop ancien pour répondre)
julien@omnes.org
2007-04-10 17:16:50 UTC
Permalink
bonjour,

je débute en PHP et je rencontre une petite difficulté, je m'explique:

dans un navigateur , l'execution d'un fichier distant x.php me renvoie
une image et c'est une image y.jpg qui s'affiche comme si j'avais
directement pointé l'adresse de l'image y.jpg.

evidemment l'image source est dynamique .....(d'ou l'utilisation du
php)

ce que je cherche à faire c'est récupérer dans un script php l'adresse
et le nom de l'image source renvoyée par le script x.php.

qq chose du genre :

$FicSource = Get..link...("x.php");


si vous avez des idées, je suis preneur .....

a+
Olivier Miakinen
2007-04-10 18:00:12 UTC
Permalink
Post by ***@omnes.org
dans un navigateur , l'execution d'un fichier distant x.php me renvoie
une image et c'est une image y.jpg qui s'affiche comme si j'avais
directement pointé l'adresse de l'image y.jpg.
evidemment l'image source est dynamique .....(d'ou l'utilisation du
php)
ce que je cherche à faire c'est récupérer dans un script php l'adresse
et le nom de l'image source renvoyée par le script x.php.
Tu ne peux évidemment pas récupérer en toute généralité le nom de
l'image source, puisque la plupart du temps il n'y a pas d'image
source (les images renvoyées par PHP peuvent très bien avoir été
générées à la volée).

Cela dit, si l'auteur du script PHP a transmis un nom en plus de l'image
dans les entêtes HTTP, tu dois pouvoir récupérer ce nom (c'est celui que
le navigateur te proposera en général pour sauver le fichier).

Pour cela, le script peut commencer par exemple par :
<?php
header('Content-Type: image/jpeg');
header('Content-Disposition: inline; filename="bidule.jpg"');
... lecture ou génération de l'image ...
?>
Post by ***@omnes.org
$FicSource = Get..link...("x.php");
Tu interroges un serveur à partir d'un autre serveur ? Avec Curl par
exemple ?
julien@omnes.org
2007-04-10 20:08:29 UTC
Permalink
Post by Olivier Miakinen
Tu ne peux évidemment pas récupérer en toute généralité le nom de
l'image source, puisque la plupart du temps il n'y a pas d'image
source (les images renvoyées par PHP peuvent très bien avoir été
générées à la volée).
non, dans mon cas, pas de génération d'image, il y a toujours une
image source.
Post by Olivier Miakinen
Cela dit, si l'auteur du script PHP a transmis un nom en plus de l'image
dans les entêtes HTTP, tu dois pouvoir récupérer ce nom (c'est celui que
le navigateur te proposera en général pour sauver le fichier).
<?php
header('Content-Type: image/jpeg');
header('Content-Disposition: inline; filename="bidule.jpg"');
... lecture ou génération de l'image ...
en, fait le script x.php se comporte comme une "redirection".

en executant dans le navigateur :

http://www.site.com/x.php
je me retrouve automatiquement sur :
Loading Image...
(y compris dans la barre d'adresse)

et c'est ça qui m'interresse -> récupérer -> http://www.site.com/y.jpg
à partir de l'execution de x.php

a+
Olivier Miakinen
2007-04-10 22:37:32 UTC
Permalink
Post by ***@omnes.org
en, fait le script x.php se comporte comme une "redirection".
http://www.site.com/x.php
http://www.site.com/y.jpg
(y compris dans la barre d'adresse)
et c'est ça qui m'interresse -> récupérer -> http://www.site.com/y.jpg
à partir de l'execution de x.php
Là j'avoue que je ne vois pas où est le problème. Si x.php décide de
faire une redirection vers y.jpg, alors non seulement le serveur connaît
l'adresse finale, mais le navigateur aussi puisqu'il a reçu la demande
de redirection et que c'est lui qui fait une nouvelle requête !
julien@omnes.org
2007-04-11 08:46:53 UTC
Permalink
Post by Olivier Miakinen
Post by ***@omnes.org
en, fait le script x.php se comporte comme une "redirection".
http://www.site.com/x.php
http://www.site.com/y.jpg
(y compris dans la barre d'adresse)
et c'est ça qui m'interresse -> récupérer ->http://www.site.com/y.jpg
à partir de l'execution de x.php
Là j'avoue que je ne vois pas où est le problème. Si x.php décide de
faire une redirection vers y.jpg, alors non seulement le serveur connaît
l'adresse finale, mais le navigateur aussi puisqu'il a reçu la demande
de redirection et que c'est lui qui fait une nouvelle requête !
oui le navigateur la connait après execution du script, mais je veux
juste récupérer cette chaine à partir d'un script PHP et sans executer
ce script directement dans un navigateur.
Olivier Miakinen
2007-04-11 08:55:48 UTC
Permalink
Post by ***@omnes.org
Post by Olivier Miakinen
Là j'avoue que je ne vois pas où est le problème. Si x.php décide de
faire une redirection vers y.jpg, alors non seulement le serveur connaît
l'adresse finale, mais le navigateur aussi puisqu'il a reçu la demande
de redirection et que c'est lui qui fait une nouvelle requête !
oui le navigateur la connait après execution du script, mais je veux
juste récupérer cette chaine à partir d'un script PHP et sans executer
ce script directement dans un navigateur.
On parle dans le vide, là.

1) C'est toi qui es l'auteur du script x.php ?
2) Tu peux nous en donner un en exemple ?
3) Tu peux modifier x.php ?
4) Tu peux en écrire un autre sur le même serveur ?
5) Tu peux en écrire un sur un autre serveur ?

Note que si tu peux modifier x.php, tu peux très bien rajouter un
paramètre, mettons « ?show=url », pour que cela fasse « echo y.jpg »
au lieu de « header('Location: Loading Image...') ». Est-ce
que c'est ça que tu cherches ?
julien@omnes.org
2007-04-11 09:50:27 UTC
Permalink
Post by Olivier Miakinen
Post by ***@omnes.org
Post by Olivier Miakinen
Là j'avoue que je ne vois pas où est le problème. Si x.php décide de
faire une redirection vers y.jpg, alors non seulement le serveur connaît
l'adresse finale, mais le navigateur aussi puisqu'il a reçu la demande
de redirection et que c'est lui qui fait une nouvelle requête !
oui le navigateur la connait après execution du script, mais je veux
juste récupérer cette chaine à partir d'un script PHP et sans executer
ce script directement dans un navigateur.
On parle dans le vide, là.
1) C'est toi qui es l'auteur du script x.php ?
2) Tu peux nous en donner un en exemple ?
3) Tu peux modifier x.php ?
4) Tu peux en écrire un autre sur le même serveur ?
5) Tu peux en écrire un sur un autre serveur ?
Note que si tu peux modifier x.php, tu peux très bien rajouter un
paramètre, mettons « ?show=url », pour que cela fasse « echo y.jpg »
au lieu de « header('Location:http://example.com/y.jpg') ». Est-ce
que c'est ça que tu cherches ?
1) non
en fait je vais donner l'exemple ça sera plus simple.
3) non
4) non

voici le script php (que j'ai précedement appelé x.php) :
http://roundshot.gotdns.com/php/show_panorama_last.php

lorsqu'on charge cette page dans un navigateur il va te rediriger vers
un jpg:
Loading Image...
(l'image dépendra de l'heure ...)

ici le script show_panorama_last.php va afficher la dernière photo
prise, et c'est ça qui m'interresse, récupérer le lien de la dernière
photo prise mais sans l'afficher !
j'ai besoin de la retravailler donc j'ai besoin de la charger avec
imagecreatefromjpeg() etc .....
Olivier Miakinen
2007-04-11 21:44:03 UTC
Permalink
Post by ***@omnes.org
Post by Olivier Miakinen
1) C'est toi qui es l'auteur du script x.php ?
2) Tu peux nous en donner un en exemple ?
3) Tu peux modifier x.php ?
4) Tu peux en écrire un autre sur le même serveur ?
5) Tu peux en écrire un sur un autre serveur ?
1) non
en fait je vais donner l'exemple ça sera plus simple.
3) non
4) non
Donc, quoique tu n'aies pas répondu à la question 5, je suppose que sa
réponse est « oui » (sinon, je ne vois pas bien ce que ferait cette
discussion dans le groupe fr.comp.lang.php).
Post by ***@omnes.org
http://roundshot.gotdns.com/php/show_panorama_last.php
lorsqu'on charge cette page dans un navigateur il va te rediriger vers
http://roundshot.gotdns.com/data/foto_original/2007/04/2007_0411_110000.jpg
(l'image dépendra de l'heure ...)
ici le script show_panorama_last.php va afficher la dernière photo
prise, et c'est ça qui m'interresse, récupérer le lien de la dernière
photo prise mais sans l'afficher !
j'ai besoin de la retravailler donc j'ai besoin de la charger avec
imagecreatefromjpeg() etc .....
Tu confirmes ici que tu as un autre serveur avec PHP. Mais on aurait
quand même gagné énormément de temps si tu nous avais donné toutes ces
informations dès ton premier article, ou dans le deuxième, ou peut-être
le troisième (voire le quatrième, quand je te l'ai demandé). J'ai trouvé
assez fatigant de devoir te tirer les vers du nez. :-P


Cela dit il me semble que la réponse passe par l'utilisation de l'option
CURLOPT_FOLLOWLOCATION de curl_setopt (mettre la valeur à FALSE).

<cit. http://fr2.php.net/manual/fr/function.curl-setopt.php>
CURLOPT_FOLLOWLOCATION
TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie
dans les en-têtes HTTP (notez que cette fonction est récursive et que
PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que
CURLOPT_MAXREDIRS ne soit définie).
</cit.>
julien@omnes.org
2007-04-12 09:30:14 UTC
Permalink
On 11 avr, 23:44, Olivier Miakinen <om+***@miakinen.net> wrote:

...... No comment ....je suis pas là pour ça !
Post by Olivier Miakinen
Cela dit il me semble que la réponse passe par l'utilisation de l'option
CURLOPT_FOLLOWLOCATION de curl_setopt (mettre la valeur à FALSE).
<cit.http://fr2.php.net/manual/fr/function.curl-setopt.php>
CURLOPT_FOLLOWLOCATION
TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie
dans les en-têtes HTTP (notez que cette fonction est récursive et que
PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que
CURLOPT_MAXREDIRS ne soit définie).
</cit.>
merci pour les infos, je vais explorer cette piste.
julien@omnes.org
2007-04-14 13:50:26 UTC
Permalink
Post by ***@omnes.org
Post by Olivier Miakinen
Cela dit il me semble que la réponse passe par l'utilisation de l'option
CURLOPT_FOLLOWLOCATION de curl_setopt (mettre la valeur à FALSE).
<cit.http://fr2.php.net/manual/fr/function.curl-setopt.php>
CURLOPT_FOLLOWLOCATION
TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie
dans les en-têtes HTTP (notez que cette fonction est récursive et que
PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que
CURLOPT_MAXREDIRS ne soit définie).
</cit.>
merci pour les infos, je vais explorer cette piste.
pour ceux que ça interresse, je poste le résultat.
la méthode est bonne, par contre en l'option CURLOPT_FOLLOWLOCATION à
FALSE l'adresse renvoyée est toujours l'adresse de départ, j'ai donc
modifier les options suiavntes:
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

ce qui me permet d'obtenir différentes infos lors curl_exec, et dans
ses infos se trouve l'adresse de redirection....

merci.
Olivier Miakinen
2007-04-14 20:39:53 UTC
Permalink
Post by ***@omnes.org
pour ceux que ça interresse, je poste le résultat.
C'est une excellente idée, et je t'en remercie.
Post by ***@omnes.org
la méthode est bonne, par contre en l'option CURLOPT_FOLLOWLOCATION à
FALSE l'adresse renvoyée est toujours l'adresse de départ, j'ai donc
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
ce qui me permet d'obtenir différentes infos lors curl_exec, et dans
ses infos se trouve l'adresse de redirection....
Parfait.

Continuer la lecture sur narkive:
Loading...