Correction de code PHP : Login/Password

Bonjour,

J'ai trouvé un code d'authentification (Login+Mot de passe) sur Youtube. Il marche bien dans le tito vidéo. Je l'ai repris comme tel.

Mais quand je l'essaie, il me donne l'erreur suivante :


Pour information, j'ai pris la vidéo tuto sur Youtube au lien suivant : https://www.youtube.com/watch?v=B1_yi7HM0Cg


Je vous donne les fichiers ci-dessous :

1. CONNECTION.PHP
<?php

class Connection {

public function dbConnect () {
      
   return new PDO ("mysql:host=localhost; dbname=Login", "root", "");
   }

}

?>


2. INDEX.PHP
<?php

include_once('User.php');

if(isset($_POST['submit'])){
$name = $_POST['user'];
$pass = $_POST['pass'];

$object = new User();
$object->Login($name, $pass);

}

?>

<!DOCTYPE html>

<head>

</head>

<body style="font-family:helvetica, arial, verdana; font-size:12px;">
<span style="font-size:15px; font-weight:bold; color:#000000; text-shadow:0px 0px 1px #808080;">ESPACE ACHETEUR :</span>
<p style="font-style:italic;">Veuillez entrer vos identifiants pour vous accéder au formulaire d'achat des produits voulus.</p>

<div style="width:500px;height:40px; border:1px solid #009900; padding:20px 5px 5px 5px;" align="center">
<form method="post" action="index.php">
Login <input type="text" name="user" placeholder="Login" size="12" maxlength="10" style="border:1px solid #009900;">
Mot de passe <input type="password" name="pass" placeholder="**********" size="12" maxlength="10" style="border:1px solid #009900;">
<input type="submit" name="submit" value="Connexion">
</form>
</div>

</body>

</html>



3. USER.PHP
<?php
include_once(connection.php);

class User   {

    private $db;
    public function _construct (){

        this-> $db = new Connection ();
     this-> $db = this->$db->dbConnect();
             }
 
    public function Login ($name, $pass){

        if(!empty($name)&& !empty($pass)){
      $st=this->$db->prepare("SELECT FROM users WHERE name =? AND pass = ?");
   $st->BindParam(1, $name);   
   $st->BindParam(2, $pass);
   $st->execute();

   
   if ($st->rowCount()==1){
       echo "Identifiants corrects : accès autorisé !"
   }else{
       echo "Identifiants incorrects !"
   }

  }else{
    echo "Veuillez entrer votre login et votre mot de passe !"
       } 
    
        }
 } 
?>


NB : Une petite modif sur la forme du formulaire de connexion a été opérée. Les messages d'erreurs ont été traduits. C'est tout. Pour le reste, c'est pareil.

Merci pour votre aide.

Einsvinci

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

2 réponses

  1. Modérateur
    Bonjour,

    1- Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    2 - Ne manquerait-il pas un Underscore à ta fonction contruct ?
    https://www.php.net/manual/fr/language.oop5.decon.php

    0
    1. Bonsoir Jordane45
      Ok. Pour la coloration syntaxique. Je ne savais pas trop comment m'y prendre. Merci pour cela. Merci aussi pour le lien du manuel PHP.
      0
  2. Salut,

    Ton utilisation de $this et des propriétés de classe n'est pas correct.
    La pseudo variable $this doit s'écrire avec un $, tandis que l'appel/l'affectation des propriétés de classe via $this se fait sans $.

      private $db;
      public function __construct (){
        $this->db = new Connection ();
        $this->db = $this->db->dbConnect();
      }
    


    Idem dans la méthode Login().

    Comme le précise jordane45, la méthode __construct s'écrit avec deux underscores.

    Bonne journée
    0
    1. Bonsoir Pitet
      Merci pour ton assistance. Je vais essayer avec ce que tu m'as dit et je reviens pour donner le résultat. Merci encore.
      0
    2. C'est ok. Merci à Pitet et à Jordane45.
      0