

Il s'agit en fait d'une liste dans le backoffice qui permet de gérer les accès au dit back office.
Il se base sur une table mysql contenant :
- le nom des utilisateurs
- leur mot de passe
- leur email
Cette partie du site est batie comme ci :
liste.php (liste des utilisateurs)
ajout.php (formulaire d'ajout d'un utilisateur, si cette page est appelée avec en paramètre un numéro d'utilisateur, on remplit les champs avec les valeurs du dit utilisateur)
modifier.php (contient le code php qui modifie la base, est appelé par ajout.php lors du clic sur "envoi"
supprimer.php (affiche un avertissement avant la suppression).
Un clic sur un item de la liste renvoie à une page permettant de modifier l'utilisateur.
Une autre lien dans le menu permet d'ajouter un utilisateur.
La page récupère la liste grace a la requête suivante :
SELECT * FROM t_acces ORDER BY Login.
Celle ci permet de demander au serveur de renvoyer la liste de tous les utilisateurs en les triant alphabétiquement par login.
Une fois cette requête éxécutée, un boucle d'affichage permet de générer le tableau des utilisateurs suivant cet algo :
Requête
Code html de balise de tableau
Début boucle
Balise HTML de ligne de tableau + code dynamique d'affichage de l'utilisateur en cours
fin boucle
Code html de balise de fin de tableau
L'ajout d'un utilisateur se fait en plusieurs étapes.
La première est l'appel de la page de formulaire (ajout.php).
Le clic sur le bouton de validation renvoie sur la page de modifications (modifier.php) qui va ajouter l'utilisateur dans la base de données.
Sur cette page, on exécute la requête mysql suivante :
INSERT INTO t_acces VALUES('','$login','$password','$nom','$droit','$email','$quota','$AgenceNum')
Cette requête ajoute une ligne dans la table qui contient les utilisateurs (t_acces) en remplissant les champs avec les données tapées dans le formulaire (que j'ai fait passer dans des variables avec le script suivant).
$login = $_POST['txtlogin'];
$password = $_POST['txtpwd'];
$nom = $_POST['txtnom'];
$societe = $_POST['txtsociete'];
$droit = $_POST['rddroit'];
$email = $_POST['txtemail'];
$num = $_POST['id'];
$quota = $_POST['txtquota'];
$AgenceNum = $_POST['cmbagence'];
La modification d'une utilisateur se fait en cliquant sur un item de la liste (liste.php).
Un clic mène vers la page d'ajout/modification (ajout.php) en passant en paramètre le numéro de l'utilisateur.
Lors de l'arrivée sur la page ajout.php, si un paramètre est détecté, le script remplit les champs avec les valeurs de l'utilisateur.
Lors de l'arrivée sur modifier.php (appelée depuis ajout.php), on récupère le paramètre spécifiant le numéro de l'utilisateur ainsi que les données tapées et on modifie la base de données en conséquence avec la requête suivante :
UPDATE t_acces SET login='$login',password='$password',nom='$nom',droit='$droit',email='$email',quota='$quota',NumAgence='$AgenceNum' WHERE num='$num'
Un clic sur le bouton supprimer appelle une page de confirmation en passant en argument le numéro de l'utilisateur.
Si on clique sur le bouton oui, la page transmet l'argument à la page gérant les suppression (supprimer.php) qui va supprimer dans la base l'utilisateur. avec la commande suivante :
DELETE FROM t_acces WHERE login='$n'
Gestion de la connexion au site
Cette page, gère la connexion au site.
Elle compare les données entrées dans le formulaire avec celles dans la table t_acces avec la requete mysql suivante
SELECT * FROM t_acces WHERE login="$login" AND mdp="$mdp"
qui compare les données saisies avec celles dans la table
Le script suivant fait la vérification, il est situé au début de la page
<?
//inclusion mdb
include "inc_conn.php";
//login+mdp tapé ?
if ($_POST['login'] != "") {
$user = $_POST['login'];
$mdp = $_POST['password'];
//Requete mySQL
$sql="SELECT * FROM t_acces WHERE login = '$user' AND password = '$mdp' ";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_array($req);
$valeur = $data["password"];
//Si on a un champ c'est qu'on a trouvé un login+mdp
if ($valeur != "") {
//Ouverture de session
session_start();
//Déclaration des variables de session
$_SESSION['user'] = $user;
$_SESSION['droit'] = $data["droit"];
$_SESSION['agence'] = $data["NumAgence"];
//Redirection
header('Location: fset.php');
}
}
?>
Une autre page permet de récupérer un mot de passe perdu par email.
Il suffit de taper son adresse email.
Si l'on trouve l'email dans la table t_acces, on envoie un mail à cette adresse avec le mot de passe joint.
Afin d'arriver à un code propre, lisible, facilement mettable à jour, il faut respecter quelques méthodes.
Personnellement, j'utilise celles-ci :
- L'indentation : mettre certaines parties de codes en évidence avec des tabulations.
- Les inclusions : inclure des morceaux de codes identiques suivant les pages permet une mise à jour rapide et simplifie énormément les pages.
- Commenter : un code commenté est un code facilement compréhensible.
Utilisation de noms de variables, de fonctions explicites (adieu les $x, $y, place aux $nom_fichier, $txt_login).
Cependant, il y a des fois ou cela n'est pas toujours possible.
- Ranger ses pages dans des dossiers/sous-dossiers permet de s'y retrouver plus facilement.
Une des étapes la plus difficile, et aussi la plus longue (le débuggage représentant plus de 50% du temps de programmation global) est la recherche des erreurs de conception.
Il faut tester en suivant le chemin logique mais aussis l'illogique !
En effet, chaque utilisateur n'a pas forcément le même mental que le programmeur et cela oblige à tout tester.
Les tests qu'effectuaient mon maître de stage à chaque avancée du projet consistait donc, entres autres "à cliquer partout" dans la page.
Trouver de la documentation n'est pas forcément toujours facile.
L'avantage d'utiliser des langages tels que le php est qu'une grosse communauté d'utilisateurs, présente sur des forums, des listes de diffusion, permettent de vite trouver de l'aide.