Bonjour,
Je suis sur le script de vérif d'accès des utilisateurs (admin et client), et je pense que j'ai fais une vrai moulinette et que le code est optimisable.
Ca fonctionne c'est déjà bien. Mais si je pouvais, via cette optimisation, acquerir quelques reflexes de programmeur, je prends volontiers
Voici le code :
Par avance, je vous remercie vivement de vos retours.
Ps : La première chose a optimiser, serait la bdd, en ayant une seule table, et une colonne qui identifie les admins des clients. Mais après sur toutes les requetes clients, j'aurais du trier les admins . Merci de de confirmer ou non ma pensée. (qui a cette heure là n'est pas au mieux de sa forme lol)
Alexbass
Modifié par Alexbass (13 Jan 2015 - 23:39)
Je suis sur le script de vérif d'accès des utilisateurs (admin et client), et je pense que j'ai fais une vrai moulinette et que le code est optimisable.
Ca fonctionne c'est déjà bien. Mais si je pouvais, via cette optimisation, acquerir quelques reflexes de programmeur, je prends volontiers
Voici le code :
if( (!empty($_POST['email'])) && (!empty($_POST['password'])) )
{
$identifiant = $_POST['email'];
$donnees = $bd->query('SELECT * FROM client') or die ('erreur :'.mysql_error()); //table client
$donnees2 = $bd->query('SELECT * FROM administrateurs') or die ('erreur :'.mysql_error()); //table admin
//on verifie d'abord les admins, puis les clients.
// ADMIN
while($result1 = $donnees2->fetch()){
if($emailadmintrouve == true)
{
// l'email est trouvé donc rien ne se passe. Soit le mot de passe est bon et la connexion sera resussi soit nno et le client sera informé.
}
else
{
//vérif existant email
if( $result1['adm_email'] == $identifiant )
{
//ici, l'email a été trouvé sur une ligne de la table admin, on verifie alors la correspondance avec le mot de passe.
$emailadmintrouve = true;
$mdpteste = $_POST['password'];
$hash = $result1['adm_mdp'];
$passok = password_verify($mdpteste, $hash); //vérifie la correspondance des mots de passe.
if($passok == true)
{
//les test sont concluants, l'utiisateur est reconnu. On enregistre l'admin dans des variables session
$_SESSION['email_adm'] = $result1['adm_email'];
$_SESSION['id_adm'] = $result1['adm_id'];
$_SESSION['accesadmin'] = true; //permet l'acces aux pages prestations
$accespage = true;
}
else
{
$msg_erreur = "Le mot de passe semble incorrecte.";
}
}
else
{
$msg_erreur = "L'email n'a pas été trouvé"; //"Authentification incorrecte. Vérifiez vos paramètres de connexion.";
}
}
}
// CLIENT
if($emailadmintrouve == true) {} else { // Si l'admin est trouvé, on ne cherche pas dans les clients, sinon on cherche.
while($result1 = $donnees->fetch()){
if($emailtrouve == true)
{
// l'email est trouvé donc rien ne se passe. Soit le mot de passe est bon et la connexion sera resussi soit nno et le client sera informé.
}
else
{
//vérif existant email
if( $result1['clt_email'] == $identifiant )
{
//ici, l'email a été trouvé sur une ligne de la table de client, on verifie alors la correspondance avec le mot de passe.
$emailtrouve = true;
$mdpteste = $_POST['password'];
$hash = $result1['clt_mdp'];
$passok = password_verify($mdpteste, $hash); //vérifie la correspondance des mots de passe.
if($passok == true)
{
//les test sont concluants, l'utiisateur est reconnu. On enregistre le clt dans des variables session
$_SESSION['email_clt'] = $result1['clt_email'];
$_SESSION['id_clt'] = $result1['clt_id'];
$_SESSION['accesclient'] = true; //permet l'acces aux pages prestations
$accespage = true;
}
else
{
$msg_erreur = "Le mot de passe semble incorrecte.";
}
}
else
{
$msg_erreur = "L'email n'a pas été trouvé"; //"Authentification incorrecte. Vérifiez vos paramètres de connexion.";
}
}
}
}
}
//cette dernière partie, permet de vérifier le formulaire sans javascript ou jquery, via php
elseif (isset($_POST['Valider']) && $_POST["Valider"] === "Valider")
{
if(empty($_POST['password'])) {$msg_erreur ="Veuillez renseigner ce champ : Mot de passe.";}
if(empty($_POST['email'])) {$msg_erreur ="Veuillez renseigner ce champ : Email.";}
}
Par avance, je vous remercie vivement de vos retours.
Ps : La première chose a optimiser, serait la bdd, en ayant une seule table, et une colonne qui identifie les admins des clients. Mais après sur toutes les requetes clients, j'aurais du trier les admins . Merci de de confirmer ou non ma pensée. (qui a cette heure là n'est pas au mieux de sa forme lol)
Alexbass
Modifié par Alexbass (13 Jan 2015 - 23:39)