Formulaire d'authentification + session [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 28 novembre 2016
Statut
Membre
Dernière intervention
20 décembre 2016
-
 romy -
Bonjour,
besoin de votre aide, mes identifiants de connexion existent et sont bel et bien présents dans la base de données mais impossible de me connecter et accéder à la page dashboard.php

<?php
session_start();
//J'ouvre ma base de donnée
$dbname= 'mabase';
$user = 'root';
$password = '';
$host = 'localhost';

tr {
$bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
echo "<p>Erreur : " . $e->getMessage() . "</p>";
exit();
}
if(isset($_POST['submit'])){
$errMsg = '';
//login and password sent from Form
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);

if($login == '')
$errMsg .= 'Veuillez entrer votre nom<br>';
if($pass == '')
$errMsg .= 'Veuillez entrer votre mot de passe<br>';
if($errMsg == ''){
$records = $bdd->prepare('SELECT id,login,pass FROM matable WHERE login = :login');
$records->bindParam(':login', $login);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
if(count($results) > 0 && password_verify($pass, $results['pass'])){
$_SESSION['login'] = $results['login'];
header('location:dashboard.php');
exit;
}else{
$errMsg .= 'Vérifiez vos identifiants de connexion<br>';
}
}
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ADMIN | Accès</title>
<style type="text/css">
body
{
font-family:Arial, Helvetica, sans-serif;
font-size:14px;
background-image: url(../Images/nice.jpg);
background-attachment: fixed;
background-repeat: no-repeat;
margin-top: 50px;

}
label
{
font-weight:bold;
width:100px;
font-size:14px;
color: #FFFFFF;
}
.box
{
border:1px solid #006D9C;
margin-left:10px;
width:60%;
}
.submit{
border:1px solid #f50c49;
background-color:#f50c49;
color:#FFFFFF;
float:right;
padding:2px;
margin-right: 15px;
}
.tLink{
font-size: 72px;
color: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
}
</style>
</head>
<body>

<div align="center">
<br />
<div class="tLink"><strong>ADMINISTRATION</strong></div><br />
<div style="width:300px; border: solid 1px #f50c49; " align="left">
<?php
if(isset($errMsg)){
echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
}
?>
<div style="background-color:#f50c49; color:#FFFFFF; padding:3px;"><b>Authentification</b></div>
<div style="margin:30px">
<form action="" method="post">
<label>Username:</label><input type="text" name="login" class="box"/><br /><br />
<label>Password:</label><input type="password" name="pass" class="box" /><br/><br />
<input type="submit" name='submit' value="Se connecter" class='submit'/><br />
</form>
</div>
</div>
</div>
</body>
</html>

3 réponses

Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020
323
Bonjour,

Déjà.. commence par mettre le code de connexion à ta BDD dans un fichier à part que tu n'auras qu'à inclure dans les pages où tu en as besoin au lieu
de le réécrire à chaque fois.
<?php
//fichier de connexion à la bdd : cnxbdd.php

    $dbname= 'mabase';
    $user = 'root';
    $password = '';
    $host = 'localhost';

try {
    $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname.';charset=utf8', $user, $password );
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "<p>Erreur : " . $e->getMessage() . "</p>";
    exit();
}


?>

