if(empty($action) || isset($frames)) {
                   echo "ssss<br>";
$extra = cpurl('url');
$extra = $extra && $action ? $extra : (!empty($runwizard) ? 'action=runwizard' : 'action=home');
require_once DISCUZ_ROOT.'./admin/main.inc.php';
} elseif($action == 'logout') {
$adminsession ->destroy();
dheader("Location: $indexname");
} else {
echo "ddddddd";
/*if(in_array($action, array) {
require_once DISCUZ_ROOT.'./admin/'.$action.'.inc.php';
$title = 'cplog_'.$action.($operation ? '_'.$operation : '');
if(!in_array($action, array('home', 'custommenu')) && lang($title, false)) {
(strtolower($_SERVER['REQUEST_METHOD']) == 'get') && admincustom($title, cpurl('url'));
}
} else {
cpheader();
cpmsg('noaccess');
}
cpfooter();
*/
}上面代码对于用过DISCUZ的应该比较熟悉吧!这里我发现个非常奇怪的问题,就是这个条件判断语句。怎么会同时执行if()和else()语句。两个输出证明了他们都执行了。在页面可以到输出“sssssssss”和“ddddddd”那也就是他们都执行了。
谁能解释这是什么原因吗????

解决方案 »

  1.   

    当然有可能都输出拉。当empty($action)为真时:
    dddddd是elseif的else输出的!
      

  2.   

    echo "ssss<br>";
    这是四个S
    你怎么看到那么多?还有:你写成一串s和一串d有意思么?为什么不弄几句有点儿用的?
      

  3.   

    瞎扯蛋吧?怎么可能都输出呢? 如果第一个条件为真的时,不向下执行的.$action
    $frames 分别是什么值..说出来我去测试.$action=null;
    只输出echo "ssss <br>"; 
      

  4.   

    我觉得应该是这段代码被执行了多次,而每次的IF判断结果不同,从而使人误以为一次IF同时得到了不同结果。
      

  5.   

    呵呵,我理解错误了,向大家道歉。测试了一下,$action='';
    $frame="a";
    if (empty($action)||isset($frame)){
    echo "执行一";
    }else if($action=='action'){
    echo "执行二";
    }else{
    echo "执行三";

    }
    确实不行,再次道歉!
      

  6.   

    不妨下个discuz来试试。
    在admincp.php里!
      

  7.   

    if(1&&2)
     .....
    else if(1)
     .....
    else if(2)
     .....
    这样会输出什么?
      

  8.   

    应该是这段代码被重复执行了两次,然后两次执行时$action的值是不同的