Uncaught TypeError

Par merciful, il y a 5 ans


Bonjour les amis invisibles,
SOS CODE
je galère sur la reprise d'un tuto gernere une errors que je comprend pas.
le navigateur m'affiche que le nom d'utilsateur n'est definie a la ligne 10 pourtant c'est le cas.
Et son absence a des repercution sur la ligne 14 de la class Auth: VOICI L'ERREUR

Avis : Index non défini : nom d'utilisateur dans C: \ xampp \ htdocs \ usersession \ public \ login.php à la ligne 10

Erreur fatale : Uncaught TypeError: L'argument 1 passé à App \ Auth :: login () doit être de type chaîne, null donné, appelé dans C: \ xampp \ htdocs \ usersession \ public \ login.php sur la ligne 10 et défini dans C: \ xampp \ htdocs \ usersession \ src \ Auth.php: 14 Stack trace: # 0 C: \ xampp \ htdocs \ usersession \ public \ login.php (10): App \ Auth-> login (NULL, 'oko') # 1 {main} jeté dans C: \ xampp \ htdocs \ usersession \ src \ Auth.php à la ligne 14
.

Ce que je fais

Voici les codes

<?php require '../vendor/autoload.php'; use App\Auth; if(!empty($_POST)){ $pdo = new PDO("sqlite:../data.sqlite", null, null,[ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); $auth = new Auth($pdo); $user = $auth->login($_POST['username'], $_POST['password']);//ligne 10 dd($user); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> </head> <body class="p-4 container col-md-6"> <h1>Se connecter</h1> <form action="" method="post"> <div class="form-group"> <input type="text" class="form-control" name="username" placeholder="pseudo"> </div> <div class="form-group"> <input type="password" class="form-control" name="password" placeholder="password"> </div> <button class="btn btn-primary">Se connecter</button> </form> </body> </html> voici la class Auth: <?php namespace App; use PDO; class Auth{ private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function user(): ?User { } public function login(string $username, string $password): ?User { //Trouver l'utilisateur correspondant au username $query = $this->pdo->prepare('SELECT * FROM users WHERE username = :username'); $query->execute(['username' => $username]); $query->setFetchMode(PDO::FETCH_CLASS, User::class); $user = $query->fetch(); if($user === false){ return null; } // On verifie password que l'utilisateur corresponde if(password_verify($password, $user->password)){ return $user; } return null; } }

Ce que je veux

j'apprend php grace aux tuto de graficart (apprendre le php ) et actuelement je fait le chapitre 39, j'aimeriais avoir les meme resutats que lui
mais nos erreurs se different.Aidez mois SVP.

Merci d'avance.

6 réponses

Carouge10, il y a 5 ans

bonsoir.
que donne un var_dump de $_POST avant $pdo ?

merciful, il y a 5 ans

voici ce que donne le var_dump: array(2) { ["user"]=> string(4) "koko" ["password"]=> string(3) "oko" }

Carouge10, il y a 5 ans

donc tu n'as pas d'index username mais user
donc soit tu ne modifies pas le bon code, soit un problème de cache.....

merciful, il y a 5 ans

je pense fortement que c'est le cache.
Merci pour la sugestion et de ta rapidité

merciful, il y a 5 ans

oui c'est le cache,je l'ai teste avec un autre navigateur et sa marche.Merci beaucoup

Carouge10, il y a 5 ans

de rien,
passe ton sujet en résolu