【问题标题】:PHP lost SESSION vars after header()PHP 在 header() 之后丢失了 SESSION vars
【发布时间】: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


【解决方案1】:

根据提问者的说法:

好的,我找到了!这是 iPage 的一个错误。这是解决方案:) http://www.ipage.com/knowledgebase/read_article.bml?kbid=600

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多