Bonjour, j'essai de faire une page d'authentification en pdo et je ne suis pa tres à l'aise avec la pdo j'ai commencé mais je rencontre des erreurs !
j'ai besoin de vos conseil.
Voici ma page en mysql
<?php
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
$db = mysql_connect("localhost","root","") or die ("Erreur de connexion :".mysql_error());
$maBase =mysql_select_db("Projet4") or die ("Erreur de base : ".mysql_error());
if ($maBase) {
$query="SELECT * FROM administrateur WHERE login='".$_SESSION["login"]."';";
$result=mysql_query($query);
$ligne = mysql_fetch_array($result, MYSQL_ASSOC);
// je controle si les champs sont vides.
if (($_SESSION["login"] == "") or ($_SESSION['pass'] == ""))
echo"veuillez saisir un login et un mot de passe";
//je réaffiche le formulaire.
else {
//je contrôle si le mot de passe correspond avec celui présent dans la base
if (($_SESSION["pass"]== "".$ligne['password'].""))
{
echo"Bienvenue";
header("Location:ModifSite.php");
}
else {
echo"Erreur d'authentification";
//je réaffiche le formulaire de saisie
}
}
}
?>
Et maintenant en pdo avec beaucoup d'erreur:
<?php
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
$source = "mysql:host = localhost;dbname=Projet4";
$utilisateur="root";
$mot_de_passe="";
try {
$db=new PDO($source,$utilisateur,$mot_de_passe);
$db->setAttriute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// préparer la requete
$st=$db->prepare("SELECT * FROM administrateur WHERE login='".$_SESSION["login"]."'");
//executer la requete
while ($ligne=$st->fetch())
if (($_SESSION["login"] == "") or ($_SESSION['pass'] == ""))
echo"veuillez saisir un login et un mot de passe";
else {
//je contrôle si le mot de passe correspond avec celui présent dans la base
if (($_SESSION["pass"]== "".$ligne['password'].""))
{
echo"Bienvenue";
header("Location:ModifSite.php");
}
}
$st=null;
$db=null;
catch(PDOexception $e)
{
//gérer les exceptions
echo "Erreur!:"$e->getMessage(),"<br/>";
die();
}
?>
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
if (empty($_SESSION["login"]) or empty($_SESSION['pass'])) {
echo "veuillez saisir un login et un mot de passe";
}
else {
$st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
if ($st['COUNT(*)'] == 1)
header("Location: ModifSite.php");
}
Au passage, j'ai supprimé ton "echo 'Bonjour'" car tu ne peux écrire aucun texte avant de faire une redirection.
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
if (empty($_SESSION["login"]) or empty($_SESSION['pass'])) {
echo "veuillez saisir un login et un mot de passe";
}
else {
$st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
if ($st['COUNT(*)'] == 1)
header("Location: ModifSite.php");
}
Au passage, j'ai supprimé ton "echo 'Bonjour'" car tu ne peux écrire aucun texte avant de faire une redirection.
Merci beaucoup pour l'aide ! Seulemnt il y a un truc que je comrpend pas c'est que
Ce que tu veux, c'est vérifier si les identifiants (pseudo + mot de passe) de la personne sont correct, non ?
Donc, d'abord tu commences à les stocker dans les variables de session, ensuite tu vérifies quelles ne soient pas vide, et si elles ne sont pas vides, tu vérifies si le groupe pseudo - password se trouve dans la base de donnée. Donc pour se faire, il te faut vérifier qu'il existe une seule ligne uniquement qui ait un pseudo et un mot de pass qui correspondent à ceux rentrés par la personne. Et si c'est le cas, tu rediriges.
Ce que tu veux, c'est vérifier si les identifiants (pseudo + mot de passe) de la personne sont correct, non ?
Donc, d'abord tu commences à les stocker dans les variables de session, ensuite tu vérifies quelles ne soient pas vide, et si elles ne sont pas vides, tu vérifies si le groupe pseudo - password se trouve dans la base de donnée. Donc pour se faire, il te faut vérifier qu'il existe une seule ligne uniquement qui ait un pseudo et un mot de pass qui correspondent à ceux rentrés par la personne. Et si c'est le cas, tu rediriges.
Je ne vois pas où est le problème.
En faite ce que je veux c'est que une personne dispose d'un login et un mot passe il entre ces données et on verifie si c'est correct ou pas pous pouvoir acces à un espace restreint.
SI c'est correct il a acces à l'espace sinon il re entren les données
En faite je me suis trompé je crois qu'il ne se connecte pas a la bd car il trouve pas le mot passe et le login
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
if(($_SESSION["login"] == "") or($_SESSION['pass'] == "")) {
echo "veuillez saisir un login et un mot de passe";
}
else {
$st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
if ($st['COUNT(*)'] == 1)
header("Location: ModifSite.php");
}
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
if(($_SESSION["login"] == "") or($_SESSION['pass'] == "")) {
echo "veuillez saisir un login et un mot de passe";
}
else {
$st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
if ($st['COUNT(*)'] == 1)
header("Location: ModifSite.php");
}
La sa marche merci une derniere question est ce que tu sais si je met la fonction password pour le mot passe dans la basse de donné comment decrypté dans le script ici ?
en faite dans phpmyadmin ta la fonction password qui crypte le mot passe dans le mot passe est transformer en chaine de caractére. il faut un code php qui va comparer le mot passe entrer en le cryptant et celui de la base de donné
>en faite dans phpmyadmin ta la fonction password qui crypte le mot passe dans le mot passe est transformer en chaine de caractére. il faut un code php qui va comparer le mot passe entrer en le cryptant et celui de la base de donné
en faite dans phpmyadmin ta la fonction password qui crypte le mot passe dans le mot passe est transformer en chaine de caractére. il faut un code php qui va comparer le mot passe entrer en le cryptant et celui de la base de donné
jai pas pu excuter le code proposé par lucasWillems avec une erreur Undefined index: pass in C:\wamp\www\code\verif2.php on line 13 {if(($_SESSION["login"] == "") or($_SESSION['pass'] == "")) { qui pouvez m'aider j'ai cherché déja et jai pu mettre isset comme solution
sinon qui pourrez me donner un code pour une simple authentification merci bcp
session_start();
$_SESSION["login"]=$_POST["login"];
$_SESSION["pass"]=$_POST["pass"];
try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
if (empty($_SESSION["login"]) or empty($_SESSION['pass'])) {
echo "veuillez saisir un login et un mot de passe";
}
else {
$st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
if ($st['COUNT(*)'] == 1)
header("Location: ModifSite.php");
}
Au passage, j'ai supprimé ton "echo 'Bonjour'" car tu ne peux écrire aucun texte avant de faire une redirection.
Page D'authentification en PDO
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC