Protéger un dossier avec un .htaccess
Introduction :
Lorsque vous réalisez votre site en PHP, vous êtes souvent amenés à créer une zone « Admin » où l'accès est limité… Et il vaut mieux, vu que les personnes qui ont accès à la zone Admin peuvent en général tout supprimer si elles le désirent.
htaccess : ce fichier contiendra l'adresse du .htpasswd et quelques autres options que vous pourrez définir ;
.htpasswd : ce fichier contiendra une liste de logins/mots de passe, pour chaque personne autorisée à accéder aux pages !
Créer le .htaccess
La première étape est de créer sur votre disque dur un fichier appelé .htaccess. Oui, c'est un fichier qui n'a pas de nom et qui a seulement une extension, à savoir .htaccess
Une fois que votre fichier est crée vous allez copiez ce code.
PHP:
AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile "/home/site/www/admin/.htpasswd"
Require valid-user
Parmi ces quatre lignes, il y en a deux que vous allez devoir changer :
AuthName : c'est le texte qui invitera l'utilisateur à inscrire son login et son mot de passe. Vous pouvez personnaliser ce texte comme bon vous semble ;
AuthUserFile : là c'est plus délicat ; c'est le chemin absolu vers le fichier .htpasswd (que vous mettrez dans le même répertoire que le .htaccess).
Pour trouvé son chemin absolue Créez un fichier appelé chemin.php.
Inscrivez juste cette ligne de code à l'intérieur :
PHP:
<?php echo realpath('chemin.php'); ?>
Envoyez ce fichier sur votre serveur avec votre logiciel FTP, et placez-le dans le dossier que vous voulez protéger.
Ouvrez votre navigateur et allez voir ce fichier PHP. Il vous donne le chemin absolu, par exemple dans mon cas :
/home/site/www/admin/chemin.php
Copiez ce chemin dans votre .htaccess, et remplacez le chemin.php par .htpasswd, ce qui nous donne au final par exemple :
/home/site/www/admin/.htpasswd
Supprimez le fichier chemin.php de votre serveur, il ne nous sert plus à rien maintenant qu'il nous a donné le chemin absolu.
Créer le .htpasswd
Créer le .htpasswd
Créez maintenant un nouveau fichier avec votre éditeur de texte.
Le .htpasswd va contenir la liste des personnes autorisées à accéder aux pages du dossier. On y inscrit une personne par ligne, sous cette forme :
login:mot_de_passe_crypté
Au final, votre fichier .htpasswd devrait ressembler à ceci :
PHP:
Pingouin:$1$MEqT//cb$hAVid.qmmSGFW/wDlIfQ81
Code php pour obtenir en version cryptée du mdp choisie.
PHP:
<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
$login = $_POST['login'];
$pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe
echo '<p>Ligne à copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte . '</p>';
}
else // On n'a pas encore rempli le formulaire
{
?>
<p>Entrez votre login et votre mot de passe pour le crypter.</p>
<form method="post">
<p>
Login : <input type="text" name="login"><br />
Mot de passe : <input type="text" name="pass"><br /><br />
<input type="submit" value="Crypter !">
</p>
</form>
<?php
}
?>
Envoyer les fichiers sur le serveur
Vous avez maintenant deux fichiers sur votre disque dur : .htaccess et .htpasswd.
Lancez votre logiciel FTP.
Transférez les fichiers .htaccess et .htpasswd dans le dossier que vous voulez protéger par un mot de passe.
Vous devriez voir ce qui se trouve à la figure suivante dans votre logiciel FTP.
Voilà : désormais, le dossier est protégé. ;-)
Si quelqu'un essaie d'accéder à l'une des pages du dossier (en l'occurrence admin.php), il obtiendra une fenêtre comme celle de la figure suivante lui demandant de se logger.
Tutoriel venant du site du zero : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Last edited: