PHP : Protéger un répertoire web par mot de passe

Statut
N'est pas ouverte pour d'autres réponses.

TosZ

♣ Weed Smoker ♣
Premium
Inscription
11 Juillet 2013
Messages
936
Réactions
258
Points
11 706
RGCoins
25
Bonjour à tous & à toutes,

Quand vous êtes en plein développement d'un site web en PHP, il peut être utile de protéger l'accès à ce répertoire, notamment pour la zone admin, ou afin de bloquer l'accès complet au site pour l'utilisateur. Et bien, aujourd'hui, je vais vous montrer comment faire cela à l'aide d'un fichier .htaccess.
Pour cela, il faudra créer 2 fichiers :
  • Le .htaccess : qui permet de configurer quelques options, ainsi que d'indiquer l'adresse du fichier contenant les "login" et "mot e passe" d'accès au répertoire.
  • Le .htpasswd : qui contient les "login" et les "mot de passe".
I - Créer le fichier .htpasswd

Pour cela, vous avez besoin d'un éditeur de texte, telle que SublimText 2, Notepad ++ ou bien le classique Bloc-Note.

A l'aide de l'éditeur de texte, créer donc un nouveau fichier. Ce dernier contiendra les login des personnes pouvant avoir accès au répertoire, ainsi que les mots de passe cryptés.

Il se présente sous la forme de :

login:mot_de_passe_crypté

Le cryptage est indéchiffrable, il ne permet que de crypter, et non l'inverse. Pour crypter votre mot de passe, il faudra utiliser une fonction PHP : crypt ( Nom très recherché :D )
Il vous faut donc créer un nouveau fichier, que nous appellerons, crypt.php, et nous y inclurons la ligne suivante :

PHP:
<?php echo crypt('mot_de_passe'); ?>

Vous devez maintenant envoyé le fichier crypt.php sur un serveur, puis l'ouvrir avec votre navigateur, il vous donnera votre mot de passe crypté.

Une fois que vous avez votre mot de passe, copier le et ajoutez le dans le premier fichier que nous avons créé, toujours sous la forme :

login:mot_de_passe_crypté

Si vous souhaitez donner l'accès à plusieurs personnes, il faut ajoutez une ligne par utilisateurs :

login:mot_de_passe_crypté
login2:mot_de_passe_crypté

Une fois prêt, enregistrer ce fichier sous le nom de : ".htpasswd" ( N'oubliez pas le "." )

Voilà ! Votre fichier .htpasswd est prêt, envoyez le à présent sur votre FTP, dans le répertoire à protéger.

II - Créer le fichier . htaccess

Créer un nouveau fichier sous votre éditeur de texte, celui ci s'appellera : ".htaccess"
Collez y ce morceau de code, qui donnera des instructions au serveur, notamment l'adresse du fichier contenant les logins :

PHP:
AuthName "Accès protégé !"[/FONT][/LEFT]
[FONT=Georgia]
[LEFT]AuthType
BasicAuthUserFile "Chemin_absolu_au_fichier_.htpasswd"
Require valid-user



A la place de Chemin_absolu_au_fichier_.htpasswd, il faudra mettre le vrai chemin absolu, comment faire pour obtenir ce chemin absolu ! Et bien, nous allons de nouveau faire appel à un nouveau script PHP : realpath

Il faut donc créer un nouveau fichier, appelez-le absolu.php, et inscrivez y le code suivant :

PHP:
<?php echo realpath('absolu.php'); ?>

Envoyez ce fichier dans le répertoire où se trouve le .htpasswd, puis ouvrez le avec votre navigateur, il vous donnera le chemin absolu, qui peut être très différent selon les hébergeurs. Voici le mien :

"/home/site/WWW/tuto_rg/absolu.php"

Copiez le chemin que vous obtenez et placez le sur votre .htaccess, en remplaçant absolu.php par .htpasswd

Voilà, il ne vous reste plus qu'a envoyer votre fichier .htaccess sur votre serveur web !

J'espère que ce tutoriel plaira !

TosZ

 
Dernière édition:
Tutoriel utile et bien expliqué, tu aurais pu mettre en bonus un morceau de code permettant de limiter l'accès à un repertoire par une IP. :$

Code:
order deny,allow
deny from all
allow from 111.111.111.111
 
Tutoriel utile et bien expliqué, tu aurais pu mettre en bonus un morceau de code permettant de limiter l'accès à un repertoire par une IP. :$

Code:
order deny,allow
deny from all
allow from 111.111.111.111

C'est vrai, cela peut-être utile. Je verrais pour rajouter cela, quand j'aurai windows d'installer sur mon PC, mon Ubuntu bug graphiquement, et mon navigateur, fait un peu ce qu'il veut quand j'édite mon post.
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut