【发布时间】:2013-08-01 09:51:51
【问题描述】:
在使用 header() 重定向后,我不断丢失 SESSION 变量。 我尝试了在类似问题中找到的所有解决方案,例如每个页面顶部的 session_start() 和 header() 之后的 exit(),但它不起作用。每次我在 succlog.php 页面中收到“id not set”。重定向到 succlog.php 非常完美。 你能帮我么? 以下是代码:
登录页面:
session_name("session1");
session_start();
..........
$qry = "SELECT * FROM `members` WHERE `usr` = '$username' AND `pass` = '" . md5($password) . "'";
$result = mysql_query($qry);
//Check whether the query was successful or not
if(mysql_num_rows($result) == 1) {
while($row = mysql_fetch_assoc($result)) {
$_SESSION['id'] = $row['id'];
$_SESSION['usr'] = $username;
session_write_close();
header("location: succlog.php"); //Redirect
exit();
}
}
succlog.php:
session_name("session1");
session_start();
...........
<?php
if(isset($_SESSION['id'])){
echo "id".$_SESSION['id'];
}
else{
echo "id not set";
}
?>
【问题讨论】:
-
session_name 应该在 session_start() 之后
-
删除
session_write_close();这一行并检查。 -
session_start() 必须是每个php页面的第一行
-
No @DevZer0 和 @chirag ode 它不是真的。
The session name is reset to the default value stored in session.name at request startup time. Thus, you need to call session_name() for every request (and before session_start() or session_register() are called).阅读php.net/manual/en/function.session-name.php -
很高兴您找到了解决方案!您应该将其写成下面的答案,以防该链接将来无法使用。
标签: php session variables header