Ensuite, ton code :
<?php
  //Affichage des erreurs php
  error_reporting(E_ALL);
  ini_set('display-errors','on');
  
  //démarrage des sessions
  if(session_id() == '') {
	  session_start();
	}
  
  //connexion à la bdd
  require_once 'cnxbdd.php';
  
  //récupération PROPRE des variables AVANT de les utiliser
  $login = !empty($_POST['login']) ? trim($_POST['login']) : NULL;
	$pass = !empty($_POST['pass']) ? trim($_POST['pass']) : NULL;

  $errMsg = array();
  
  //traitement du formulaire  
	if(isset($_POST['submit'])){
		$errMsg = '';
		//login and password sent from Form
		if(!$login){
			$errMsg[] = 'Veuillez entrer votre nom<br>';	
    }
	
		if(!$pass){
			$errMsg[] = 'Veuillez entrer votre mot de passe<br>';
    }
    
		if(empty($errMsg)){
      
      //preparation de la requete
      $sql = 'SELECT id,login,pass FROM  matable WHERE login = :login AND pass = :pass';
      $datas = array(':login'=>$login , ':pass'=>$pass);
      
      //execution de la requete
      try{
			  $records = $bdd->prepare($sql);
			  $records->execute($datas);
      }catch(Exception $e){
        echo "<p>Erreur : " . $e->getMessage() . "</p>";
        exit();
      }
			
      $results = $records->fetchAll(PDO::FETCH_ASSOC);
      
			if(count($results) > 0 ){
				$_SESSION['login'] = $results['login'];
				header('location:dashboard.php');
				exit();
			}else{
				$errMsg[] = 'Vérifiez vos identifiants de connexion<br>';
			}
		}
	}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ADMIN | Accès</title>
	<style type="text/css">
	body
	{
		font-family:Arial, Helvetica, sans-serif;
		font-size:14px;
		background-image: url(../Images/nice.jpg);
		background-attachment: fixed;
		background-repeat: no-repeat;
		margin-top: 50px;

	}
	label
	{
		font-weight:bold;
		width:100px;
		font-size:14px;
		color: #FFFFFF;
	}
	.box
	{
		border:1px solid #006D9C;
		margin-left:10px;
		width:60%;
	}
	.submit{
		border:1px solid #f50c49;
		background-color:#f50c49;
		color:#FFFFFF;
		float:right;
		padding:2px;
		margin-right: 15px;
	}
	.tLink{
		font-size: 72px;
		color: #FFFFFF;
		font-family: Arial, Helvetica, sans-serif;
	}
	</style>
</head>
<body>

	<div align="center">
		<br />
		<div class="tLink"><strong>ADMINISTRATION</strong></div><br />
		<div style="width:300px; border: solid 1px #f50c49; " align="left">
			<?php
				if(!empty($errMsg)){
          echo '<div style="color:#FF0000;text-align:center;font-size:12px;">';
          foreach($errMsg as $err)
					  echo $err;
          }
          echo '</div>';
				}
			?>
			<div style="background-color:#f50c49; color:#FFFFFF; padding:3px;"><b>Authentification</b></div>
			<div style="margin:30px">
				<form action="" method="post">
					<label>Username:</label><input type="text" name="login" class="box"/><br /><br />
					<label>Password:</label><input type="password" name="pass" class="box" /><br/><br />
					<input type="submit" name='submit' value="Se connecter" class='submit'/><br />
				</form>
			</div>
		</div>
	</div>
</body>
</html>

waouh ces super ca marche sans problem et le code est comprehensible
Messages postés
6
Date d'inscription
lundi 28 novembre 2016
Statut
Membre
Dernière intervention
20 décembre 2016

Salut Jordane,
j'ai suivi tes conseils mais j'obtiens un message d'erreur:


en rapport avec la ligne suivante et quand je la retire, tout marche nickel:



De plus quand j'entre des données incorrectes, je n'ai aucun message pour me dire que les données entrées sont incorrectes.
jordane45
Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020
323
En même temps.... j'ai aussi changé cette ligne de code dans ce que je t'ai donné....
Tu ne l'as visiblement pas recopiée !
jordane45
Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020
323 > jordane45
Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020

<?php
if(!empty($errMsg)){
   echo '<div style="color:#FF0000;text-align:center;font-size:12px;">';
   foreach($errMsg as $err)
      echo $err;
    }
   echo '</div>';
}
?>
Messages postés
6
Date d'inscription
lundi 28 novembre 2016
Statut
Membre
Dernière intervention
20 décembre 2016

Mes excuses j'ai été plus captivé par le haut du code, j'ai apporté la correction mais j'ai toujours une erreur:



Quant je retire l'accolade en question j'ai une déformation de formulaire:



Je ne vois pas ce qui peut bien en être la raison, un peu perdu pour le moment mais je cherche toujours.
jordane45
Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020
323
Arf.. dans le foreach .. désolé j'ai écrit le code de tête
foreach($errMsg as $err) {
serge285
Messages postés
6
Date d'inscription
lundi 28 novembre 2016
Statut
Membre
Dernière intervention
20 décembre 2016
> jordane45
Messages postés
27511
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 février 2020

Thank you, ça marche nickel.