S'il vous plait aidez moi .la page adminpage n arrive pas
Résolu
moulaaa123
Messages postés
4
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
<?php
try
{
$bdd = new PDO("mysql:host=localhost;dbname=mini_projet;charset=utf8", 'root','');
if(!empty($_POST['username'])&& !empty($_POST['password'])){
$user=$_POST['username'];
$psw =$_POST['password'];
$req=$bdd->prepare('SELECT id_admin ,password FROM admin WHERE id_admin = :id_admin AND password = :password' );
$req->execute(array(
'id_admi' => $user,
'password' => $psw));
$rps=$req->fetch();
if($rps['id_admin'] === $user && $rps['password'] === $psw){
header("location:adminpage.php");
}
else
{
echo ' username or passwor est incorrect ';
header("location:login.php");
}
}}
catch(Exception $e) {
die('Erreur :' .$e->getMessage());
echo 'la base de donner n est pas connecter ' ;
}
?>
EDIT : Ajout des balises de code
2 réponses
-
J'espère que ce script est pas à destination d'un site en prod !
A lire ton code les passwords sont en clair dans ta base de données et c'est super dangereux de faire comme ça et tu peux perdre gros. Une boite comme Optical Center a eu une ammende de pres de 50 000€ pour cette erreur ! On crpyte un minimum, tu n'es pas sensé avoir accès à ce type de données.
Et puis soit plus précis dans ta question (et donne nous les eventuels retour d'erreur de PHP, etc)
Déjà, j'utiliserais pas empty() mais isset()
-
-
DSL MAIS J'ai un probleme que je n'arrive toujours pas à resoudre je ne sais pas si c'est au niveau de phpmyadmin où à mon code. Bon bref là je suis entrain de réaliser un site en local avec wampserver 2.0, j'aimerais que les utilisateurs qui le souhaite s'inscrive dans le site pour ce là il y a eu aucun probleme.Mais maintenant j'aimerais proteger quelques pages afin que seul les utilisateurs déja inscrit puissent y acceder en entrant leur pseudo et mot de passe pour s'identifier.Voici le probleme je n'arrive pas à faire cette vérification.......s'il vous plait aidez moi à resoudre dites moi ou ce trouve l'erreur?? ce probleme c'est vraiment urgent pour moi.....Merci.. / resumé (verification du login et du mot de passe dans la bdd)
-
-
-
Là, tu demande à ce que quelqu'un fasse le taf à ta place, à toi de le faire. Y a de bon cours en PHP sur le site OpenClassRooms (https://openclassrooms.com/fr/)
Et Google est aussi ton ami, je me suis amusé à faire une recherche et on trouve des pistes à suivre.
-
-
Bonjour,
Bien que tu viennes de mettre ce sujet en résolu... je me permet d'intervenir.
Je ne vois pas en quoi le empty serait la cause du souci...
Sachant que le "!empty" fait déjà un isset (en plus de vérifier que la variable n'est pas vide)
Concernant ton code.. il faut que tu places le code de connexion à ta BDD dans un fichier à part.
Ainsi; tu n'auras qu'à l'inclure dans les pages de ton site où tu en auras besoin au lieu de le recopier à chaque fois...
(et on pense à gérer les erreurs en PDO : voir ce lien pour les explications : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs )<?php //Fichier cnxBdd.php try{ $bdd =new PDO('mysql:host=localhost; dbname=mini_projet; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }
Ensuite... dans ton fichier login.php:
(on active l'affichage des erreurs php : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )
Ton IF ne sert à rienif($rps['id_admin'] === $user && $rps['password'] === $psw)
Puisque tu as déjà les mêmes critères dans ton where ....
Et enfin..Pour gérer l'authéntification sur les différentes pages, tu dois utiliser les variables de session
<?php // fichier login.php //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //démarrage des sessions session_start(); //connexion à la bdd require_once "cnxBdd.php"; //on récupère proprement les variables AVANT de les utiliser : $user=!empty($_POST['username']) ? $_POST['username'] : NULL ; $psw =!empty($_POST['password']) ? $_POST['password'] : NULL ; if($user && $psw){ $sql = 'SELECT id_admin ,password FROM admin WHERE id_admin = :id_admin AND password = :password'; $datas = array(':id_admi' => $user, ':password' => $psw); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas); $rps = $req->fetch(); if(!empty($rps)){ $_SESSION['id_admin'] = $id_admin; header("location:adminpage.php"); exit(); //toujours mettre un exit après une redirection }else{ echo ' username or passwor est incorrect '; } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } ?>
Et donc.. pour voir si un utilisateur est bien connecté ou non.. il suffit de placer ceci au début des pages à protéger<?php //fichier adminpage.php //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //démarrage des sessions session_start(); //vérification si l'utilisateur est connecté. if(empty($_SESSION['id_admin'])){ header("location:login.php"); exit(); //toujours mettre un exit après une redirection }
Concernant le conseil pour le hashage du password.. il faut en effet utiliser les méthodes
password_hash() : http://php.net/manual/fr/function.password-hash.php
et password_verify() : https://www.php.net/manual/fr/function.password-verify.php
Mais ça .. je te laisse le coder.
Et surtout.. lorsque tu postes du code sur le forum, merci d'utiliser les BALISES DE CODE :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code