Authentification php via formulaire

Résolu/Fermé
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 - 7 mai 2014 à 19:46
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 - 12 mai 2014 à 21:47
Bonsoir, je suis étudiant en terminale systeme d'information de gestion et dois bientot rendre un projet : un petit site web pour une organisation
La base de donnée est composé de 5 tables
Sur la page d'accueil du site j'ai mis un lien permettant après connection(formulaire post) d'acceder a l'espace administrateur via lequel les admins fictifs pourraient accèder à des formulaires d'ajouts/suppressions/modifications.

Le lien de sur la page d'accueil est donc un lien vers un formulaire de connection:

<html>
<head><title>Connexion requise</title></head>
<body>
<center>
<h2>Veuillez vous authentifier : </h2><br/>
<form action="adminlogin.php">
<table border="0" width="15%">
<tr>
<td><center>Login : </center></td>
<td><center><input type="text" name="Login" /><center></td>
</tr>
<tr>
<td><center>Mot de passe : </center></td>
<td><center><input type="password" name="Motdp"/></center></td>
</tr>
</table>
<input type="submit" value="Valider" />
</form>
</center>
</body>
<html>

Ensuite viens le script php permettant l'accès ou non a l'espace administrateur :

<?php
$Loginentre = $_POST['Login'];
$Motdpentre = $_POST['Motdp'];
if(empty($Loginentre))
{
echo "Vous n'avez pas saisie votre login veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else if(empty($Motdpentre))
{
echo "Vous n'avez pas saisie votre mot de passe veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else
include("Connexion.php");
$rqt = "SELECT Login,Nomadmin,Mdp FROM admins
WHERE Login = '". $Loginentre ."'
AND Mdp = '". $Motdpentre ."'";
$rqtexe = mysql_query($rqt)
or die("erreur requete");
$rsltrqt = mysql_fetch_array($rqtexe);
$NomAdmin= $rsltrqt['Nomadmin'];
$Login=$rsltrqt['Login'];
$Motdp=$rsltrqt['Mdp'];
if($Loginentre!=$Login AND $Motdpentre!=$Motdp)
{
echo "Mauvais login ou mot de passe veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else
{
echo "Vous êtes connecté en tant que <b>".$NomAdmin."</b></h3>.<br/>Gestion du site <a href='admins.html'>ici</a>.";
}
?>
Le script ne fonctionne pas..
Je ne peux pas faire de script plus poussé car je dois rester dans la simplicité..
Peut etre qu'avec des valeurs booléennes ce serait plus facile ?
Merci d'avance pour votre aide !
A voir également:

3 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
7 mai 2014 à 22:08
Bonjour,
Déjà :
if($Loginentre!=$Login AND $Motdpentre!=$Motdp) 

C'pa logique, un Or au lieu du AND serait mieux je pense, car là une seule condition concluant passerait ta validation.

Deuxièmement cette validation est inutile en soit, vu que tu fait déjà une requête sql avec les données, si elle ne retourne rien le login ne fonctionne pas, sinon le login/mdp est bon.

Troisièmement, grosse faille injection sql, tu n'échappe pas les apostrophes, de faite un hacker peut entrer assez simplement.

Quatrièmement ton form est en GET, mais tu tente de récupérer tu POST.

Cinquièmement, ton else avant l'include du fichier de connexion devrait avoir des accolades. (Sinon, même avec des données vide, il fera la requête sql, sans le fichier de connexion qui lui aurait été bien 'conditionné'

Sixièmement, il faut que tu stock quelque chose en Session, sinon tu ne saura pas si il est connecté ou non, et tu ne pourra donc pas rediriger les non-connecté sur la page de login dans les autres pages (Rien ne m'empêche d'accéder directement à admins.html (Il faudra donc du PHP sur ce fichier)

C'est pour le moment tout ce que je vois :)
Pour les prochaines fois, essaye de décrire le comportement qui ne va pas, ça aide un peu pour ceux qui tâcheront de t'aider.
1
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 14
8 mai 2014 à 07:49
Merci beaucoup ca fonctionne mieux !
Pourriez vous m'expliquer le sixièmement avec la Session et le php qu'il faudrait mettre sur admins.html ?
Et il y a un tout petit probleme :

Quand je saisi un mauvais mot de passe et un mauvais login il me dit "Mauvais login ou mot de passe veuillez ressayer." C'est normal, mais quand je saisi que le login il me dit :
"Vous n'avez pas saisie votre mot de passe veuillez ressayer. Mauvais login ou mot de passe veuillez ressayer."
Et quand je saisi que le mot de passe il me dit :
Vous n'avez pas saisie votre login veuillez ressayer. Mauvais login ou mot de passe veuillez ressayer.
J'aimerai que le troisième echo n'affiche pas son message("Mauvais login ou mot de passe veuillez ressayer.") si un login ou mot de passe n'a pas été saisi

Voila aussi les rectificatifs du php que vous m'avez expliqué plus haut :

<?php
$Loginentre = $_POST['Login'];
$Motdpentre = $_POST['Motdp'];
if(empty($Loginentre))
{
echo "Vous n'avez pas saisie votre login veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else if(empty($Motdpentre))
{
echo "Vous n'avez pas saisie votre mot de passe veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else
{
include("Connexion.php");
$rqt = "SELECT Login,Nomadmin,Mdp FROM admins
WHERE Login = '". $Loginentre ."'
AND Mdp = '". $Motdpentre ."'";
$rqtexe = mysql_query($rqt)
or die("erreur requete");
$rsltrqt = mysql_fetch_array($rqtexe);
$NomAdmin= $rsltrqt['Nomadmin'];
$Login=$rsltrqt['Login'];
$Motdp=$rsltrqt['Mdp'];
}
if($Loginentre!=$Login OR $Motdpentre!=$Motdp)
{
echo " Mauvais login ou mot de passe veuillez <a href='Formadminlogin.html'>ressayer</a>.";
}
else
{
echo "Vous êtes connecté en tant que <b>".$NomAdmin."</b></h3>.<br/>Gestion du site <a href='admins.html'>ici</a>.";
}
?>
Merci beaucoup ca m'aide enormement !
0
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 14
8 mai 2014 à 09:56
En fait j'aimerai que le login et le mot de passe, donc que la session de l'admin soit conservé dans une variable php comme ca il n'aurait pas besoin de ressaisir son login/motdepasse dans un formulaire post pour que un script php execute une p'tite requete de suppression ou autres.
Ce serait bien que les scripts php qui font des requetes de suppression/modification/choix d'activité.. sur un compte qui est choisi par l'admin, autorise ce dernier a executer la requete ou non en fonction de la connection pour accèder à admins.html(dans admins.html il y aura les liens vers les formulaires suppression/modif/choix d'activité) et donc qu'est ce qu'on met en php dans le admins.html ?
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
8 mai 2014 à 11:13
Ton else que tu viens de changer ne va pas assez loin en faite, il faut le fermer à la fin en gros, il ne fera pas ta deuxième vérification si l'un des champs est manquant du coup.

Lors de ta connexion, tu doit stocker une session, commence par un session_start() pour initialiser le système de session pour remplit s'en une.
(ex : $_SESSION["is_connected"]=1; )
Ensuite, toutes tes pages devront être en .php au lieu du .html, sinon tu ne pourra pas vérifie si il est connecté ou non.
admins.html deviendra donc admins.php.

Tu y testera tout en haut l'existance de la session, ça te donnera un truc dans le genre :
session_start();
if(!$_SESSION["is_connected"])header("location: Formadminlogin.html");


Pour les injections sql, regarde du côté de mysql_real_escape_string.
0
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 14
9 mai 2014 à 10:44
Salut deso d'avoir mis du temps a repondre,
Je teste ca la mais j'ai pas trop bien compris je me renseigne sur google pour les sessions ! merci
0
BestAblaz! Messages postés 706 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 14 mai 2014 14
12 mai 2014 à 21:47
C'est bon ca marche niquel merci Nhay!
0