Aller au contenu

passer un script par <img src...>


lorik

Sujets conseillés

Bonjour,

Je suis nouveau ici, mais ça à l'air sympa ! Une question un peu 'hard' pour commencer :

Je cherche à passer un script php par la balise

<img src=http://www.monscript.php>.

J'ai vu ça quelques fois, notamment dans l'excellent script phpmyvisites, mais je n'arrive pas à reproduire. Pas de message d'erreur, simplement, c'est comme si mon script n'était pas appellé. Il ne se passe rien.

Je l'appelle à partir d'une page html (pas php), mais je ne pense pas que ça soit important.

Et pour la petite histoire, je voudrais que l'url (et ses variables) de la page appellante soit récupérée dans le script appellé. Mais il faut d'abord que le script marche !

Par avance merci si quelqu'un a déja fais ça et peut me donner un tuyau.

A +

Lien vers le commentaire
Partager sur d’autres sites

J'aurais tendance à dire.. facile, il suffit de marquer :

<img src=http://www.monsite.com/monscript.php>

Ensuite, que veux tu qu'il se passe ?

Parce que là, ce qu'il va se passer, c'est que le programme en question va appeler une image, qui s'appelle monscript.php.

(et c'est là que ca devient plus 'complexe'.)

Si le programme 'monscript.php' n'envoie pas les bons 'headers', si 'monscript.php' ne renvoie pas une image, alors tu n'auras rien qui s'affichera.

Si monscript.php ne contient qu'une seule ligne, du genre echo'coucou';

alors non, rien ne s'affichera .

Par contre, si monscript.php contient une 'vraie image', alors ca renverra une image ;)

Ensuite, monscript.php peut faire des 'choses', avant d'envoyer l'image. Par exemple compter des stats, générer l'image dynamiquement, etc..

Etc..

Saurais tu être plus précis ? ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Anonynus, et merci,

Bon, premièrement, je suis un burin ! En fait, mon script est bien appelé, mais j'avais oublié quelques include dedans, donc le resultat était pas le bon ! Donc ce point est OK.

Pour ce script, ce que je cherche, c'est qu'il entre dans une BD des données présentes d'ans l'url de la page 'mère'.

Exemple, si la page mere se nomme 'page.htm?var=12&var2=20', je veux récupérer var et var2 dans mon script. Mais attention, la page 'mere' est en .htm, donc pas question de glisser du php dedans, ça serait trop facile ;-))

Donc mon souci c'est d'arriver à récuperer ces variables. après, pour l'insertion en BDD, pas de problème. Dans phpmyvisites, il y a tout un tas de javascript avant le <img src...>. Mais si en php je suis pas bon, en JS c'est l'horreur !

Voila, voila, voila...

Merci de ton aide si tu vois une piste, et sinon, merci quand même d'avoir essayé !

Lien vers le commentaire
Partager sur d’autres sites

Si ta page s'appelle : 'page.htm?var=12&var2=20', tu oublies.

Il te faut une page qui s'appelle page.php?etc.. autrement dit, une page php.

Si tu peux éventuellement mettre : page.htm, mais que ce ne soit pas une page .htm, alors c'est possible. Pour cela, tu pourrais t'aider de l'url_rewriting (voir les articles du Hub, partie 'publication').

Tu gardes ton 'page.htm?etc..', lorsque l'on appelle cette page, le htaccess fait un appel à la page 'page.php?etc..', et dans cette page en php, tu fais 'ce que tu veux'.

Mais si tu veux garder cette 'page.htm', en appel et sur le serveur, alors je ne vois pas comment tu peux faire. :(

Désolé.

Lien vers le commentaire
Partager sur d’autres sites

Si j'ai bien compris, lorsque une image est appelée sur ton serveur, tu veux récupérer l'url de la page mère et les paramètres qui vont avec ? (ou alors j'ai rien compris)

Dans monimage.php tu fais :

<?php
// traitement du $_SERVER['HTTP_REFERER'] pour récupérer les parametres et ajout dans base de donnée

// pas de mise en cache de l'image
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

// lecture de l'image
$fichier='monimage.gif';
$image = fread(fopen($fichier, "r"), filesize($fichier));

// envoi de l'image
Header("Content-type: image/gif");
echo $image;
?>

PS: pourquoi ne pas donner directement un nom classique à l'image (genre monimage.gif) et forcer la compilation ?

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir et merci Jeroen,

Effectivement, j'arrive à récupérer l'url de la page mêre avec :

$url=$_SERVER["HTTP_REFERER"];

Je t'avoue que j'ai pas compris grand chose à ton script incluant une image, avec les header et tout, mais bon, j'ai le résultat, c'est déja ça !

Maintenant, il faut que je décortique cette url, pour en sortir les variables, et notamment les mots clès qui doivent y figurer.

Je m'y colle !

Merci encore

A+

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Bonjour,

Je continue dans ma quette ultime de la stat...

J'ai un petit soucis avec $_SERVER['HTTP_REFERER'];

Je rapele le contexte :

J'ai une page 'mere.htm', dans laquelle figure un tag javascript appelant un script 'monscript.php', via un <img src=monscript.php...>.

Ca marche bien.

Mais dans monscript.php, je veux récupérer l'url et les variable de 'mere.htm'.

Donc simple, j'utilise $_SERVER['HTTP_REFERER']; qui devrait me renvoyer $;http://domaine.com/mere.htm?touteslesvariables'.

Le souci : Dans +/- 5% des cas, $_SERVER['HTTP_REFERER']; est vide ! ce qui est impossible, sauf si le tag est appellé 'en direct' dans la barre d'adresse du navigateur, ce qui serait extraordinaire puisque c'est une script en test sur une page spécifique.

D'ou ma question : $_SERVER['HTTP_REFERER'] est il fiable, quelqu'un adéja connu le problème ?

Par avance merci

En effet, parfois, un peu trop souvent à mon gout, il ne

Lien vers le commentaire
Partager sur d’autres sites

Il est fiable, sauf pour les personnes derrière un parefeu qui ont choisi de ne pas transmettre le REFERER ... il y en a assez peu, mais il y en a quand même.

Dan

Lien vers le commentaire
Partager sur d’autres sites

Il est fiable, sauf pour les personnes derrière un parefeu qui ont choisi de ne pas transmettre le REFERER ... il y en a assez peu, mais il y en a quand même.

Dan

<{POST_SNAPBACK}>

Avec Firefox, on peut également ne pas transmettre le REFERER, option que j'active dans pas mal de cas...

Je pense que c'est également possible via Opera...

Donc tes 5% de vides viennent surement des navigateurs et des pare-feu, comme le souligne Dan...

Lien vers le commentaire
Partager sur d’autres sites

Ce n'est pas natif dans Firefox, c'est dispo uniquement avec l'extension WebDeveloper ;)

Ou alors les équipes de Mozilla n'ont implementé çà que récemment.. çà je ne saurais pas dire, je suis tellement accroché à la légèreté de Safari que je n'utilise Firefox que pour des tests.

[edit] damned, je m'étais fait grillé, j'avais pas vu :fou: [/edit]

Modifié par Dudu
Lien vers le commentaire
Partager sur d’autres sites

J'ai bien webdeveloper, mais j'avais cherché dans firefox :lol:

Merci !

<{POST_SNAPBACK}>

Tu peux aussi taper 'about:config' dans ta barre d'adresse, mettre le filtre sur network.http.sendRefererHeader, et passer sa valeur qui par défaut est à 2 à 0.

Radical ;)

Tu désactives complètement les referrer.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...