这是我的代码:
$login = $_SESSION['login'];
$statut = $_SESSION['statut'];
$atelier = $_SESSION['atelier'];
$connexion = $_SESSION['connexion'];
session_destroy ();
$_SESSION['login'] = $login;
$_SESSION['statut'] = $statut;
$_SESSION['atelier'] = $atelier;
$_SESSION['connexion'] = true;
header('Location: http://10.13.48.60/no_serie.php');
Run Code Online (Sandbox Code Playgroud)
所以当我到达这里时,标题会将我发送到正确的页面,但每次我的登录值都会松动,就好像它没有再保存我的$ _SESSION值一样.难道我做错了什么 ?
或另一种解决方案是将变量放在链接中,如:
header('Location: http://10.13.48.60/no_serie.php?login = '.$login.', statut = '.$statut.', ...');
Run Code Online (Sandbox Code Playgroud)
但我更喜欢这个$_SESSION解决方案.
ps:我用我的每个页面开始session_start();,我从不触及$_SESSION价值.
谢谢
您调用session_destroy()然后设置更多会话,因此您需要确保session_start()在重置会话之前再次调用.或者根本不打电话session_destroy.
像这样:
$login = $_SESSION['login'];
$statut = $_SESSION['statut'];
$atelier = $_SESSION['atelier'];
$connexion = $_SESSION['connexion'];
// session_destroy (); - unnecessary
$_SESSION['login'] = $login;
$_SESSION['statut'] = $statut;
$_SESSION['atelier'] = $atelier;
$_SESSION['connexion'] = true;
header('Location: http://10.13.48.60/no_serie.php');
Run Code Online (Sandbox Code Playgroud)
来自PHP.net:
session_destroy()销毁与当前会话关联的所有数据.它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie.要再次使用会话变量,必须调用session_start().
http://php.net/manual/en/function.session-destroy.php