这是我的代码:
$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');
当我到达这里时,标题会将我发送到正确的页面,但每次我的登录值都会松动,如果它没有再保存我的$ _SESSION值。 我做错了吗?
或另一种解决方案是将变量放在链接中:
header('Location: http://10.13.48.60/no_serie.php?login = '.$login.', statut = '.$statut.', ...');
但我更喜欢$_SESSION
解决方案。
ps:我使用session_start();
启动了每个页面,但我从未触及$_SESSION
值。
由于
答案 0 :(得分:5)
您呼叫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');
来自PHP.net:
session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。
答案 1 :(得分:1)
你破坏了完整的会话,但你没有(重新)启动它。
session_destroy();
session_start();