Htaccess débloqué par php
Résolu
eti-N
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
eti-N Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
eti-N Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai écrit une page php qui doit protéger des photos privées et y donner accès à ceux qui insèrent le bon mot de passe.
le fonctionnement de la page est plutôt simple:
la page demande un mot de passe
si le mot de passe est faux, la page redemande le mot de passe
si le mot de passe est correct, la page active une variable superglobale de session ($_SESSION['bidule']) et se redirige sur elle même.
en détectant que la session est activée, la page ne demande plus le mot de passe mais affiche les photos.
Le problème, c'est que n'importe qui pourvu du mot de passe peut accéder aux photos et prélever l'URL de l'une d'entre elles, par exemple, ce qui permet d'y accéder sans mot de passe (je n'ai pas encore mis de fichier .htaccess).
je sais qu'il est possible de demander un login via htaccess mais ce n'est pas exactement ce que je voudrais faire.
Je voudrais pouvoir donner les droit htaccess (activer les droit comme si htaccess avait lui-même demandé le login), mais depuis ma page php.
1ere question)
est-ce possible?
2eme question)
si oui, comment?
Merci d'avance de votre aide
J'ai écrit une page php qui doit protéger des photos privées et y donner accès à ceux qui insèrent le bon mot de passe.
le fonctionnement de la page est plutôt simple:
la page demande un mot de passe
si le mot de passe est faux, la page redemande le mot de passe
si le mot de passe est correct, la page active une variable superglobale de session ($_SESSION['bidule']) et se redirige sur elle même.
en détectant que la session est activée, la page ne demande plus le mot de passe mais affiche les photos.
Le problème, c'est que n'importe qui pourvu du mot de passe peut accéder aux photos et prélever l'URL de l'une d'entre elles, par exemple, ce qui permet d'y accéder sans mot de passe (je n'ai pas encore mis de fichier .htaccess).
je sais qu'il est possible de demander un login via htaccess mais ce n'est pas exactement ce que je voudrais faire.
Je voudrais pouvoir donner les droit htaccess (activer les droit comme si htaccess avait lui-même demandé le login), mais depuis ma page php.
1ere question)
est-ce possible?
2eme question)
si oui, comment?
Merci d'avance de votre aide
A voir également:
- Htaccess débloqué par php
- Comment debloque - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Comment débloquer un site bloqué par google chrome - Guide
- Un téléphone débloqué est il neuf - Forum Huawei
3 réponses
Salut,
Une solution possible est d'interdire l'accès direct aux images via leurs URLs et de passer par un script php pour y accéder et les afficher.
Pour interdire l'accès publique (via les URLs), tu peux ajouter un fichier .htaccess dans le dossier où sont stocké tes images avec le contenu suivant :
Les fichiers images contenus dans ce dossier ne sont donc plus accessible depuis l'extérieur (via l'URL) mais PHP peut toujours y accéder.
Tu peux donc créer un nouveau fichier php (à la racine de ton site où dans un dossier accessible depuis l'extérieur) qui ira lire et afficher l'image passé en paramètre seulement si l'utilisateur est connecté.
Voici une ébauche de script :
Il te suffit ensuite de remplacer dans ton code HTML la source des images comme ceci :
Ainsi tes images ne sont accessibles/affichées que si l'utilisateur est connecté dans la session PHP.
Bonne journée
Une solution possible est d'interdire l'accès direct aux images via leurs URLs et de passer par un script php pour y accéder et les afficher.
Pour interdire l'accès publique (via les URLs), tu peux ajouter un fichier .htaccess dans le dossier où sont stocké tes images avec le contenu suivant :
order deny,allow
deny from all
Les fichiers images contenus dans ce dossier ne sont donc plus accessible depuis l'extérieur (via l'URL) mais PHP peut toujours y accéder.
Tu peux donc créer un nouveau fichier php (à la racine de ton site où dans un dossier accessible depuis l'extérieur) qui ira lire et afficher l'image passé en paramètre seulement si l'utilisateur est connecté.
Voici une ébauche de script :
<?php // pour l'exemple ce script se nomme lireImage.php et est situé à la racine du site if (!isset($_SESSION['bidule'])) { exit(); // on arrête le script si l'utilisateur n'est pas connecté } // chemin vers l'image demandée (en supposant que les images soit enregistrées dans le dossier "images") $fichierImage = 'images/' . $_GET['file']; if (file_exists($fichierImage)) { header('Content-type: image/jpeg'); // on indique au navigateur qu'on retourne un fichier .jpg (à modifier selon l'extension des images) readfile($fichierImage); // on retourne l'image exit(); }
Il te suffit ensuite de remplacer dans ton code HTML la source des images comme ceci :
<!-- Avant --> <img src="images/photo1.jpg"> <!-- Après --> <img src="lireImage.php?file=photo1.jpg">
Ainsi tes images ne sont accessibles/affichées que si l'utilisateur est connecté dans la session PHP.
Bonne journée
Bonjour, si tu déclares ta variable session seulement quand l'utilisateur est log tu n'auras plus de problème.
Si un utilisateur non connecté veut accéder à une page en tapant dans l'url et bien il sera renvoyé vers la page de connexion ...
Comment fait on cela ?
Si un utilisateur non connecté veut accéder à une page en tapant dans l'url et bien il sera renvoyé vers la page de connexion ...
Comment fait on cela ?
session_start();
if (!isset(variable session)
{
header('Location: connexion.php');
exit;
}
Oui, la page se redirigera vers la connexion, mais il est aussi possible de relever l'URL d'une seule photo, (clic droit > copier l'URL de l'image, dans Chrome) par exemple, permettant d'y accéder sans connexion, et d'accéder à la photo séparément, ce que je souhaite éviter en protégeant le dossier conteneur par un htaccess
et comment tu empêche de visionner la source et de copier le lien ... non ce n'est pas viable comme solution ...
La soluce de pitet est la meilleure soluce je pense, sinon tu peux le faire par blocage ip, tu rajoute une fonction qui détermine l'ip du visiteur, si il rentre le bon mot de passe, tu ajoute son ip à un array, et tu autorise l'affichage de la page si et seulement si, l'adresse ip de l'utilisateur est dans l'array ..
Tu ajoute un index datetime dans ton array pour permettre l'accès pendant un certain temps, et quand le temps est écoulé il faut re rentrer le mot de passe pour accéder de nouveau à la page.
La soluce de pitet est la meilleure soluce je pense, sinon tu peux le faire par blocage ip, tu rajoute une fonction qui détermine l'ip du visiteur, si il rentre le bon mot de passe, tu ajoute son ip à un array, et tu autorise l'affichage de la page si et seulement si, l'adresse ip de l'utilisateur est dans l'array ..
Tu ajoute un index datetime dans ton array pour permettre l'accès pendant un certain temps, et quand le temps est écoulé il faut re rentrer le mot de passe pour accéder de nouveau à la page.