script PHP avant téléchargement d'un fichier

Eléphant du PHP | 153 Messages

29 déc. 2005, 15:56

Bonjour,

Vous avez probablement déjà vu des images sur des forums (ça oui je pense) qui affichaient votre IP.

J'ai d'abord pensé à une image générer par php et la bibliothèque GD, mais en voyant l'url : http://..../monimage.jpg, j'ai supprimé cette pensée.
Il se peut que l'administrateur ait rajouté l'extension .jpg à la liste des fichiers devant exécuter du script php, mais je doute de cette possibilité.

Je voudrais donc savoir comment peut-on exécuter du code php avant le téléchargement d'un fichier (comme dans l'exemple de l'image).

Cela serait très pratique pour le site que je fais actuellement, car j'aimerai gérer les statistiques d'accès à mes fichiers et gérer aussi la protection de ces fichiers (restreindre les accès sans .htaccess). Et il me faudrait pour cela exécuter du code php avant le téléchargement du fichier...

(je sais pas si je me suis bien expliqué, mais firefox a planté pendant la rédaction de mon message et j'ai du tout réécrire... et évidemment la première version était meilleure lol).

J'ai vu que dans le php.ini il y avait

Code : Tout sélectionner

; Automatically add files before or after any PHP document. auto_prepend_file = auto_append_file =
mais c'est uniquement pour les fichiers php... j'aimerai la même chose pour tous les fichiers.

Comment font les générateurs de stats pour réaliser les stats de tous leurs fichiers ?

Merci beaucoup !!!!

Joyeuses Fêtes et longue vie à PHP !!!!
http://gl2.delcedo.com/ Galaxialord 2 !

Mammouth du PHP | 1311 Messages

29 déc. 2005, 20:18

salut
je suppose que tu veut proposer des telechargementa travers un formualire ou des liens(biensur que oui)
il suffit d'appeler un fichier qui s'appelera centre de telechargement par exemple
et celui envera au navigateur la bonn entete

apres pour proteger tes repertaoir ou sont tes docs a telechagre tu met en htaccess avec deny from all

ensuite pour faire des stats tu enregistre dans une table le fichier, l'heure et le nombre defois qu'il a été telecharge

pour les directive apache que tu donne je peut pas t'aider je les connai pas

Eléphant du PHP | 153 Messages

29 déc. 2005, 21:36

Ce n'est pas ce que je veux... :(

En fait, il ne me faut pas un lien du genre http://.../recup.php?id=299
mais il me faut un lien du genre http://.../nomfichier.ext

Ma première solution était d'organiser ainsi mon arborescence :
/fichiers/
/fichiers/.htacces {deny from all}
/fichiers/nomfichier.ext
/.htaccess {error404 => recup.php}
/recup.php

Et le lien que je donne à tout le monde est : http://site/monfichier.ext, ainsi le navigateur tombe sur l'erreur introuvable (404), et est redirigé sur recup.php qui va chercher dans la base de données les informations sur le fichiers (protection, liste des accès, taille, métatag...), qui met à jour ses statistiques, et qui récupère (si tout est ok) le contenu de /fichiers/nomfichier.ext et affiche celui-ci dans la page (sans oublier de modifier l'entête).

Cela fonctionnait plutôt bien, mais un problème s'est posé lors de mes tests. Admettons que "nomfichier.ext" soit une image et s'appelle "image.jpg".
Si en php (sur le site en local ou à distance) je fais un
imagesize('http://site/image.jpg');
, la fonction se bloquera sur l'erreur 404 et n'ira pas chercher le .htaccess qui l'aurait renvoyé sur recup.php et qui lui aurait donné les infos de l'image.

Je suis donc bloqué ici, et il faut donc que je change totalement de méthode. Il ne me sera pas possible d'utiliser le htaccess pour faire mes stats.
Le "centre de téléchargement" n'est pas possible car certains forum banissent les urls qui contiennent "php". Or mon site est utilisé essentiellement pour l'hébergement d'image pour les forums.

C'est donc en réfléchissant à tout ça que je me suis dit que la seule solution est encore plus à la source : au niveau d'Apache. Et là je ne sais pas trop où partir chercher, et en fait surtout, j'aimerai qu'il y est une autre solution que de descendre pour recompiler Apache ou je ne sais quel autre opération fastidieuse... :oops:
http://gl2.delcedo.com/ Galaxialord 2 !

Mammouth du PHP | 1311 Messages

29 déc. 2005, 22:37

je sais pas si tu a reflechi a la reecrture d'url
mais tu fournis a tes forum des adresses du type
http://site/monfichier.ext

et toi avec ta reecriture cote apache tu transforme l'url precedente en
http://site/recup?fichier=monfichier.ext

Eléphant du PHP | 153 Messages

29 déc. 2005, 22:51

C'est pas mal j'y avais pas pensé !

Je vais me documenter la-dessus pour savoir comment ca marche. Vous avez pas des liens (ca serait plus rapide). C'est compatible avec n'importe quel serveur ?

Bon je fais des recherches.
http://gl2.delcedo.com/ Galaxialord 2 !

ViPHP
fab
ViPHP | 2657 Messages

29 déc. 2005, 22:52

il faut avoir mod_rewrite de apache :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 153 Messages

29 déc. 2005, 23:42

OOOHHHH OUUiiiiii !!!! Ca à l'air de se présenter très très bien !!!

J'ai pas encore tout compris et j'ai des erreurs bizarres, mais je viens de faire un test sur une image qui se trouve à un autre endroit, et... ça marche !!! Parfait !!!

J'ai donc juste mon dernier problème qui consiste à faire fonctionner comme je veux l'url rewritting. J'ai mis :

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ select.php?f=$1 [L]

Normalement si j'accède à http://site/nomfichier.ext cela devrait bien donner : http://site/select.php?f=nomfichier.ext ? Parce que ça me donne pas ça... j'obtiens la réécriture : http://site/select.php?f=select.php
Comprends pas... :oops:
http://gl2.delcedo.com/ Galaxialord 2 !