liren 发表于 2011-4-25 19:39:19

CI里面的 view 应该怎样使用required?

大家好!

      我在CI应用中集成的其他程序php文件有很多 required_once语句,但是在CI中为何找不到文件呢? CI中应该怎样使用 include,required这种php原生功能? 多谢!:)

jeongee 发表于 2011-4-25 19:54:44

直接使用,谢谢

liren 发表于 2011-4-25 22:18:48

直接使用,谢谢
jeongee 发表于 2011-4-25 19:54 http://codeigniter.org.cn/forums/images/common/back.gif

我如果把支付宝的 php文件都放到codeigniter目录外边,调用的时候都是用 php的方式调用就没问题,return_url返回正常展示,不会打印 fail.但是如果我把 return_url配置成 CI的一个action 的话,$return_url                = "http://123.116.251.83/alipay/alipayreturn";
那么从支付宝返回的时候,我的controller接收到支付宝的url请求,action代码直接转向 return_url就会报错:
function alipayreturn(){
                $this->load->view("/page/alipay/return_url");

        }
    页面打印了 fail,但是支付信息都打印正常,而且trade状态是success,也动帐了,为什么会打印fail呢?直接用php是没问题的啊,怀疑 $this->load->view("/page/alipay/return_url"); 这一步 CI做了什么转码的操作,使返回验证信息不对了?

jeongee 发表于 2011-4-25 23:12:59

回复 3# liren


   只要你理解到位了是不会出错的,你发的代码太少,不知道你哪出问题了

liren 发表于 2011-4-25 23:15:50

回复liren


   只要你理解到位了是不会出错的,你发的代码太少,不知道你哪出问题了 ...
jeongee 发表于 2011-4-25 23:12 http://codeigniter.org.cn/forums/images/common/back.gif

我调试之后发现因为 sign和mysign不一致,造成verify_result返回了false,但是目前还不知道为什么sign和mysign不一致
    就是下面这个方法:

/********************************************************************************/

    /**对return_url的认证
        *return 验证结果:true/false
   */
    function return_verify() {

                log_message("debug","get transport:".$this->transport);
                log_message("debug","get gateway:".$this->gateway);
      //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
      if($this->transport == "https") {
            $veryfy_url = $this->gateway. "service=notify_verify" ."&partner=" .$this->partner. "&notify_id=".$_GET["notify_id"];
      } else {
            $veryfy_url = $this->gateway. "partner=".$this->partner."&notify_id=".$_GET["notify_id"];
      }
                log_message("debug","get veryfy_url:".$veryfy_url);
      $veryfy_result = $this->get_verify($veryfy_url);
log_message("debug","get veryfy_result:".$veryfy_result);
log_message("debug","get empty_GET:".$_GET);
      //生成签名结果
                if(empty($_GET)) {                                                        //判断GET来的数组是否为空
                        return false;
                }
                else {
                        $get          = para_filter($_GET);          //对所有GET反馈回来的数据去空
                        $sort_get   = arg_sort($get);                  //对所有GET反馈回来的数据排序
                        $this->mysign= build_mysign($sort_get,$this->_key,$this->sign_type);    //生成签名结果
        log_message("debug","get this->mysign:".$this->mysign);
        log_message("debug","get this->mysign:".$_GET["sign"]);
                        //写日志记录
                        //log_result("veryfy_result=".$veryfy_result."\n return_url_log:sign=".$_GET["sign"]."&mysign=".$this->mysign."&".create_linkstring($sort_get));
       
                        //判断veryfy_result是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
                        //$veryfy_result的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
                        //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
                        if (preg_match("/true$/i",$veryfy_result) && $this->mysign == $_GET["sign"]) {            
                                return true;
                        }else {
                                return false;
                        }
                }
    }

jeongee 发表于 2011-4-26 09:35:41

回复 5# liren


   再好好跟踪下看看吧,我以前用过这个在mvc框架里的,没有任何问题的。

jeongee 发表于 2011-4-26 11:29:43

回复 6# jeongee


   不要在view里才调用alipay啊,都写到controller里去

liren 发表于 2011-4-27 13:55:41

本帖最后由 liren 于 2011-4-27 13:59 编辑

回复jeongee


   不要在view里才调用alipay啊,都写到controller里去
jeongee 发表于 2011-4-26 11:29 http://codeigniter.org.cn/forums/images/common/back.gif
刚才看错了,我再找找原因
页: [1]
查看完整版本: CI里面的 view 应该怎样使用required?