Je suis désolé si ce topic existe déjà mais je ne suis pas très bon en php et j'ai besoin qu'on m'explique deux trois choses. Je suis au commande d'un site (que je n'ai pas créé) et j'ai créé un espace client pour les personnes qui ont fait des commandes sur ce site. L'espace client permet de voir aux clients les récapitulatifs de leurs commandes. Mon seul problème est que je ne comprends pas trop le système des SESSION en php.
Le site est très simple. J'ai créé un onglet "espace client" qui permet aux utilisateurs de s'authentifier, il n'y a pas de problème jusque là. Mais une fois que l'utilisateur quitte l'onglet espace client, il doit se reconnecter en réentrant ses informations personnelles si il veut retourner à son espace client. J'ai lu les cours sur php du site et j'ai lu un ou deux topics à ce sujet sur le forum mais cette histoire de SESSION n'est toujours pas claire pour moi.
Est-ce que quelqu'un pourrait m'expliquer comment garder la session d'un utilisateur active ?
Hmm je ne comprends pas trop. J'ai une page "connexion_espace_client.php" où l'utilisateur se connecte et une page "espace_client.php" où l'utilisateur a accès à ses informations personnelles. Si je comprends bien il suffit que je mette une instruction "session_start()" dans mes 2 pages .php ?
Mais comment la page "connexion_espace_client.php" saura que l'utilisateur en question est toujours connecté ?
Voici le code de la page "connexion_espace_client.php".
<!-- On créé un espace client pour que les clients qui ont fait une commande puissent voir les détails de leurs commandes -->
<p>Veuillez entrer votre identifant (adresse email) et votre mot de passe (envoyé par mail lors de votre commande) pour accéder à votre espace client et voir les détails de votre commande.</p>
<center>
<form action="espace_client.php" method="post">
<label>Identifiant</label> : <input type="text" name="identifiant" placeholder="email">
<label>Mot de passe</label> : <input type="password" name="mot_de_passe" placeholder="mot de passe">
<input type="submit" name="valider">
</form>
<a href="mdp_oublie.php">Mot de passe oublié ?</a>
</center>
J'utilise donc un formulaire pour que l'utilisateur puisse se connecter et je met en attribut de <form> action="espace_client.php".
Maintenant la page "espace_client.php"
<!-- On teste le mot de passe et l'identifiant entrés dans la page connexion_espace_client.php -->
<?php
// Hachage du mot de passe
$mdp_hache = hash('sha256', $_POST['mot_de_passe'], false);
$identifiant = $_POST['identifiant'];
// Vérification des identifiants
$requete = $bdd->prepare('SELECT * FROM europa_client WHERE mail = :identifiant AND mot_de_passe = :mot_de_passe');
$requete->execute(array(
'identifiant' => $identifiant,
'mot_de_passe' => $mdp_hache));
$resultat = $requete->fetch();
if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
else
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['identifiant'] = $identifiant;
echo 'Vous êtes connecté !';
}
?>
Donc je teste les données entrées par l'utilisateur et si les données sont correctes je fais la commande "session_start()".
Donc à chaque page, il faudrait que tu vérifies si $_SESSION['identifiant'] ou $_SESSION['id'] existent (attention à ce que "identifiant" soit unique si tu utilises ça).
<?php
session_start();
// Hachage du mot de passe
$mdp_hache = hash('sha256', $_POST['mot_de_passe'], false);
$identifiant = $_POST['identifiant'];
// Vérification des identifiants
$requete = $bdd->prepare('SELECT * FROM europa_client WHERE mail = :identifiant AND mot_de_passe = :mot_de_passe');
$requete->execute(array(
'identifiant' => $identifiant,
'mot_de_passe' => $mdp_hache));
$resultat = $requete->fetch();
if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
elseif (($resultat == true) OR (isset($_SESSION['id']) AND isset($_SESSION['identifiant'])))
{
echo 'Vous pouvez voir ici les récapitulatifs de vos commandes';
$_SESSION['id'] = $resultat['id'];
$_SESSION['identifiant'] = $resultat['mail'];
//affichage des données personnelles du client
}
?>
Mais dans la page "connexion_espace_client.php" je ne vois pas à quel endroit je faire le test
(isset($_SESSION['id']) AND isset($_SESSION['identifiant']))
- Edité par JohnDoe179 27 juillet 2017 à 14:58:30
Espace client 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.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.