Je suis débutant en PHP et je fais une page de connexion/inscription toute simple. Voilà le code :
<?php session_start(); // Démarre la session
setcookie('pseudo', 'Kolerik', time() + (30 * 24 * 3600));
setcookie('id', 18, time() + (30*24*3600));
echo 'id : ' . $_COOKIE['id']; // Affiche les cookies
?>
<!DOCTYPE html>
<html>
<head>
<title>Titre</title>
</head>
<body>
<h1>Bonjour, bienvenue sur votre profil !</h1>
<?php
if(isset($_SESSION['email']) && (isset($_SESSION['date'])))
{
?>
<p>Votre email est <?php echo $_SESSION['email']; ?> </p>
<p>Votre compte a été créé le <?php echo $_SESSION['date']; ?> !</p> <!-- Affiche l'email de l'utilisateur ainsi que la date de création de son compte si l'utilisateur s'est connecté -->
<?php
} else {
echo 'Veuillez vous connecter à votre compte :';
}
?>
<?php
include 'cours_graven/includes/database.php'; // Connexion à la database
global $db;
?>
<h1>Login</h1>
<form method="post">
<input type="email" name="lemail" id="lemail" placeholder="Votre email" required> <br><br>
<input type="password" name="lpassword" id="lpassword" placeholder="Votre mot de passe" required><br> <br>
<input type="submit" name="formlogin" id="formlogin" value="Login"> <!-- Formulaire de connexion -->
</form>
<?php
include 'cours_graven/includes/login.php'; // Récupère les informations envoyées sur le formulaire de connexion
?>
<h1>Sign in</h1>
<form method="post">
<input type="email" name="semail" id="semail" placeholder="Votre email" required> <br><br>
<input type="password" name="password" id="password" placeholder="Votre mot de passe" required><br> <br>
<input type="password" name="cpassword" id="cpassword" placeholder="Veuillez confirmer votre MDP" required>
<input type="submit" name="send" id="send" value="Sign in"> <!-- Formulaire d'inscription -->
</form>
<?php
include 'cours_graven/includes/signin.php'; // Récupère les informations envoyées sur le formulaire d'inscription
?>
<form method="post">
<input type="submit" name="deco" value="Deconnexion" id="deco"> <!-- Bouton de déconnexion -->
</form>
<?php
if (isset($_POST['deco'])) {
session_destroy();
}
?>
</body>
</html>
Le login.php :
<?php
if(isset($_POST['formlogin']))
{
extract($_POST);
if(!empty($lemail) && !empty($lpassword))
{
$q = $db->prepare('SELECT * FROM users WHERE email = :email');
$q->execute(['email' => $lemail]);
$result = $q->fetch();
if($result == true)
{
// Le compte existe bien
$hashpassword = $result['password'];
if(password_verify($lpassword, $hashpassword))
{
echo 'Le mot de passe est bon, connexion. ';
$_SESSION['email'] = $result['email'];
$_SESSION['date'] = $result['date'];
} else {
echo 'Le mot de passe n\'est pas correct !';
}
}
else
{
echo 'Le compte portant l\'email ' . $lemail . ' n\'existe pas !';
}
}
} else {
echo 'Veuillez compléter tous les champs !';
}
?>
Le signin.php :
<?php
if(isset($_POST['send'])) {
extract($_POST);
if(!empty($password) && !empty($cpassword) && !empty($semail)) {
if($password == $cpassword) {
$options = [
'cost'=>12,
];
$hashpass = password_hash($password, PASSWORD_BCRYPT, $options);
$q = $db->prepare('INSERT INTO users(email,password) VALUES(:email,:password)');
$q->execute([
'email' => $semail,
'password' => $hashpass
]);
} else {
echo 'Les mots de passe ne sont pas les mêmes ! ';
}
}
}
?>
Je vous expose mon problème :
Le code marche bien, l'inscription dans la bse de données, la connexion etc fonctionnent, mais seul problème, quand il faut s'inscrire/se connecter/se déconnecter, il faut rafraichir la page pour que l'on soit connecté. Quelqu'un aurait-il une solution pour que ça affiche directement les identifiants etc ?
echo 'Le mot de passe est bon, connexion. ';
$_SESSION['email'] = $result['email'];
$_SESSION['date'] = $result['date'];
Suffit de mettre
header('Location /tapage.php');
exit();
Salut,
Tout d'abord merci pour ta réponse. Mais j'ai essayé, ça enlève le formulaire d'inscription (ce qui est bien !), mais ça ne refresh pas la page automatiquement :/
Pour les htmlspecialchar c'est a l'affichage donc avec les écho
Merci, mais quand je mets le : ça m'affiche cette erreur :/
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at wampserver@wampserver.invalid to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
<address>Apache/2.4.41 (Win64) PHP/7.3.12 Server at localhost Port 80</address>
Et ensuite l'include dans le bouton de déconnexion sur le index.php.
Merci !
Bouton de déconnexion PHP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP