Bonjour,
Je suis débutant en PHP ainsi que dans les bases de données MySQL et j'ai un petit souci avec un script de connexion (login) en PHP. En effet comme le code vous le montre ci-dessous, je souhaite faire en sorte que des utilisateurs puissent accéder à une page en passant avant tout par une page d'identification. Les identifiants sont enregistrés dans la BDD, seul problème, seulement l'identifiant de la première ligne dans la base de donnée fonctionne, les autres situés en ligne 2 et 3 ne fonctionne pas. Je me creuse la tête depuis deux jours déjà et après quelques recherches sur internet et plusieurs essais, je n'arrive à rien, toujours le même problème. Le pire dans tout ça c'est que à tous les coups, c'est une erreur bénigne. Bref ... j'espère que vous aurez saisit mon souci et merci d'avance pour votre aide !
connexion.php :
<?php
session_start();
$_SESSION["login"]=$_REQUEST["login"]; // Récupération du login
$_SESSION["pass"]=$_REQUEST["pass"]; // Récupération du mot de passe
$user=$_SESSION["login"];
$mdp=$_SESSION["pass"];
$_SESSION["auth"]=FALSE;
// Script de vérification du mot de passe d'administration, en utilisant la table Connexion
if(empty($mdp) OR empty($user))
header("Location:accueil_panel.php");
else
{
/* Accès à la base */
include ("mysql.php");
$requete = "SELECT * FROM `users`";
$resultat = mysqli_query($id_bd, $requete)
or die("Execution de la requete impossible : $requete");
$ligne = mysqli_fetch_row($resultat);
if ($mdp==$ligne[3] AND $user==$ligne[2])
{
$_SESSION["auth"]=TRUE;
mysqli_close($id_bd);
header("Location:test.html");
}
else
{
$_SESSION = array(); // Réinitialisation du tableau de session
session_destroy(); // Destruction de la session
unset($_SESSION); // Destruction du tableau de session
mysqli_close($id_bd);
header("Location:login_error.php");
}
}
?>
accueil_panel.php :
<?php
// Démarrage de la session
session_start();
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Panel LSPD</title>
<meta name="Author" content="Ractor" />
<meta name="Keywords" content="panel, lspd, hidden, police" />
<meta name="Description" content="Panel de gestion LSPD" />
<link rel="shortcut icon" type="image/x-icon" href="./images/logo_lspd.png" />
<link rel="stylesheet" type="text/css" href="./styles/accueilRWD.css" />
</head>
<body>
<header>
<h1>Panel LSPD</h1><hr />
</header>
<br />
<section class="main">
<p>
<center><a href="./images/logo_lspd.png"><img class="logo_lspd" src="./images/logo_lspd.png" alt="logo_lspd"
title="logo_lspd" height="355" width="355" /></a></center>
</p>
<br />
<section class="connexion">
<p>
<?php
$bdd = new PDO('mysql:host=localhost;dbname=panel_lspd', 'root', '');
// test d'affichage de base de donnee
$reponse = $bdd->query('SELECT * FROM users');
while ($donnees = $reponse->fetch())
{
echo '<p>' . $donnees['id'] . ' - ' . $donnees['nom'] . ' - ' . $donnees['matricule'] . ' - ' . $donnees['pass'] . '</p>';
}
?>
<h2>Connexion :<br />
<form action="connexion.php" method="post">
<div class="align1">Login : <input type="text" name="login"><br /></div>
<div class="align2">Mot de passe : <input type="password" name="pass"><br /></div>
<input type="submit" name="connexion" value="Connexion">
</form></h2>
</p>
</section>
<br />
</section>
</body>
</html>
mysql.php :
<?php
/* Script de connexion à la base de donnée */
$id_bd = mysqli_connect('localhost','root','','panel_lspd')
or die("Connexion au serveur et/ou à la base de données impossible");
/* Gestion de l'encodage des caractères */
mysqli_query($id_bd, "SET NAMES 'utf8'");
?>
Dans connexion.php
$requete = "SELECT * FROM `users`";
$resultat = mysqli_query($id_bd, $requete)
or die("Execution de la requete impossible : $requete");
Tu demandes toutes les données de ta table users...
$ligne = mysqli_fetch_row($resultat);
if ($mdp==$ligne[3] AND $user==$ligne[2])
... puis tu compares le login et le mot de passe avec la première ligne qui t'a été retourné
Il faudrait changer ta requête pour ne demander que la ligne qui correspond au login puis vérifier si le mot de passe correspond
Je vais rien dire sur les mysqli et les divers problèmes de sécurité vu que tu débute
D'accord, merci pour ta réponse rapide, je vais essayer de faire ça !
Bon, je n'arrive pas vraiment à faire ce que tu as proposé, néanmoins j'ai fais en sorte de ne demander que le mot de passe ou que le login mais rien n'y change. Une idée ?
Petit UP !
Comme dit vdd, Concentre toi sur ta requete:
SELECT * FROM `users = je demande toutes les infos de tous les utilsateurs de ma table users.
Ce n'est pas ce que tu veux, ce que tu veux toi c'est vérifier dans ta table users si il existe un utilisateur qui a le login $user et mdp $mdp.
Je te laisse traduire en SQL.
Ensuite:
$ligne = mysqli_fetch_row($resultat);
if ($mdp==$ligne[3] AND $user==$ligne[2])
{
}
Il faut que tu vérifie la valeur que ton fetch te retourne afin de savoir si l'utilisateur existe bien dans ta table users ou non.