消息关闭
    暂无新消息!

关于header()的问题

问题作者 : 老李2017-08-17发布
下面的代码exit后 还是会执行__construct()里的内容


class a {
    protected $statue=true;
    public function __construct(){
                        $this->$statue=true;
$this->check();
//exit(var_dump(123));
if(isset($_GET['con']))
{
$con=$_GET['con'];
}
else
{
$con = "back";
}
if(method_exists($this, $con)) //如果所指的方法在对象类中已经定义,则返回TRUE,否则返回FALSE
{
$this->$con();
}
   }
    public function check(){
        if($this->statue)
{
if($_SESSION[user]==" ")
{
$this->statue=false;
               header("Location:index?con=login&req=".$req);
       exit();
}
}
    }
   public function back(){
    }
  }

如果继续执行的话,header后会弹出页面代码,
加了exit后,还是会继续执行,请问这个怎么解决

7个回答

︿ 2
你根据什么说 header("Location:index?con=login&req=".$req); 被执行了?
既然他没执行,那么 exit() 也没有执行

执行 header("Location:index?con=login&req=".$req); 的条件是 if($_SESSION[user]==" ")
但你连 session_start() 都没有,为什么 $_SESSION[user] 会是空格呢?
︿ 1
你的  header("Location:index?con=login&req=".$req); 是向浏览器发送一个页面跳转指令,指示浏览器加载新页面
无论其后是否有其他内容,都将被新页面替代
︿ 1
heade 里面的地址是没问题的,直接复制到浏览器可以用,写在别的地方也可以,只是在这里无效,弹出页面代码
︿ 1
你要跳转可以这样写

<?php
header('location:http://www.baidu.com');
exit();
?>

直接保存h.php执行试试。
︿ 1
自己找到了原因,和hearder没有关系,是前端的传值问题。用的react.js
︿ 1
就算 header 被执行了,页面输出的也是 跳转后的页面内容
有什么不对的呢?
︿ 0
你在exit(); 后面加个 echo 'exit'; 看看有没有输出,就之后exit();后还有没有执行了。

你没有session_start();
所以$_SESSION[user]==" "是不成立的,不会进入到里面执行exit();