Authentification des utilisateurs

Fermé
rawiaGL Messages postés 18 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 2 mai 2015 - 4 oct. 2014 à 21:32
 Utilisateur anonyme - 5 oct. 2014 à 09:28
Alors pour mon site web développé en PHP j'ai trois types d'utilisateurs qui sont déjà enregistrés dans la base de données , ces derniers se connectent via une même interface d'authentification et seront redirigé chacun vers son propre espace.
Donc l'accès au site est limité seulement à ces utilisateurs. Mon problème est que lorsque je tape n'importe quoi dans l'espace d'authentification (login et mot de passe ) je serai redirigé automatiquement vers la page d'accueil de l'administrateur alors que ça ne doit pas être le cas !!

voilà le bout de code que j'ai crée quelqu'un pourrai m'aider plz

<?php
session_start();
require('./includes/login.php');

/*************************************/
/*Proc?dure de connexion au base
/***********************************/

$host="127.0.0.1";
$user="root";
$password="root";
$myconnex=mysql_connect($host,$user,$password) or die("connexion impossible");
////////////////////////////////// Test l'existance de la base et le nom de la base ////////////////////////
$bdd="stage";
mysql_select_db($bdd) or die ("erreur de connexion à la base de donn?es");

if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mot_de_passe']) && !empty($_POST['mot_de_passe']))) {
extract($_POST);

// on recupère le password et le login de la table qui correspond au visiteur
$sql = 'SELECT * FROM `admin_smtp` WHERE login="'.mysql_escape_string($_POST['login']).'" AND mot_de_passe="'.mysql_escape_string(md5($_POST['mot_de_passe'])).'"';
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$count=mysql_num_rows($result);
$row=mysql_fetch_array($result);
mysql_free_result($result);
mysql_close();

//connexion selon le type de l'utilisateur

switch ($row) {
case ($row['statut']==2):
$_SESSION['login'] = $_POST['login'];
header('Location:./admin/services.php');
exit();
echo ("you logged in as admin");
break;
case ($row['statut']==0):
$_SESSION['login'] = $_POST['login'];
header("location:./user/smtp_client.php");
echo ("you logged in as client");
break;
case ($row['statut']==1):
$_SESSION['login'] = $_POST['login'];
header("location:./sup/smtp_sup.php");
echo ("you logged in as supervisor");
break;

}
//if(($row['login'] != $login) ||($row['mot_de_passe'] != $mot_de_passe)) {
}
else {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('index.php'); // On inclut le formulaire d'identification
exit;

}

?>

4 réponses

loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
Modifié par loupix57 le 4/10/2014 à 22:15
J'vois pas de souci du coté SQL ;

quoi que tu a bien mis l'authorisation ADMIN/USER sur Integer ?
sinon c'est un string ...

case ($row['statut']=='2'):
( Avec les quotes )

Même les maths ça n'a rien de compliquer.
0
Utilisateur anonyme
4 oct. 2014 à 23:34
Bonsoir

1 -

$count=mysql_num_rows($result); 
$row=mysql_fetch_array($result); 

Si les identifiants fournis sont incorrects, ta requête ne rendra rien donc $row vaudra 0. Il faudrait vérifier cela avant de faire le reste du traitement.

2 -
La syntaxe du switch n'est pas du tout celle-là en PHP. Ce serait plutôt :

switch ($row ['statut']) {
  case 2: ...
  case 0: ...
  case 1: ...
}
0
rawiaGL Messages postés 18 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 2 mai 2015
4 oct. 2014 à 23:58
tout marche très bien avec mon code , j'ai du modifier la syntaxe du switch et ça marche aussi mais le problème persiste.
en effet je veux interdire l'accès à tout login ou mot de passe qui n'est pas déjà un membre enregistré dans la base !
0
Si tu as correctement testé la valeur de $count, seuls les membres qui fournissent des identifiants corrects peuvent se connecter. Si les autres y parviennent quand même, c'est que tu as mal - ou pas - fait ce test.
Remarque : dans
mysql_escape_string(md5($_POST['mot_de_passe']))
, mysql_escape_string ne sert strictement à rien car md5 rend obligatoirement des caractères alphanumériques 'ordinaires'.
0