Bonjour à tous !
J'essaye de recoder mon site, et pour les notifications j'ai pensé à la librairie JS Toastr . Le problème auquel je fait face, c'est que j'utilise PHP pour le back-end, et que le résultat du PHP entraîne une commande en JS.
J'ai essayé de faire un "echo" de la commande dans PHP et cela ne marche (j'ai vérifié grâce à la console JS que toastr marche bien, et c'est le cas). J'ai donc décidé d'utiliser les sessions en créant un système de message "flash", sans plus de succès. Je vous met mes codes ici.
login.php (en partie) :
<?php require_once 'includes/needed.php';
require_once 'includes/db.php';
if (isset($_SESSION['auth'])) {
header('Location: account.php');
}
if (!empty($_POST['pseudo']) && !empty($_POST['mdp'])) {
require_once 'includes/db.php';
$req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND (confirmed_at IS NOT NULL AND is_confirmed = 1)');
$req->execute(['username' => $_POST['pseudo']]);
$user = $req->fetch();
if ($user) {
if (password_verify($_POST['mdp'], $user['password'])) {
if ($_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'] . '[CAVIARDE]'), time() + 60 * 60 * 24 * 7);
$_SESSION['auth'] = $user;
echo '<script>toastr["success"]("Bonjour <?= $user[\'pseudo\'] ?> ! Heureux de vous voir de retour sur [CAVIARDE] !", "Connecté avec succès")</script>'; //Ignorez cette partie
header('Location: account.php');
} else {
$_SESSION['auth'] = $user;
echo '<script>toastr.success("Bonjour ' . $user['pseudo'] . ' ! Heureux de vous voir de retour sur [CAVIARDE] !", "Connecté avec succès")</script>'; //Ignorez cette partie
header('Location: account.php');
}
} else {
$_SESSION['flash']['error'] = array('title' => 'Erreur de connexion', 'message' => 'Identifiant ou mot de passe incorrect'); //Ne s'affiche pas
}
} else {
$_SESSION['flash']['error'] = array('title' => 'Erreur de connexion', 'message' => 'Identifiant ou mot de passe incorrect'); //Ne s'affiche pas
}
}
?>
notifications.php :
<script>
console.log("Notifications included. If the notifications don't work, please contact us")
</script>
<?php if (isset($_SESSION['flash'])) : ?>
<?php foreach ($_SESSION['flash'] as $type => $array) : ?>
<script>
toastr.<?= $type ?>(<?= $array['message'] ?>, <?= $array['title'] ?>)
</script>
<?php endforeach; ?>
<?php unset($_SESSION['flash']); ?>
<?php endif; ?>
En espérant que vous pourrez m'aider