Appel procedure php lors d'un downloa d

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #71602

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
Le #71599
"Olivier Miakinen" 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]

Olivier Miakinen
Le #71334

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]


M
Le #71336
Olivier, Thierry,

Merci ! Ca marche comme je le souhaitais.

M
Jerome Blion
Le #71332
"Olivier Miakinen" 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...

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


Olivier Miakinen
Le #71330

Suffit de passer le paramètre qui va bien dans le script php...

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
Le #71060
"Jerome Blion" 4602d04d$0$10251$

Tiens, un BlionCorp :-)

Suffit de passer le paramètre qui va bien dans le script php...

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.

Publicité
Poster une réponse
Anonyme