Se connecter

Informatique

Création de sites web

Sujet : Problème PHP et MySQL
1
ractor2a
Niveau 5
24 mai 2018 à 14:35:46

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'");

?>
Popovitch
Niveau 10
24 mai 2018 à 14:47:24

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 :hap:

ractor2a
Niveau 5
24 mai 2018 à 14:57:39

D'accord, merci pour ta réponse rapide, je vais essayer de faire ça :oui: !

ractor2a
Niveau 5
24 mai 2018 à 20:18:39

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 ?

ractor2a
Niveau 5
25 mai 2018 à 15:30:15

Petit UP :-) !

eytanh
Niveau 5
27 mai 2018 à 02:46:50

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.

1
Sujet : Problème PHP et MySQL
   Retour haut de page
Consulter la version web de cette page