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
.
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;
}
}
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.
voici ce que donne le var_dump: array(2) { ["user"]=> string(4) "koko" ["password"]=> string(3) "oko" }
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.....
je pense fortement que c'est le cache.
Merci pour la sugestion et de ta rapidité
oui c'est le cache,je l'ai teste avec un autre navigateur et sa marche.Merci beaucoup