Formulaire d'authentification + session [Résolu]

serge285 6 Messages postés lundi 28 novembre 2016Date d'inscription 20 décembre 2016 Dernière intervention - 19 déc. 2016 à 19:58 - Dernière réponse : serge285 6 Messages postés lundi 28 novembre 2016Date d'inscription 20 décembre 2016 Dernière intervention
- 20 déc. 2016 à 14:17
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>

Afficher la suite 

Votre réponse

7 réponses

jordane45 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 20 déc. 2016 à 00:18
0
Merci
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>

Commenter la réponse de jordane45
serge285 6 Messages postés lundi 28 novembre 2016Date d'inscription 20 décembre 2016 Dernière intervention - 20 déc. 2016 à 09:38
0
Merci
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 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 20 déc. 2016 à 10:01
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 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention > jordane45 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 20 déc. 2016 à 10:01
<?php
if(!empty($errMsg)){
   echo '<div style="color:#FF0000;text-align:center;font-size:12px;">';
   foreach($errMsg as $err)
      echo $err;
    }
   echo '</div>';
}
?>
Commenter la réponse de serge285
serge285 6 Messages postés lundi 28 novembre 2016Date d'inscription 20 décembre 2016 Dernière intervention - 20 déc. 2016 à 11:11
0
Merci
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 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 20 déc. 2016 à 14:08
Arf.. dans le foreach .. désolé j'ai écrit le code de tête
foreach($errMsg as $err) {
serge285 6 Messages postés lundi 28 novembre 2016Date d'inscription 20 décembre 2016 Dernière intervention > jordane45 22919 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 20 déc. 2016 à 14:17
Thank you, ça marche nickel.
Commenter la réponse de serge285

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.