php忽略了如果$ _SESSION ['variable']

时间:2014-06-25 19:56:09

标签: php session if-statement

$ _SESSION我遇到了一个奇怪的问题。

  if(isset($_SESSION['passed']))
  {
     echo "passed";
     unset $_SESSION['passed']; 
  }
  else
  {
  echo "not passed";
  }

因此我得到“未通过”,但当我评论“unset $ _SESSION ['pass'];” 我被传递了。我的意图是删除'传递',这样你就不能通过输入网址再次调用文档。我想这与服务器选项有关,但我不知道它可能是哪一个。有谁知道为什么php会这样be风?

编辑:我使用xampp

EDIT2:

抱歉,当我这样做时它会起作用:

set_pass.php

<?php
session_start();
$_SESSION['passed']="123";
header('location:check.php');
?>

check.php

<?php
session_start();
if(isset($_SESSION['passed']))
{
echo "passed";
unset($_SESSION['passed']);
}
else 
{
echo "not passed";
}
?>

但不是在我的项目中,所有项目都来自index.php而“check.php”显示会话已经开始。

编辑3

好的接近问题我重建了没有视图/模型的mvc系统,而controler在index.php中:

的index.php

<?php
include 'load.php';

$view =  (isset($_POST['view'])) ? $_POST['view'] : 'default';
echo "<br><b>".$view."</b><br";

$do = new load();

switch($view)

{
     case 'default':
     echo $do->_load('captcha.php');
     break;

     case 'setpass':
     echo $do->_load('setpass.php');
     break;
}

?>

load.php

<?php
class load
{

   public function _load($string)
   {
   ob_start();

   include $string;

   $output = ob_get_contents();

   ob_end_clean();

   return $output;
}

}
?>

captcha.php

 <form action="?view=setpass" method="post">
 <img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image">
 <input type="text" name="captcha_code" size="10" maxlength="6">
 <a href="#" onclick="document.getElementById('captcha').src =    'securimage/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a>
 <input type="submit" value="GO">
 </form>

setpass.php

<?php
session_start();

include_once 'securimage/securimage.php';
$securimage = new Securimage();

if ($securimage->check($_POST['captcha_code']) == false) 
{
echo "The security code entered was incorrect.<br /><br />";
echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
exit;
}

else
{
$_SESSION['passed']="123";
header('location:check.php');
}


?>

最后:check.php(与上面相同)

<?php
session_start();
if(isset($_SESSION['passed']))
{
echo "passed";
unset($_SESSION['passed']);
}
else 
{
echo "not passed";
}
?>

现在的问题是,当你点击captcha.php中的“Go submit-button”时,没有任何反应。你甚至得不到帖子或得到(我用foreach尝试了一切($ POST)..

我对这种现象没有任何解释,但我是初学者,所以也许你知道它是什么?!

2 个答案:

答案 0 :(得分:0)

添加session_start();在你的index.php中。

答案 1 :(得分:0)

我真的很抱歉我的MVC是一个包含两次模板的行,但它 没有在输出中显示。