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 :
Code : Autre1
| login:mot_de_passe_crypté |
Au final, votre fichier
.htpasswd devrait ressembler à ceci :
Code : Autre1
2
3
4
| mateo21:$1$MEqT//cb$hAVid.qmmSGFW/wDlIfQ81
ptipilou:$1$/lgP8dYa$sQNXcCP47KhP1sneRIZoO0
djfox:$1$lT7nqnsg$cVtoPfe0IgrjES7Ushmoy.
vincent:$1$h4oVHp3O$X7Ejpn.uuOhJRkT3qnw3i0 |
Dans cet exemple, il y a 4 personnes autorisées à accéder au dossier : mateo21, ptipilou, djfox et vincent.
Comment peut-on crypter les mots de passe ?
Bonne question ! Encore une fois, il y a une super fonction PHP qui va nous tirer d'affaire :
crypt. Vous lui donnez un mot de passe et, ne cherchez pas à savoir comment, elle vous le crypte.
Par exemple, si mon mot de passe est "kangourou", voici le code PHP que je devrai écrire pour l'obtenir en version cryptée :
Code : PHP | <?php echo crypt('kangourou'); ?>
|
Crypter ses mots de passe est très utile : en effet, si quelqu'un vient un jour à lire votre fichier
.htpasswd (quelqu'un qui utilise le même PC que vous par exemple), il ne verra que le mot de passe crypté. Et là, aucun risque qu'il ne retrouve votre mot de passe : ce cryptage est
indéchiffrable. Il est à sens unique.
Bon, on pourrait en théorie s'arrêter là pour le
.htpasswd, mais mon âme de codeur PHP me commande de créer un petit script qui va bien vous être utile (non non, ne me remerciez pas, c'est tout naturel !).
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | <p>
<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
$login = $_POST['login'];
$pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe
echo 'Ligne à copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte;
}
else // On n'a pas encore rempli le formulaire
{
?>
</p>
<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
}
?>
|
Il y a 2 parties dans ce code :
- SI les variables $_POST['login'] et $_POST['pass'] existent, alors c'est qu'on vient de valider le formulaire.
On crypte le mot de passe qu'on a rentré, et on affiche $login:$pass_crypte pour que vous n'ayez plus qu'à copier la ligne dans le .htpasswd
- SINON, si les variables $_POST['login'] et $_POST['pass'] n'existent pas, donc on affiche le formulaire pour demander d'entrer un login et un mot de passe.
Le formulaire recharge la même page, car il n'y a pas d'attribut action dans la balise <form> comme on l'a vu dans le chapitre sur les formulaires. Lors du rechargement de la page, les variables $_POST['login'] et $_POST['pass'] existeront puisque vous venez d'entrer le login et le mot de passe. Le mot de passe sera alors crypté !
Je vous conseille de créer cette page quelque part sur votre disque dur (ou sur votre serveur peu importe), pour que vous puissiez crypter rapidement vos mots de passe pour le
.htpasswd.
Si vous avez la flemme de le créer, pas de souci, vous n'avez qu'à venir sur cette page et cliquer sur le bouton "Essayer !".
Il y a certains cas où vous ne devrez pas crypter les mots de passe. Sous WAMP ou sur les serveurs de Free.fr par exemple, vous ne DEVEZ PAS crypter vos mots de passe pour que cela fonctionne. Vous devrez donc les écrire directement. Par exemple :
mateo21:kangourou