Discussion:
Appel procedure php lors d'un downloa d
(trop ancien pour répondre)
M
2007-03-22 11:33:39 UTC
Permalink
Bonjour,

Contexte : une page php contient des liens vers des fichiers (jpg, doc)
Objectif : tracer les clics sur ces éléments dans une base.
Question : est-ce possible d'appeler une procédure php lors du clic sur
ces éléments ?
Contrainte : sans javascript ;-)

Merci !
M
Olivier Miakinen
2007-03-22 13:32:43 UTC
Permalink
Post by M
Contexte : une page php contient des liens vers des fichiers (jpg, doc)
Objectif : tracer les clics sur ces éléments dans une base.
Question : est-ce possible d'appeler une procédure php lors du clic sur
ces éléments ?
Contrainte : sans javascript ;-)
Avec un truc de ce genre ? Garanti 100 % sans JavaScript.


Fichier .htaccess :
Options +MultiViews

Fichier machin.jpg.php :
<?php
header("Content-type: image/jpeg");
... tracer l'appel dans la base ...
readfile("CHEMIN/machin.jpg");
?>

Fichier CHEMIN/machin.jpg :
-- l'image --
Thierry
2007-03-22 13:50:34 UTC
Permalink
Post by Olivier Miakinen
Options +MultiViews
Ca implique d'avoir un fichier machin par image, non ?
Pour logguer les appels a tous les jpg:
RewriteRule (.*).jpg$ log.php?img=$1 [QSA]Pour loguer les docs en sus ca
doit ressembler a ca (je suis nul en exp. regulieres):RewriteRule
(.*).[jpg|doc]$ log.php?img=$1 [QSA]
Olivier Miakinen
2007-03-22 18:50:33 UTC
Permalink
Post by Thierry
Post by Olivier Miakinen
Options +MultiViews
Ca implique d'avoir un fichier machin par image, non ?
Oui.
Post by Thierry
RewriteRule (.*).jpg$ log.php?img=$1 [QSA]
Ta solution est bien meilleure en effet.
Post by Thierry
Pour loguer les docs en sus ca
doit ressembler a ca (je suis nul en exp. regulieres):RewriteRule
(.*).[jpg|doc]$ log.php?img=$1 [QSA]
Je n'ai jamais utilisé les RewriteRule, mais connaissant mieux les
expressions régulières je parierais pour des parenthèses à la place
des crochets :

(.*).(jpg|doc)$ log.php?img=$1 [QSA]
M
2007-03-22 18:50:33 UTC
Permalink
Olivier, Thierry,

Merci ! Ca marche comme je le souhaitais.

M
Jerome Blion
2007-03-22 19:24:47 UTC
Permalink
Post by Thierry
Post by Olivier Miakinen
Options +MultiViews
Ca implique d'avoir un fichier machin par image, non ?
Suffit de passer le paramètre qui va bien dans le script php...

<a href="monlien.php?f=moi.jpg">Coucou</a>
par exemple.

monlien.php se charge d'envoyer les bons entêtes, logger, et envoyer le
fichier.
Post by Thierry
RewriteRule (.*).jpg$ log.php?img=$1 [QSA]Pour loguer les docs en sus ca
doit ressembler a ca (je suis nul en exp. regulieres):RewriteRule
(.*).[jpg|doc]$ log.php?img=$1 [QSA]
Encore plus simple :
- Un dossier dans lequel on fout tous nos fichiers à télécharger.
- .htaccess : Deny from all
- monlien.php va chercher les données dans le dossier pour les envoyer
en temps réel.

En cas de tentatives de grugeages en pointant sur le fichier en direct,
on aura un 403.

L'idéal est encore de pouvoir utiliser une liste de correspondances
entre les fichiers et le lien à mettre dans le paramètre f que je
donne... pour éviter que l'utilisateur s'amuse à tout essayer (genre
tenter de voir le .htpasswd)

On aurait alors un monlien.php=f=134
et dans un fichier ou une table mysql

134 ==> images/moi.jpg

pour ensuite faire tout ce qu'il faut...
Olivier Miakinen
2007-03-22 21:00:08 UTC
Permalink
Post by Jerome Blion
Suffit de passer le paramètre qui va bien dans le script php...
<a href="monlien.php?f=moi.jpg">Coucou</a>
par exemple.
monlien.php se charge d'envoyer les bons entêtes, logger, et envoyer le
fichier.
D'accord, mais alors cela t'impose de changer les liens dans toutes les
pages HTML. Ma solution, et encore mieux celle de Thierry, demandent
beaucoup moins de changement.
Thierry
2007-03-23 10:31:42 UTC
Permalink
"Jerome Blion" <***@free.fr> a écrit dans le message de news:
4602d04d$0$10251$***@news.free.fr...

Tiens, un BlionCorp :-)
Post by Jerome Blion
Suffit de passer le paramètre qui va bien dans le script php...
<a href="monlien.php?f=moi.jpg">Coucou</a>
par exemple.
C'est lourd. Surtout si t'utilises un truc clicodrome pour generer tes pages
HTML.
Elle est simple ma soluce !
Post by Jerome Blion
L'idéal est encore de pouvoir utiliser une liste de correspondances entre
les fichiers et le lien à mettre dans le paramètre f que je donne... pour
éviter que l'utilisateur s'amuse à tout essayer (genre tenter de voir le
.htpasswd)
L'avantage avec les RewriteRules c'est que le filtrage est fait directement
par Apache et qu'on ne risque pas de se faire choper des .htpasswd par
negligence ou erreur de programmation.

Continuer la lecture sur narkive:
Loading...