Interdire l'ouverture d'un fichier image.php directement

Eléphant du PHP | 85 Messages

10 juil. 2013, 17:43

Slt,

Je sèche et je pense qu'il n'y a pas de solution, mais au cas ou, je demande.

J'ai une page "toto.php"
Dans cette page, j'ai un href qui appel "include/image.php"
Le fichier image.php ... affiche une image.

Ca permet de masquer le chemin de stockage de l'image.

Mon problème est le suivant.

Comment empêcher qu'un petit malin affiche l'image en mettant dans son navigateur directement l'url de "include/image.php".
En d'autre terme que image.php ne puisse être exécuté uniquement via l'appel par le href de la page toto.php

Vu que ce n'est pas un requête serveur, mais navigateur, le blocage en "deny" via le htaccess ne fonctionne pas.
Si j'utilise les session, ça fonctionne pour le type qui se pointe direct sur le fichier image sans passer par toto.php, mais ça ne fonctionne plus s'il à afficher au préalablement toto.php

Une solution ?

Merci.

Eléphant du PHP | 190 Messages

10 juil. 2013, 20:44

Salut,

Etrange que le deny en htaccess ne fonctionne pas.

Très simplement. Une variable sur ta page toto.php genre $test=1;

Et tester cette variable dans image.php
if(!isset($test)){
     // redirection ou faire autres chose
}
Si un mec arrive direct sur image.php, ta varibale test n'existe pas :)

edit: ok j'avais zapper la methode en href donc la variable ne passera pas... C'est obligatoire de passer par un href ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 juil. 2013, 21:02

salut,


pour afficher une image pas le choix il faut un accès web.

quoi qu'il arrive tu ne pourra pas faire autrement que de mettre l'url, par contre tu peux surement tester le "referer" voir s'il correspond a ton site.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 85 Messages

10 juil. 2013, 21:25

Merci pour vos avis.

J'ai déjà essayer avec les $_SERVER, rien à faire.

Mammouth du PHP | 571 Messages

10 juil. 2013, 21:58

salut,
il va falloir récupérer l'URI de la page toto.php.Le principe est le suivant: dans la page toto.php, tu testes si l'URI courante correspond à /toto.php alors dans ce cas tu peux inclure image.php. Ex: l'uri de http://mon-domaine.com/toto.php est /toto.php
<?php
$uri =$_SERVER[ 'REQUEST_URI' ];
print_r($uri)
?>

autre possibilité, avant toute inclusion tu peux tester si la constante __FILE__ correspond au chemin absolu + nom du fichier toto.php