Connexion à un espace membre en PHP et MySQL - PHP

Connexion à un espace membre en PHP et MySQL Erreur de connexion espace membre en PHP SQL (Résolu) » Forum - PHP Problème connexion espace membre en php chez free [Résolu] (Résolu) » Forum - PHP Création d'un espace membre (inscription.php) (Résolu) » Forum - PHP Espace membres en php simple (Résolu) » Forum - PHP Espace membres en php: envoi mail??? (Résolu) » Forum - PHP

Bonjour,

Je suis actuellement entrain de concevoir un site web avec un espace membre à l'aide de PHP et MySQL.
J'ai réussi à réaliser :
- L'inscription des utilisateurs au site,
- L'envoi de mail pour confirmer leur inscription : lorsque les utilisateurs cliquent sur le lien envoyé par mail, il sont redirigés vers leur espace membre. Le "header" change alors pour afficher un bouton Déconnexion au lieu du formulaire de connexion.
- La connexion des utilisateurs au site. Mais lorsque les utilisateurs se connectent au site, le "header" ne se change pas. Je souhaiterez donc qu'il se modifie afin qu'il affiche un bouton Déconnexion à la place du formulaire de connexion.

Pouvez-vous m'aider à résoudre ce problème svp ?

Mon code :
- index.php (Page d'accueil) :

<?php
session_start();
require_once('includes/functions.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="description" content="Burger Quiz"/>
<meta name="author" content="Titouan Paris"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" href="img/icon.png"/>
<title>Burger Quiz - Accueil</title>
</head>
<body>
<?php
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
require('includes/database.php');
$req = $pdo->prepare('SELECT * FROM users WHERE (username = :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é !";
header('Location: dashboard.php');
exit();
} else {
$_SESSION['flash']['danger'] = "Pseudonyme ou mot de passe incorrect.";
}
}
?>
<?php
include_once('includes/header.php');
?>
<?php
include_once('includes/footer.php');
?>
</body>
</html>

- register.php (Page d'inscription) :

<?php
session_start();
require_once('includes/functions.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="description" content="Burger Quiz"/>
<meta name="author" content="Titouan Paris"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" href="img/icon.png"/>
<title>Burger Quiz - Inscription</title>
</head>
<body>
<?php
include_once('includes/header.php');

if(!empty($_POST)) {

$errors = array();
require_once('includes/database.php');

if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
$errors['username'] = "Le pseudonyme que vous avez indiqué n'est pas valide.";
} else {
$req = $pdo->prepare('SELECT id FROM users WHERE username = ?');
$req->execute([$_POST['username']]);
$user = $req->fetch();
if($user) {
$errors['username'] = "Ce pseudo est déjà utilisé.";
}
}

if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "L'email que vous avez indiqué n'est pas valide.";
} else {
$req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
$req->execute([$_POST['email']]);
$user = $req->fetch();
if($user) {
$errors['email'] = "Cet email est déjà utilisé.";
}
}

if(empty($_POST['password']) || $_POST['password'] == $_POST['username']) {
$errors['password'] = "Le mot de passe que vous avez indiqué n'est pas valide.";
}

if(empty($errors)) {
$req = $pdo->prepare('INSERT INTO users SET username = ?, email = ?, password = ?, confirmation_token = ?');
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$token = str_random(60);
$req->execute([$_POST['username'], $_POST['email'], $password, $token]);
$user_id = $pdo->lastInsertId();
mail($_POST['email'], "Confirmation de votre compte Burger Quiz", "Afin de valider votre compte, veuillez cliquez sur le lien suivant :\n\nhttp://localhost/Tutoriel_Grafikart/confirm.php?id=$user_id&token=$token");
$_SESSION['flash']['success'] = "Un email de confirmation vous a été envoyé afin de valider votre compte.";
header('Location: index.php');
exit();
}

}
?>
<div class="register_container">
<h1>S'inscrire</h1>

<?php if(!empty($errors)): ?>
<div class="alert alert-danger">
<p>Vous n'avez pas rempli le formulaire correctement :</p>
<ul>
<?php foreach($errors as $error): ?>
<li><?= $error; ?></li>
<?php endforeach ?>
</ul>
</div>
<?php endif ?>

<form class="register_form" action="" method="post">
<input type="text" name="username" placeholder="Pseudonyme"/>
<input type="email" name="email" placeholder="Adresse email"/>
<input type="password" name="password" placeholder="Mot de passe"/>
<input type="submit" name="submit" value="Inscription"/>
</form>
</div>
<?php
include_once('includes/footer.php');
?>
</body>
</html>

- confirm.php : (Page de confirmation par email) :

<?php
$user_id = $_GET['id'];
$token = $_GET['token'];
require('includes/database.php');
$req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();
session_start();

if($user && $user->confirmation_token == $token) {
$pdo->prepare('UPDATE users SET confirmation_token = NULL, confirmed_at = NOW() WHERE id =?')->execute([$user_id]);
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = "Votre compte a bien été validé !";
header('Location: dashboard.php');
} else {
$_SESSION['flash']['danger'] = "Ce token n'est plus valide.";
header('Location: index.php');
}
?>

- header.php (Le header que je souhaiterais moddifier à la connexion d'un utilisateur) :

<header>
<div class="login_container">
<?php if(isset($_SESSION['auth'])): ?>
<a href="logout.php">Déconnexion</a>
<?php else: ?>
<form class="login_form" action="dashboard.php" method="post">
<input type="text" name="username" placeholder="Pseudonyme"/>
<input type="password" name="password" placeholder="Mot de passe"/>
<input type="submit" name="submit" value="Connexion">
</form>
<?php endif; ?>
</div>
</header>
<section>
<?php if(isset($_SESSION['flash'])): ?>
<?php foreach($_SESSION['flash'] as $type => $message): ?>
<div class="alert alert-<?= $type; ?>">
<?= $message ?>
</div>
<?php endforeach ?>
<?php unset($_SESSION['flash']); ?>
<?php endif ?>

- dashboard.php (Espace membre) :

<?php
session_start();
require_once('includes/functions.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="description" content="Burger Quiz"/>
<meta name="author" content="Titouan Paris"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" href="img/icon.png"/>
<title>Burger Quiz - Mon compte</title>
</head>
<body>
<?php
include_once('includes/header.php');
?>
<h1>Mon compte Burger Quiz</h1>
<?php
include_once('includes/footer.php');
?>
</body>
</html>

- logout.php (Script de déconnexion du site) :

<?php
session_start();
unset($_SESSION['auth']);
$_SESSION['flash']['success'] = "Vous êtes maintenant déconnecté !";
header('Location: index.php');
?>


Pouvez-vous m'aider svp ?

Merci d'avance :)

Forum

Connexion à un espace membre en PHP et MySQL Erreur de connexion espace membre en PHP SQL (Résolu) » Forum - PHP Problème connexion espace membre en php chez free [Résolu] (Résolu) » Forum - PHP Création d'un espace membre (inscription.php) (Résolu) » Forum - PHP Espace membres en php simple (Résolu) » Forum - PHP Espace membres en php: envoi mail??? (Résolu) » Forum - PHP

Web: www.shapebootstrap.net

1 réponse

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour


Lorsque les utilisateurs se connectent au site, le "header" ne se change pas. Je souhaiterez donc qu'il se modifie afin qu'il affiche un bouton Déconnexion à la place du formulaire de connexion.


As tu vérifié si ta variable de session contenait bien quelque chose ,
 print_r($_SESSION); 


NB: A l'avenir, lorsque tu postes du code, merci d'y préciser le LANGAGE afin d'avoir la coloration syntaxique et l'indentation.




Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed