$ _SESSION无效

时间:2017-03-09 12:51:48

标签: php session

第1页

<?php 
session_start();
$_SESSION['username']='alex';
?>

第2页

<?php 
session_start(); 
if (isset($_SESSION ['username'])) {
    echo 'Welcome, ' .$_SESSION['username'];
} else {
    echo 'please log in';
}
?>

当我加载“Welcome,Alex”页面时,无论会话是否存在,都会一直显示。

4 个答案:

答案 0 :(得分:1)

在您希望关闭会话的地方使用session_destroy

<?php 
session_start();
$_SESSION['username']='alex';
?>

SAYFA 2

<?php 
session_start(); 
if (isset($_SESSION ['username'])) {
    echo 'Welcome, ' .$_SESSION['username'];
session_destroy();
} else {
    echo 'please log in';
}
?>

答案 1 :(得分:0)

请在使用后取消设置变量

请参阅,

<?php 
session_start();
$_SESSION['username']='alex';
?>

<?php 
session_start(); 
if (isset($_SESSION ['username'])) {
    echo 'Welcome, ' .$_SESSION['username'];
unset($_SESSION['username']);
} else {
    echo 'please log in';
}
?>

答案 2 :(得分:0)

你自己设置$ _SESSION,它永远存在,因为你永远不会UNSETTING它:

$_SESSION['username']='alex';

对于正常情况,在对服务器发出POST请求后,总是设置$_SESSION,在完成一些验证之后:

<?php 
session_start(); 
if (!isset($_SESSION ['username'])) {
    $_SESSION ['username'] = $_POST['username'];
}
?>

答案 3 :(得分:0)

设置会话后,它会一直与用户保持一致,直到session.gc_maxlifetime给出的最短时间,之后,每次刷新时可能会清除1%的默认值(默认值:{ {1}}和session.gc_divisor = 100)。

您需要自己结束会话或在X时间之后使其过期(使用时间戳比较或类似。

您可以使用以下内容:

登录时:

session.gc_probability = 1

在每个后续页面

<?php 
session_start();
$_SESSION['username']='alex';
$_SESSION['timestamp']=date("Y-m-d H:i:s");
?>