PHP $_SESSION variable ne sera pas annuler
désolé pour la répétition de la question, j'ai vu un peu sur ce forum, mais aucune des réponses a fonctionné pour moi...
Je suis la construction d'une base de connexion à l'aide de sessions php, je suis nouveau...
login.php valide html formulaire de connexion et commence une session, la définition de variables: $_SESSION['login']
et $_SESSION['id]
,
puis chaque page qui nécessite une connexion valide utilise require 'session.php';
qui vérifie la $_SESSION['valid']
variable et redirige l'utilisateur w/o bonne connexion variable. Le problème, c'est quand je déconnexion ni variable de session, j'ai mis en sera annulée.
Maintenant mon logout.php fichier utilise à propos de chaque méthode pour détruire les variables que j'ai pu trouver en ligne et aucun ne le faire réellement.
Donc à chaque fois que je me déconnecte, je peux toujours accéder au "privé", pages.
Également note: j'ai essayé w/o un nom de session ex: session_start();
qui n'a pas fonctionné alors maintenant, je suis en utilisant session_start("user");
Également note: je ne suis PAS en utilisant des cookies.
Voici les fichiers que j'ai mentionné:
login.php
$email=$_POST['email-log']; $pass=$_POST['password-log'];
$i=-1;
do
{$i++; $path="users/".$i.".json";
$file= file_get_contents($path);
$x=json_decode($file,true);
} while($x['email']!=$email);
$id=$i;
$truepass=$x['pass'];
$errors=0;
$hash=hash('sha256',$pass);
if($hash != $truepass){$errors=$errors+1;}
if($errors==0){
session_start("user");
$_SESSION['login']="valid";
$_SESSION['id']=$id;
header('Location: loginlanding.php');}
else{header('Location: front.php?error=y');}
session.php
session_start("user"); if($_SESSION['login'] !== "valid") {header('Location: front.php?needto=login');}
logout.php
unset($_SESSION); unset($_SESSION['login']); unset($_SESSION['id']); session_unset("user"); $_SESSION=array(); session_destroy("user"); header('Location: front.php?logged=out');
Tout et toutes les réponses sont les bienvenus et je vous en remercie d'avance, aussi remarque, je suis nouveau à des connexions en général donc, tous les conseils pour renforcer la sécurité est la bienvenue également. J'ai l'intention de le rendre plus sûr, mais d'abord j'ai besoin d'obtenir cette fonctionnalité de base et en cours d'exécution.
Est-il sain d'esprit la raison pour quiconque de faire écrire ce genre de code eux-mêmes en 2012?
OriginalL'auteur B Rad C | 2012-09-06
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez jamais
unset($_SESSION)
.La façon la plus simple pour effacer le
$_SESSION
variable est$_SESSION = Array();
Cependant, vous pouvez également faire une itération avec
unset
:Pourquoi êtes-vous en ajoutant
session_destroy("user");
? Il ne fait rien. Il suffit de nesession_destroy();
OriginalL'auteur Niet the Dark Absol
Il est incroyable de voir comment beaucoup de choses que vous êtes en essayant de faire après vous avez de désactiver la seulement référence que vous avez eu de la session en premier lieu. Directement à partir de la notice:
Vous êtes à la suppression de
$_SESSION
de sorte que votre unsets pour les autres tableaux de la super globale$_SESSION
ne sont pas de l'inscription, les laissant encore dans les navigateurs des cookies temporaires. Utilisationsession_unset()
à la place si vous tentez de supprimer tous les variables de session. Sinon, ne pas unset la session mondiale, mais unset chaque valeur que vous souhaitez supprimer.OriginalL'auteur jeremy
Mon exemple (notez que vous devez commencer à mettre sur l'appel)
OriginalL'auteur MCunha98