2015-07-11 68 views
-1

我知道这个问题被问了很多次,但没有解决方案为我工作。PHP会话检查似乎根本没有工作

我能够设置会话,但问题是,出于某种原因,当我的会议没有设置它一直说你的会话设置。

这是我的一段代码:

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是越野车或有技术问题;我不确定。

+0

可能重复的[PHP会话变量不会工作](http://stackoverflow.com/questions/12063647/php-session-variables-wont-work) – Glorfindel

+0

好吧,不是这样的反正.. @Glorfindel –

+0

可以您请检查本文中提供的代码是否有效。 [PHP会话](http://www.sitepoint.com/php-sessions/)。如果它不起作用,那么会出现某种类型的“设置”问题。 –

回答

0

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

+0

请改进您的答案的格式,否则您的答案将被视为downvote。 –

+0

@KeepCoding请解释.. – MaggsWeb

+1

@ChrisMaggs这不像一个评论感觉就像一个答案。可能的话,通过检查'session_id()'是否为空以及如何检查会话是否已经开始的信息来改进它? – MyStream

0

首先,你必须要开始SESSION

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

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

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

    }else{ 

    } 
?> 
+0

作为编码实践的一个建议,考虑'function isGoalOld()'并使用格式,如if(isGoalOld()){...} else if(isGoalNew()){... } else {...}'以更紧凑和模块化的方式处理会话,这也将帮助您更有效地进行调试。 – MyStream

0

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

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

务必从读取或写入会话之前要调用session_start阵列。