protection fichier par php et fichier .htaccess
Dernière réponse : dans Programmation
Bonjour à tous
Je viens de créer un petit site où je mets des photos et vidéos.
Il n'y a qu'une seule page php, un dossier datas qui contient les images et videos.
Pour accéder à la page, il faut remplir un formulaire, identfiant et mot de passe. Si les deux sont correctes, j'affiche les images et vidéos toujours sur la page php.
Mais là n'est pas le problème du php, mon script fontionne très bien pour le mot de passe. Mais rien qu'avec cette protection, on peux directement taper l'adresse allant aux fichiers "datas" contenant les images et videos et accéder aux fichiers.
Donc ma protection ne protége pas le dossier ftp, mais juste l'affiche de la page php.
J'ai donc utiliser les fichiers .htaccess et .htpasswd.
Ca fontcionne parfaitement, on ne plus accéder aux fichiers "datas".
Mais là ya un problème de fonctionnalité, je suis obligé maintenant de mettre deux fois l'identifiant et le mot de passe (une fois pour le script php, et une deuxiéme quand j'affiche les images issues de "datas").
Comment protéger l'accès au dossier "datas", juste en mettant qu'une seule fois le mot de passe... en gros n'avoir que la demande d'authentification de mon script php et non celui de .htaccess et .htpasswd ?
Désolé pour la longueur de ma demande
Merci pour vos réponses.
Je viens de créer un petit site où je mets des photos et vidéos.
Il n'y a qu'une seule page php, un dossier datas qui contient les images et videos.
Pour accéder à la page, il faut remplir un formulaire, identfiant et mot de passe. Si les deux sont correctes, j'affiche les images et vidéos toujours sur la page php.
Mais là n'est pas le problème du php, mon script fontionne très bien pour le mot de passe. Mais rien qu'avec cette protection, on peux directement taper l'adresse allant aux fichiers "datas" contenant les images et videos et accéder aux fichiers.
Donc ma protection ne protége pas le dossier ftp, mais juste l'affiche de la page php.
J'ai donc utiliser les fichiers .htaccess et .htpasswd.
Ca fontcionne parfaitement, on ne plus accéder aux fichiers "datas".
Mais là ya un problème de fonctionnalité, je suis obligé maintenant de mettre deux fois l'identifiant et le mot de passe (une fois pour le script php, et une deuxiéme quand j'affiche les images issues de "datas").
Comment protéger l'accès au dossier "datas", juste en mettant qu'une seule fois le mot de passe... en gros n'avoir que la demande d'authentification de mon script php et non celui de .htaccess et .htpasswd ?
Désolé pour la longueur de ma demande
Merci pour vos réponses.
Autres pages sur : protection fichier php fichier htaccess
Lassé par la pub ? Créez un compte
Merci pour ta réponse...
Oui, c'est vrai, je connais l'utilisation des sessions et ç peux être une bonne idée.
Mais imaginons que quelqu'un qui n'as pas de mot de passe ni d'identifiant, mais connait l'adresse du dossier où se trouve les images que ma page php affiche, à savoir "http://site/datas/image.jpg"... et bien dans ce cas, le gars en question pourra accéder au fichier image.jpg directement sur le serveur ftp.
je ne sais pas trop quoi faire à vrai dire, a moins qu'on me dise que mon problème est commun à tous les sites, ou en gros, si on me dit, qu'on peux accéder directement à des fichiers si on connait précisément l'adresse. Mais là je pense que c'est faux.
voici mon code pour ma page unique:
<?php
$users_allowed=array('user');
if(isset($_POST['id']))
{
$identifiant=$_POST['id'];
}
else
{
$identifiant="";
}
if(isset($_POST['mdp']))
{
$mot_de_passe=$_POST['mdp'];
}
else
{
$mot_de_passe="";
}
if(in_array($identifiant, $users_allowed) AND $mot_de_passe=="password")
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Private Page Unlocked v1.0</title>
</head>
<body>
<h3 align="center">Blablabla/h3>
<hr/>
*********CONTENU DE MA PAGE *************
<img src="datas/image.jpg">
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Private Page Locked</title>
</head>
<body>
<div align="center">
<form action="index.php" method="post">
<table border="0" align="center">
<tr>
<td align="right">Identifiant: </td><td align="left"><input name="id" type="text" size="10" maxlength="10"></td>
</tr>
<tr>
<td align="right">Mot de passe: </td><td align="left"><input name="mdp" type="password" size="20"></td>
</tr>
</table>
<input type="submit" value="Accéder à la page">
</form>
</div>
</body>
</html>
<?php
}
?>
Oui, c'est vrai, je connais l'utilisation des sessions et ç peux être une bonne idée.
Mais imaginons que quelqu'un qui n'as pas de mot de passe ni d'identifiant, mais connait l'adresse du dossier où se trouve les images que ma page php affiche, à savoir "http://site/datas/image.jpg"... et bien dans ce cas, le gars en question pourra accéder au fichier image.jpg directement sur le serveur ftp.
je ne sais pas trop quoi faire à vrai dire, a moins qu'on me dise que mon problème est commun à tous les sites, ou en gros, si on me dit, qu'on peux accéder directement à des fichiers si on connait précisément l'adresse. Mais là je pense que c'est faux.
voici mon code pour ma page unique:
<?php
$users_allowed=array('user');
if(isset($_POST['id']))
{
$identifiant=$_POST['id'];
}
else
{
$identifiant="";
}
if(isset($_POST['mdp']))
{
$mot_de_passe=$_POST['mdp'];
}
else
{
$mot_de_passe="";
}
if(in_array($identifiant, $users_allowed) AND $mot_de_passe=="password")
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Private Page Unlocked v1.0</title>
</head>
<body>
<h3 align="center">Blablabla/h3>
<hr/>
*********CONTENU DE MA PAGE *************
<img src="datas/image.jpg">
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Private Page Locked</title>
</head>
<body>
<div align="center">
<form action="index.php" method="post">
<table border="0" align="center">
<tr>
<td align="right">Identifiant: </td><td align="left"><input name="id" type="text" size="10" maxlength="10"></td>
</tr>
<tr>
<td align="right">Mot de passe: </td><td align="left"><input name="mdp" type="password" size="20"></td>
</tr>
</table>
<input type="submit" value="Accéder à la page">
</form>
</div>
</body>
</html>
<?php
}
?>
Tu fais un ptit script de login qui démarre une session si le pseudo et le mot de passe sont correct! ensuite sur la page que tu veux protéger tu fais:
<?php
session_start();
if($_SESSION['connect'] != true) {
echo "Pour accéder à cette zone vous devez vous connectez";
exit;
}
?>
Puis le reste de ta page...
<?php
session_start();
if($_SESSION['connect'] != true) {
echo "Pour accéder à cette zone vous devez vous connectez";
exit;
}
?>
Puis le reste de ta page...
bon, j'ai attendu suffisamment longtemps, je peux continuer ce topicdonc mon problème persiste. Je sais, il y a déjà un topic sur le même sujet ici: http://www.infos-du-net.com/forum/271354-11-probleme-se...
mais le gars est parti sans donner la réponse.
Donc je repose ma demande:
sur mon serveur, j'ai un repertoir /test. Dans ce répertoire, j'ai une page php welcome.php. Cette page php affiche une image yoda.jpg, qui se trouve dans le repertoire /test/image.
-> en utilisant les fichiers .htaccess et .htpasswd pour protéger le dossier /test , ma page welcome.php commence à s'afficher, mais dès que l'image yoda.jpg doit être chargé, le fichier .htaccess fait son effet et me demande un identifiant et un mot de passe.
Question:
comment faire, pour juste protéger l'accès à un répertoire tout en ayant la possibilité d'afficher les éléments via une page web. Je veux protéger le dossier /test et /test/image , mais pouvoir afficher toutes les pages php et html convenablements, sans avoir à mettre de mot de passe.
En gros, protéger l'accès ! Comme sur tous les sites.
A noter que l'utilisation de $_SESSION est un très bonen idée, très pratique, que je mets tout le temps en oeuvre. Mais, ahahah, ça ne change rien à la protection. On protége juste les pages dans ce cas. Bien sur, si le gars n'as pas ouvert de session, il ne peux pas savoir que mes images soient dans /test/image puisque sans une session, la page ne s'affichera pas, et donc le code source ne contiendra pas de lien vers des repertoires du serveur... je sais tout ça.... c'est vrai que ma demande est un peu bizarre. Néanmoins, si un gogo essaie de mettre juste /test/image, bah il va tomber dans le repertoire et va voir toutes mes images, l'utilisation de $_SESSION ne servira pas à stopper ça.
Merci pour vos futures réponses...
alexis10 a dit :
:Citation :
Question:comment faire, pour juste protéger l'accès à un répertoire tout en ayant la possibilité d'afficher les éléments via une page web. Je veux protéger le dossier /test et /test/image , mais pouvoir afficher toutes les pages php et html convenablements, sans avoir à mettre de mot de passe.
En gros, protéger l'accès ! Comme sur tous les sites.
Helle ! je ne suis pas developpeur et vu la date de parution, tu as du surement trouver la solution… moi je suis en plein de dans !
bref, voici ce que j'ai trouvé, ca peu t'interesser :
Citation :
Dans le page htaccess : RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.+$ http://monsite.net/ [L]
À la première ligne on active la réécriture d'URL, à la seconde on vérifie si l'URL demandé n'est pas un fichier et si elle ne l'ai pas, la ligne 3 redirige vers la page de partage.
source du tuto : http://www.p4bl0.net/blog/post/Un-partage-de-fichiers-s...
Yo
merci pour ta réponse, c'est une bonne solution que tu me propose.
Pour ma part, j'en ai trouvé une encore plus simple:
pour protéger tous les dossiers, c'est à dire, ne pas donner la possibilité de voir ce qu'il ya dedans, il suffit de créer juste un fichier "index.html" et dedans on met genre "vous accédez à une zone protégée"... ou n'importe quoi d'autre.
En effet, on sait que sur un serveur ftp normalement configurer, voir tous, ceux sont les fichiers "index.html" ou "index.htm" qui sont ouverts directement lorsqu'on accéde à un dossier qui contient ce fichier.
Voila, merci quand même !
merci pour ta réponse, c'est une bonne solution que tu me propose.
Pour ma part, j'en ai trouvé une encore plus simple:
pour protéger tous les dossiers, c'est à dire, ne pas donner la possibilité de voir ce qu'il ya dedans, il suffit de créer juste un fichier "index.html" et dedans on met genre "vous accédez à une zone protégée"... ou n'importe quoi d'autre.
En effet, on sait que sur un serveur ftp normalement configurer, voir tous, ceux sont les fichiers "index.html" ou "index.htm" qui sont ouverts directement lorsqu'on accéde à un dossier qui contient ce fichier.
Voila, merci quand même !
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Solutions[php] script Upload fichier $_files vide -_-"
- Forumcomment lire fichier php...j'ai téléchargé easy php...incompréhensible...merci bec
- Solutions[PHP] Effacer le contenu d'un fichier texte
- SolutionsEnvoi fichier joint via formulaire [PHP]
- SolutionsAppel a un fichier XML avec php 4
- Forumlire un fichier php
- SolutionsFichier executable d un projet en PHP
- ForumFichier avec protection GDN
- ForumExporter un fichier en php
- Voir plus