Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture Image source renvoyee par un script php

10 réponses
Avatar
julien
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+

10 réponses

Avatar
Olivier Miakinen

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.


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 ...
?>

qq chose du genre :

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


Tu interroges un serveur à partir d'un autre serveur ? Avec Curl par
exemple ?

Avatar
julien
On 10 avr, 20:00, Olivier Miakinen <om+ wrote:

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.


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 ...


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 :
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

a+

Avatar
Olivier Miakinen

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 :
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 !

Avatar
julien
On 11 avr, 00:37, Olivier Miakinen <om+ wrote:



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 :
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.


Avatar
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 ?


Avatar
julien
On 11 avr, 10:55, Olivier Miakinen <om+ wrote:



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:
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 .....



Avatar
Olivier Miakinen
Le 11/04/2007 11:50, me répondait :

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).

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:
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.>


Avatar
julien
On 11 avr, 23:44, Olivier Miakinen <om+ wrote:

...... No comment ....je suis pas là pour ça !

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.

Avatar
julien
On 11 avr, 23:44, Olivier Miakinen <om+ wrote:

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.


Avatar
Olivier Miakinen

pour ceux que ça interresse, je poste le résultat.


C'est une excellente idée, et je t'en remercie.

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....


Parfait.