S'il vous plait aidez moi .la page adminpage n arrive pas

Résolu/Fermé
moulaaa123 Messages postés 4 Date d'inscription lundi 31 décembre 2018 Statut Membre Dernière intervention 1 janvier 2019 - Modifié le 1 janv. 2019 à 21:13
jordane45 Messages postés 38244 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 octobre 2024 - 1 janv. 2019 à 21:29
<?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
A voir également:

2 réponses

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 494
Modifié le 31 déc. 2018 à 04:45
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()

1
moulaaa123 Messages postés 4 Date d'inscription lundi 31 décembre 2018 Statut Membre Dernière intervention 1 janvier 2019
31 déc. 2018 à 22:05
merci merci beaucoup :) :D . pour votre repense le problem a mon code c empty() je l ai changé par isset() . et ca marche
0
moulaaa123 Messages postés 4 Date d'inscription lundi 31 décembre 2018 Statut Membre Dernière intervention 1 janvier 2019
31 déc. 2018 à 22:42
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)
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 494
1 janv. 2019 à 01:34
Que le site soit en local ou non, à partir du moment où des tiers (quelqu'il soit) y ont un accès, tu dois crypter les passes. Un simple hack sur serveur SQL et tout ton serveur tombe en rideau si tous les identifiants sont en clair.
0
moulaaa123 Messages postés 4 Date d'inscription lundi 31 décembre 2018 Statut Membre Dernière intervention 1 janvier 2019
1 janv. 2019 à 03:29
je suis déçu comment je fait ca :( ! . ya tjr le mm problème quant je tape n importe quelle username et password tjr arrive a la page adminpage.php.
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 494
1 janv. 2019 à 12:44
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.
0
jordane45 Messages postés 38244 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 octobre 2024 4 689
Modifié le 1 janv. 2019 à 21:30
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 à rien
 if($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

1