通过include包含的代码是怎么执行的?已知直接header跳转后能执行的PHP页面,如果想执行函数而不跳转该怎么做?在if语句里incude后调用函数却不管if语句是否成立都执行

解决方案 »

  1.   

    一样是先判断才选择执不执行,就类似于把被包含文件复制到include所在行
      

  2.   

    if(!empty($_POST['sync'])){
    include './addons/zzz.php?method=xxxx';
    $result=$zzz->xxxx();
        }
    这是我的代码,有两个问题,一是include在if外就生效了,二是调用$zzz->xxxx()时提示xxxx()是空方法,可是xxxx()是zzz类中的函数,而zzz类已经new过了
      

  3.   

    zzz.php里面定义了zzz类,传入值后自动执行$zzz->$_GET['method'],如果直接include zzz.php不传method值那么第一个问题就解决了,但是下面执行xxxx()就会提示Call to a member function on a non-object 
      

  4.   

    if 之后再include 的写法没错.
    写错的是include 只能是文件 跟参数是错误的. zzz.php 是对的 后面跟个 method 是错的.
    所以你后面也就跟着错了。要使用什么method 可以用post的方法
      

  5.   

    $zzz被覆盖了或者米有,不过 ./addons/zzz.php?method=xxxx 这种写法不行,本地文件加GET参数不能被识别。可以$_GET['method']='xxxx';加在include前面。 看起来这方法太别扭,最好还是改变一下zzz.php单一的传值方式
      

  6.   

    你的这个类就设计的不合理。。哪有以url向类名传参数的啊
      

  7.   

    给你个范例 参考参考
    class test{
    public function __construct($Method){
    switch ($Method){
    case 1:
    self::do1();
    break;
    case 2:
    self::do2();
    }
    }
    public function do1(){
    echo 'Method1';
    }
    public function do2(){
    echo 'Method2';
    }
    }$Method=$_POST['method']; //1;
    $Method=1;//test$Mytest=new test($Method);//传递参数并且执行相关的动作
      

  8.   

    include 的参数是真实存在的文件名
    您的硬盘中有名为 zzz.php?method=xxxx 的文件吗?显然是没有的
    所以才有 Call to a member function on a non-object