par
carmel_sonik » 10 déc. 2013, 17:14
Salut, mon code est le suivant:
<?php
session_start();
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((!empty($_POST['index']['login'])) && !empty($_POST['index']['pass'])) {
$dba = new PDO('mysql:host=localhost;dbname=concour','root','melodie');
// on teste si une entrée de la base contient ce couple login / pass
$sql = $dba->prepare( 'SELECT COUNT(*) FROM users WHERE login=:login AND password=:pass' );
$sql->bindValue( ':login', addslashes($_POST['index']['login']),
PDO::PARAM_STR);
$sql->bindValue(':pass', addslashes(md5($_POST['index']['pass'])),
PDO::PARAM_STR);
$sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
while($data = $sql->fetch(PDO::FETCH_BOTH)){
// var_dump ($data);
// die();
$sql->closeCursor();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1)
{
// On enregistre ses données dans la session
$sql = $dba->prepare( 'SELECT nom, prenom, grade FROM users WHERE login=:login' );
$sql->bindValue( 'login', $_POST['index']['login'],
PDO::PARAM_STR);
$sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
while($data = $sql->fetch(PDO::FETCH_BOTH)){
$_SESSION['login'] = $data['login'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['grade'] = $personne['grade'];
$_SESSION['email'] = $personne['email'];
//////////////////////////////// ///////////////////////////////
/////////////////////////////////////////// ICI //////////////////////////////////////////////
//////////////////////////////// ///////////////////////////////
if($_SESSION['grade'] == administrateur){
header('Location: membre_admin.php');
exit();
}
elseif($_SESSION['grade'] == superviseur){
header('Location: membre_superv.php');
exit();
}
elseif($_SESSION['grade'] == utilisateur){
header('Location: membre_users.php');
exit();
}
}
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';
}
// sinon, alors la, il y a un gros problème
else {
$erreur = 'Probème de configuration : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
}
else {
$erreur = 'Veuillez remplir tous les champs.';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accueil</title>
</head>
<body>
Veuillez vous identifiez :<br />
<form action="index.php" method="post">
Login : <input type="text" name="index[login]" placeholder="Login" required ><br />
Mot de passe : <input type="password" name="index[pass]" placeholder="Password" required ><br />
<input type="submit" name="connexion" value="Connexion">
</form>
</body>
</html>
<?php
if (!empty($erreur)){
echo '<br /><br />',$erreur;
}
?>
Quand j'appuie sur le bouton connexion j'ai l'erreur prévu en cas d'absence de ce compte dans la bdd:
$erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';
, hors il s'avère que ces comptes y sont.
Merci bien!
Salut, mon code est le suivant:
[php]
<?php
session_start();
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((!empty($_POST['index']['login'])) && !empty($_POST['index']['pass'])) {
$dba = new PDO('mysql:host=localhost;dbname=concour','root','melodie');
// on teste si une entrée de la base contient ce couple login / pass
$sql = $dba->prepare( 'SELECT COUNT(*) FROM users WHERE login=:login AND password=:pass' );
$sql->bindValue( ':login', addslashes($_POST['index']['login']),
PDO::PARAM_STR);
$sql->bindValue(':pass', addslashes(md5($_POST['index']['pass'])),
PDO::PARAM_STR);
$sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
while($data = $sql->fetch(PDO::FETCH_BOTH)){
// var_dump ($data);
// die();
$sql->closeCursor();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1)
{
// On enregistre ses données dans la session
$sql = $dba->prepare( 'SELECT nom, prenom, grade FROM users WHERE login=:login' );
$sql->bindValue( 'login', $_POST['index']['login'],
PDO::PARAM_STR);
$sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
while($data = $sql->fetch(PDO::FETCH_BOTH)){
$_SESSION['login'] = $data['login'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['grade'] = $personne['grade'];
$_SESSION['email'] = $personne['email'];
//////////////////////////////// ///////////////////////////////
/////////////////////////////////////////// ICI //////////////////////////////////////////////
//////////////////////////////// ///////////////////////////////
if($_SESSION['grade'] == administrateur){
header('Location: membre_admin.php');
exit();
}
elseif($_SESSION['grade'] == superviseur){
header('Location: membre_superv.php');
exit();
}
elseif($_SESSION['grade'] == utilisateur){
header('Location: membre_users.php');
exit();
}
}
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';
}
// sinon, alors la, il y a un gros problème
else {
$erreur = 'Probème de configuration : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
}
else {
$erreur = 'Veuillez remplir tous les champs.';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accueil</title>
</head>
<body>
Veuillez vous identifiez :<br />
<form action="index.php" method="post">
Login : <input type="text" name="index[login]" placeholder="Login" required ><br />
Mot de passe : <input type="password" name="index[pass]" placeholder="Password" required ><br />
<input type="submit" name="connexion" value="Connexion">
</form>
</body>
</html>
<?php
if (!empty($erreur)){
echo '<br /><br />',$erreur;
}
?>
[/php]
Quand j'appuie sur le bouton connexion j'ai l'erreur prévu en cas d'absence de ce compte dans la bdd:[php]$erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';[/php]
, hors il s'avère que ces comptes y sont.
Merci bien!