标题后丢失$ _SESSION值('Location:.........')

时间:2014-09-11 14:00:18

标签: php session

这是我的代码:

$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值。

由于

2 个答案:

答案 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()。

http://php.net/manual/en/function.session-destroy.php

答案 1 :(得分:1)

你破坏了完整的会话,但你没有(重新)启动它。

session_destroy();
session_start();