Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话检查似乎根本不起作用_Php_Session_Session Variables - Fatal编程技术网

PHP会话检查似乎根本不起作用

PHP会话检查似乎根本不起作用,php,session,session-variables,Php,Session,Session Variables,我知道这个问题被问了很多次,但没有一个解决方案对我有效 我可以设置会话,但问题是,由于某种原因,当我的会话未设置时,它会一直说您的会话已设置 这是我的一段代码: session_start(); if($_SESSION["GOALOLD"]=="GOALOLDVALS") { //echo $_SESSION['GOALOLD']; $prog_descs = ""; $sel_prog_descs = "SELECT * FR

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

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

这是我的一段代码:

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值

对我来说,它们不起作用


我甚至在另一个浏览器中尝试过,但仍然遇到同样的问题,因为它一直说它已经设置好了。如果我的
有故障或有技术问题,则可能是我的
;我不确定。

这里没有太多的东西是“马车”<代码>$\u会话
只是一个数组。

如果在测试之前
var\u dump($\u会话)
,这可能会帮助您发现错误。

首先,您必须启动会话

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

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

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

    }else{

    }
?>

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

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

在读取或写入会话数组之前,请确保您正在调用
会话\u start

可能存在井的重复,但无论如何情况并非如此@GlorfindelCan请检查本文提供的代码是否有效。如果不起作用,则存在某种类型的“设置”问题。您需要添加更多代码,尤其是您在问题中提到的部分。您的代码只是一个空的if/else,没有任何作用。@KeepCoding请在会话设置中包含更多信息,以便支持质量更好地反映您想要了解的内容。您是否从会话_start()开始?这是独立的吗?这是测试文件中的第一段代码吗?请改进你的答案的格式,否则你的答案会考虑下投票。@ ChrisMaggs,这不是一个答案,而是一个评论。可能的话,通过检查代码< > Session x Id()>代码>是否是空白,以及如何检查会话是否已经启动来改进它。@ MySt流注意到-谢谢您作为编码实践的建议,考虑<代码>函数ISGOALALOLD()/<代码>,并使用一种格式,如<代码> if(ISGOALLO()){…}否则(ISGOALNEW()){}}{…}。
并以更紧凑和模块化的方式处理会话,这也将帮助您更有效地调试会话。