【问题标题】:PHP session check seems not working at allPHP会话检查似乎根本不起作用
【发布时间】:2015-07-11 18:52:23
【问题描述】:

我知道这个问题被问了很多次,但没有一个解决方案对我有用。

我可以设置会话,但问题是,由于某种原因,当我的会话未设置时,它一直说您的会话已设置。

这是我的一段代码:

session_start();    
if($_SESSION["GOALOLD"]=="GOALOLDVALS") {
        //echo $_SESSION['GOALOLD']; 
        $prog_descs     = "";
        $sel_prog_descs = "SELECT * FROM prog_description WHERE cons_id = '" . $_SESSION['behaviour_user'] . "' AND prog_id = '" . $_SESSION['prog_id'] . "' AND student_id = '" . $_SESSION['current_student'] . "' ORDER BY prog_desc_id DESC LIMIT 1";
        $sel_prog_dessc = mysql_query($sel_prog_descs) or die(mysql_error());
        if (mysql_num_rows($sel_prog_dessc) > 0) {
            $rs_prog_dessc = mysql_fetch_array($sel_prog_dessc);
            $prog_descs    = $rs_prog_dessc['prog_goal_con'];
        }echo $prog_descs;
        }else if($_SESSION["GOALNEW"]=="GOALNEWVALS") {
            //echo $_SESSION['GOALNEW'];
            $prog_descs     = "";
            $sel_prog_descs = "SELECT * FROM prog_description WHERE cons_id = '" . $_SESSION['behaviour_user'] . "' AND prog_id = '" . $_SESSION['prog_id'] . "' AND student_id = '" . $_SESSION['current_student'] . "' ORDER BY prog_desc_id DESC LIMIT 1";
            $sel_prog_dessc = mysql_query($sel_prog_descs) or die(mysql_error());
            if (mysql_num_rows($sel_prog_dessc) > 0) {
                $rs_prog_dessc = mysql_fetch_array($sel_prog_dessc);
                $prog_descs    = $rs_prog_dessc['prog_goal_con'];
            }
            echo $prog_descs;
        }else{
    }

这是我取消会话的方法:

unset($_SESSION['GOALOLD']);
unset($_SESSION['GOALNEW']);

是否有可靠且适当的方法来检查会话,无论它是否已设置,或者其中是否有一些 xyz 值?

对我来说,它们不起作用。

我什至在另一个浏览器中尝试过,但仍然遇到同样的问题,它一直说它已设置。可能我的if else 有问题或有技术问题;我不确定。

【问题讨论】:

  • PHP session variables wont work 的可能重复项
  • 好吧,反正情况并非如此。@Glorfindel
  • 您能否检查一下本文提供的代码是否有效。 PHP Sessions。如果它不起作用,则存在某种类型的“设置”问题。
  • 您需要添加更多代码,尤其是您在问题中引用的部分。您的代码只是一个空的 if/else,它什么都不做。
  • @KeepCoding 请在您的会话设置中包含更多信息,以便支持质量可以更好地反映您想了解的内容。你从 session_start() 开始吗?这是独立的吗?这是测试文件中的第一段代码吗?

标签: php session session-variables


【解决方案1】:

这里没有很多“越野车”。 $_SESSION 只是一个数组..
如果您在测试前var_dump($_SESSION),这可能会帮助您发现错误。

【讨论】:

  • 请改进答案的格式,否则您的答案将被视为否决。
  • @ChrisMaggs 这与其说是评论,不如说是一个答案。可能,使用有关检查 session_id() 是否为空白以及如何检查会话是否已启动的信息来改进它?
  • @MyStream 注意到 - 谢谢
【解决方案2】:

首先你必须启动SESSION

<?php
session_start(); // MUST write this line

if(isset($_SESSION['GOALOLD']) && $_SESSION['GOALOLD']=='GOALOLDVALS') {

}else if(isset($_SESSION['GOALNEW']) && $_SESSION['GOALNEW']=='GOALNEWVALS') {

    }else{

    }
?>

【讨论】:

  • 作为编码实践的建议,考虑function isGoalOld() 并使用if(isGoalOld()) { ... } else if(isGoalNew()) { ... } else { ... } 等格式并以更紧凑和模块化的方式处理会话,这也将帮助您更有效地调试它。
【解决方案3】:

您可以像这样检查会话变量:

session_start();
if(isset($_SESSION['GOALOLD']) && !empty($_SESSION['GOALOLD'])) {
   //Put here here want you want when If session of GOALOLD is set
}

确保在读取或写入会话数组之前调用session_start

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多