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()){}}{…}。
并以更紧凑和模块化的方式处理会话,这也将帮助您更有效地调试会话。