2015-07-11 3 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

Can пожалуйста, проверьте, работает ли код, указанный в этой статье. [Сессии PHP] (http://www.sitepoint.com/php-sessions/). Если он не работает, возникает проблема с настройкой. –

ответ

0

Здесь не так много, чтобы быть «багги». $_SESSION - это всего лишь массив.
Если вы проверили var_dump($_SESSION), это может помочь вам обнаружить ошибку.

+0

Пожалуйста, улучшите форматирование вашего ответа или ответ будет рассмотрен как downvote. –

+0

@KeepCoding, пожалуйста, объясните .. – MaggsWeb

+1

@ChrisMaggs Это не похоже на ответ так сильно, как комментарий. Возможно, улучшите его с информацией о проверке, является ли 'session_id()' пустым и как проверить, был ли сеанс уже запущен? – MyStream

0

Прежде всего, вы должны начать СЕССИЯ

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

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

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

    }else{ 

    } 
?> 
+0

В качестве предложения по практике кодирования рассмотрим функцию 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 перед чтением или записи сессии массив.

Смежные вопросы