J'ai une question qui va paraître complétement stupide pour certains mais qui me pose quelques problèmes... je crée un site web qui gère (entre autres) un principe de session. Tout marche bien, je peux m'inscrire, me connecter, me déconnecter, ... La base de données réagit bien
Le problème est celui-ci : J'aimerais changer le header du site qui contient les options de connexion, déconnexion et inscription avec un truc comme profil et déconnexion.
Je sais pas si c'est clair mais voici u bout du code :
C'est le header avec l'image du site et les 3 options...
Encore une fois, j'aimerais que ces 3 options ne deviennent plus que "profil" et "déconnexion" (logique, on a plus besoin de se connecter ou de s'inscrire si on est déjà connecté...).
Est-ce du JavaScript qui modifie le code? du PHP qui gère les variables $_SESSION?
ainsi qu'une variable de session (qui est dans le if) pour voir si la session était ouverte sauf que ca pose problème, cette variable $_SESSION indique tout le temps le warning "Undefined index : connecte in C:\ ... on line 3" qui est donc ma variable :
<?php
session_start();
$_SESSION['connecte'];
?>
De plus, ca ne marche toujours pas... il ne distingue pas la session ouverte ou non, la connexion et déconnexion se font toujours correctement mais le header ne change pas :/
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=asbl;charset=utf8', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
if (isset($_POST['mail']) AND isset($_POST['pass']))
{
$mail = $_POST['mail'];
// Récupération de la valeur du champ actif pour le login $login
$stmt = $bdd->prepare("SELECT actif FROM membres WHERE email like :email");
if($stmt->execute(array(':email' => $mail)) && $row = $stmt->fetch())
{
$actif = $row['actif']; // $actif contiendra alors 0 ou 1
}
// Il ne nous reste plus qu'à tester la valeur du champ 'actif' pour
// autoriser ou non le membre à se connecter
if($actif != '1') // Si $actif est égal à 1, on autorise la connexion
{
header('Location: accueil.php?error=NoActiv');
}
else
{
// Hachage du mot de passe
$pass_hache = sha1($_POST['pass']);
// Vérification des identifiants
$req = $bdd->prepare('SELECT id FROM membres WHERE email = :email AND pass = :pass');
$req->execute(array(
'email' => $mail,
'pass' => $pass_hache));
$resultat = $req->fetch();
if (!$resultat)
{
//Mauvais email ou mot de passe
header('Location: accueil.php?error=badIDPass');
}
else
{
session_start();
$_SESSION['id'] = $resultat['id'];
//Connexion réussie
header('Location: accueil.php?error=suceedCo');
}
}
}
Voila
Pour la variable $_SESSION, j'avoue ne pas trop m'y connaître, j'ai essayé en l'initialisant à 1,... mais ca ne changeait rien :/ désolé je ne m'y connais pas en php, j'ai juste lu le cours du site :/
Encore une fois, la connexion, déconnexion,... marche bien, c'est juste le changement de menu en fonction de l'état de la session (connecté ou inscrit et déconnecté) qui pose problème ;D
Remplaces tes $_SESSION['connecte'] par $_SESSION['id'] (et supprimes l'instruction $_SESSION['connecte']; qui ne sert toujours à rien). Pas la peine d'avoir 50 variables de session : la simple présence/absence de $_SESSION['id'] que tu crées (contrairement à $_SESSION['connecte'] donc ça ne pouvait pas fonctionner) permet de savoir si on est connecté ou pas.
email like :email
Sans validation (et encore) le mec qui te met un % pour email t'active tout le monde ... Pourquoi LIKE au lieu d'un simple = ?
Non, c'est sur if(!isset($_SESSION['connecte'])) qu'il fallait faire le remplacement. La ligne $_SESSION['id']; tu la vires, tout simplement : elle est inutile, l'instruction ne va rien faire à part te lever une notice pour les non connectés (bien que tu n'es pas censé les voir en production).
Il me semblait bien que c'était inutile dans la session_start()
Je remplace ca direct merci
Le problème avec les balises <?php ...?> c'est qu'avec les <ul> si je ne ferme pas les balises avant et après, le code me met un warning et refuse d'ouvrir correctement la page... :/
EDIT : Merci! ca marche enfin! merci beaucoup pour votre aide
- Edité par djesty 31 janvier 2017 à 16:33:42
Gestiond'un session 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.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli