Correction de code PHP : Login/Password

Fermé
Einsvinci Messages postés 28 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 15 août 2015 - Modifié par jordane45 le 14/08/2015 à 11:35
Einsvinci Messages postés 28 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 15 août 2015 - 15 août 2015 à 12:37
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 38359 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 décembre 2024 4 720
14 août 2015 à 11:37
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 28 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 15 août 2015
14 août 2015 à 19:35
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 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
14 août 2015 à 11:44
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 28 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 15 août 2015
14 août 2015 à 19:37
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 28 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 15 août 2015
15 août 2015 à 12:37
C'est ok. Merci à Pitet et à Jordane45.
0