PHP 7.4
Le fichier LOGIN..PHP
`<?php
require_once 'inc/functions.php';
reconnect_from_cookie();
if(isset($_SESSION['auth']) && $_SESSION['auth']->actif){
header('Location: account.php');
exit();
}
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
require_once 'inc/db.php';
$req = $pdo->prepare('SELECT FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
$req->execute(['username' => $_POST['username']]);
$user = $req->fetch();
if(password_verify($_POST['password'], $user->password)){
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
if(isset($_POST['remember'])){
$remember_token = str_random(250);
$pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 60 24 7);
}
header('Location: account.php');
exit();
}else{
$_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
}
}
?>
<?php require 'inc/header.php'; ?>
<h1>Se connecter</h1>
<form action="" method="POST">
<div class="form-group">
<label for="">Pseudo ou email</label>
<input type="text" name="username" class="form-control"/>
</div>
<div class="form-group">
<label for="">Mot de passe <a href="forget.php">(J'ai oublié mon mot de passe)</a></label>
<input type="password" name="password" class="form-control"/>
</div>
<div class="form-group">
<label>
<input type="checkbox" name="remember" value="1"/> Se souvenir de moi
</label>
</div>
<button type="submit" class="btn btn-primary">Se connecter</button>
</form>
<?php require 'inc/footer.php'; ?>`
Appelle logged_only() dans le fichier functions.php
Si actif est 1 et que les identifiants sont bon, ça va dans ACCOUNT.PHP:
require 'inc/functions.php'; logged_only();
Un autre problème se pose, sans être connecter parce que "actif" est à 0,
c'est comme si j'étais connecté puisque j'ai le bouton "Se déconnecter".
Proable que ce soit cette portion de code qui est problème :
La partie "Se déconnecter"
<?php if (isset($_SESSION['auth'])): ?> <li><a href="logout.php">Se déconnecter</a></li> <?php else: ?> <li><a href="register.php">S'inscrire</a></li> <li><a href="login.php">Se connecter</a></li> <?php endif; ?>
La source est dans les Tutos ici à "Gestion de l'espce membres".
Que je tente d'adapter à mes besoins en ajoutant "Actif" et intégrer
à mon projet.