Un crud avec espace de connexion en php
Pour faire suite au tuto ‘CRUD’ , on va tenter ici de l’améliorer en lui rajoutant un espace de connexion.Vu que c’est un exercice, qu’il n’y a ni admin ni user, on va construire un mini scénario : on a les mêmes pages que dans le précédent tutoriel :
- index.php,
- add.php,
- delete.php,
- update.php,
- edit.php,
- database.php
Maintenant, en tapant sur l’index, on va faire en sorte de tomber sur une interface de connexion; et c’est en se connectant seulement qu’on pourra accéder au reste des pages et donc à l’appli CRUD.
L’arborescence
On va donc rajouter deux pages à notre application: login et logout
La base de donnée
On rajoute aussi deux champs dans notre base login et password
Login.php
J’ai volontairement commenté le code pour plus de clarté.
- On fait appel à la base
- on initialise nos messages d’ erreurs
- on sécurise les données
- On vérifie les input
- Si c’est bon on se connecte à la base de donnée.
- Si le login et password inséré correspondent à un login et mot de passe trouvé en base ( $data[‘login’] ), alors on ouvre une session avec les valeurs assignées
- On affiche un message de succès et on redirige vers l’index
Logout.php
Dans l’index, on va par la suite rajouter un bouton déconnexion qui renverra vers la page logout.php. On place notre lien juste en dessous du lien pour rajouter un user.
Logout.php contient juste la fonction de déconnexion avec un session_destroy(); on détruit la session utilisateur et on redirige vers la page de connexion
On a donc la nos deux fichiers pour la connexion-déconnection. Il va maintenant falloir intervenir dans les autres fichiers pour dire « si tu n’es pas connecté, retourne au login’. Notre CRUD devient donc un véritable backoffice dont l’accès n’est possible qu’avec un identifiant et un mot de passe défini.
Définir la session utilisateur
En début de chaque fichier (add, update, delete, edit et index) on va placer ce bout de code qui vérifie la session utilisateur. S’il y a une session, ok et on affiche un message, sinon renvoie vers le login. Ici je vérifie le $_SESSION[‘login’], on pourrait le faire avec l’ID. Le message affiché sur chaque page est la juste pour montrer qu’on est bien connecté.
Voila, on a un crud avec une partie login!!
Les limites et améliorations possibles
On s’arrête ici, et on remarque déjà les limites de l’exercice. Notre base contient bien deux nouveaux champs login et password. Mais je n’ai pas rajouté les champs dans mes tableaux html, ni cherché à les récupérer pour les afficher. J’ai crée un user en dur avec un mot de passe(en sha1 dans phpMyAdmin) et un login, et donc seul ce user peut rentrer dans l’appli. Une fois dans l’appli, je ne peux pas ici rajouter de login et mot de passe pour mes users, puisque les input ne sont pas crées .On aura donc des colonnes vides dans notre base.
On peut donc imaginer la suite, créer dans tous les fichiers les champs additionnels login et password, pour pouvoir les rajouter, supprimer, modifier ou lire. Dans ce cas, tous les users auraient un login et password pour accéder à l’appli. Il faudrait donc imaginer ensuite toute la partie front office pour l’user et garder le crud en backoffice pour l’administrateur, et définir des droits pour les accès.