Correction de code PHP : Login/Password

Einsvinci Messages postés 30 Statut Membre -  
Einsvinci Messages postés 30 Statut Membre -
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.
.
A voir également:

2 réponses

jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   4 762
 
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
Einsvinci Messages postés 30 Statut Membre
 
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
Pitet Messages postés 2845 Statut Membre 528
 
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
Einsvinci Messages postés 30 Statut Membre
 
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
Einsvinci Messages postés 30 Statut Membre
 
C'est ok. Merci à Pitet et à Jordane45.
0