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

Appel procedure php lors d'un downloa d

7 réponses
Avatar
M
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

7 réponses

Avatar
Olivier Miakinen

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

Avatar
Thierry
"Olivier Miakinen" <om+ a écrit dans le message de news:
46026efc$

Fichier .htaccess :
Options +MultiViews

Fichier machin.jpg.php :


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]

Avatar
Olivier Miakinen

Fichier .htaccess :
Options +MultiViews

Fichier machin.jpg.php :


Ca implique d'avoir un fichier machin par image, non ?


Oui.

Pour logguer les appels a tous les jpg:
RewriteRule (.*).jpg$ log.php?img=$1 [QSA]


Ta solution est bien meilleure en effet.

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]


Avatar
M
Olivier, Thierry,

Merci ! Ca marche comme je le souhaitais.

M
Avatar
Jerome Blion
"Olivier Miakinen" <om+ a écrit dans le message de news:
46026efc$

Fichier .htaccess :
Options +MultiViews

Fichier machin.jpg.php :


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.

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]


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=f4
et dans un fichier ou une table mysql

134 ==> images/moi.jpg

pour ensuite faire tout ce qu'il faut...


Avatar
Olivier Miakinen

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.

Avatar
Thierry
"Jerome Blion" a écrit dans le message de news:
4602d04d$0$10251$

Tiens, un BlionCorp :-)

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.

Encore plus simple :


Elle est simple ma soluce !

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.