Sécuriser un dossier créer avec mkdir

TheBleedz -  
avion-f16 Messages postés 20367 Statut Contributeur -
Bonjour,
Je vous explique. Chaque membres inscris aura la possibilité de créer par la suite ( Après l'inscription ) un dossier portant comme nom le ID du membre qui la créer ! Jusque la pas très compliquer a réaliser ! Mais voila maintenant comment puis-je faire pour sécuriser chaque dossier créer par l'utilisateur pour que lui seul il est accès !
Plus d'information sur le dossier :
Ce dossier est créer avec la commande mkdir ( code plus bas ). Le dossier servira juste a stocker les images que l'utilisateur vas transférer a l'intérieure donc il ne doit pas avoir accès a ce dossier en tapant juste "nomdusite/nomdudossier". J'avais l'idée de le protéger par un .htaccess mais je sais pas comment m'y prendre ! Pour ca je me retourne vers vous pour lachez toute vos idées !!! Comme une petite boite a idée :D

Voici le code de la page qui va créer un dossier avec l'id du membre ( Je l'ai ultra simplifié pour que vous avez plus facile )

<body>
<form method="post" action="mkdir.php">
<input type="submit" name="ok"/>
</form>
<?php 
if(isset($_POST['ok']))
{
	if(@mkdir ("A/a",0777,true))
    {
    echo"cela fonctionne";
    } 
	else 
	{
    echo"cela ne fonctionne pas";
    }  
}
?>
</body> 



Merci d'avance et bonne soirée et désoler si je viens souvent demander de l'aide !


A voir également:

1 réponse

avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Salut,

Tu peux bloquer l'accès via HTTP grâce à un .htaccess contenant seulement « deny from all ».
Ce .htaccess doit se placer dans le dossier contenant tous les dossiers des membres.

Par exemple :
/
- images/
- - private/
- - - .htaccess  <--- Ici le « deny from all »
- - - membre_1/
- - - - *
- - - membre_2/
- - - - *
- - - membre_3/
- - - - *
- - image_publique.png
- - image_publique2.jpg
- index.php
- page.php


De cette manière, il ne sera pas possible d'accéder aux images via http://example.com/images/private/membre_1/fichier.png

L'accès est seulement bloqué par HTTP !
Tu peux donc toujours accéder aux fichiers par PHP et les afficher au navigateur, le PHP te permettra de contrôler l'accès.

Par exemple :
<?php
// Fichier: image.php
// Ex. d'appel: example.com/image.php?file=nom.png

session_start();

if(isset($_SESSION['user_id']) && isset($_GET['file'])) {
    // Si le membre est connecté et qu'un fichier est indiqué

    // Définir le dossier dans une variable
    $path = 'images/private/membre_' . $_SESSION['user_id'] . '/';

    // Sécurité pour éviter de remonter l'arborescence avec « .. »
    $fileinfos = pathinfo($_GET['file']);
    $filename = $fileinfos['basename'];

    if(file_exists($path.$filename)) {
        header('Content-type: image/'.$fileinfos['extension']);
        readfile($path.$filename);
    } else {
        header('HTTP/1.1 404 Not Found');
        include('404-notfound.html');
    }

} else {
    header('HTTP/1.1 401 Unauthorized');
    include('401-unauthorized.html');
}
0