用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3674|回复: 7
收起左侧

[已解决] CI里面的 view 应该怎样使用required?

[复制链接]
发表于 2011-4-25 19:39:19 | 显示全部楼层 |阅读模式
大家好!

        我在CI应用中集成的其他程序php文件有很多 required_once语句,但是在CI中为何找不到文件呢? CI中应该怎样使用 include,required这种php原生功能? 多谢!:)
发表于 2011-4-25 19:54:44 | 显示全部楼层
直接使用,谢谢
 楼主| 发表于 2011-4-25 22:18:48 | 显示全部楼层
直接使用,谢谢
jeongee 发表于 2011-4-25 19:54


我如果把支付宝的 php文件都放到codeigniter目录外边,调用的时候都是用 php的方式调用就没问题,return_url返回正常展示,不会打印 fail.但是如果我把 return_url配置成 CI的一个action 的话,
PHP复制代码
$return_url             = "http://123.116.251.83/alipay/alipayreturn";
复制代码

那么从支付宝返回的时候,我的controller接收到支付宝的url请求,action代码直接转向 return_url就会报错:
PHP复制代码
function alipayreturn(){
                $this->load->view("/page/alipay/return_url");
 
        }
复制代码

    页面打印了 fail,但是支付信息都打印正常,而且trade状态是success,也动帐了,为什么会打印fail呢?直接用php是没问题的啊,怀疑 $this->load->view("/page/alipay/return_url"); 这一步 CI做了什么转码的操作,使返回验证信息不对了?
发表于 2011-4-25 23:12:59 | 显示全部楼层
回复 3# liren


   只要你理解到位了是不会出错的,你发的代码太少,不知道你哪出问题了
 楼主| 发表于 2011-4-25 23:15:50 | 显示全部楼层
回复  liren


   只要你理解到位了是不会出错的,你发的代码太少,不知道你哪出问题了 ...
jeongee 发表于 2011-4-25 23:12


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

PHP复制代码
 /********************************************************************************/
 
    /**对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;
                        }
                }
    }
复制代码
发表于 2011-4-26 09:35:41 | 显示全部楼层
回复 5# liren


   再好好跟踪下看看吧,我以前用过这个在mvc框架里的,没有任何问题的。
发表于 2011-4-26 11:29:43 | 显示全部楼层
回复 6# jeongee


   不要在view里才调用alipay啊,都写到controller里去
 楼主| 发表于 2011-4-27 13:55:41 | 显示全部楼层
本帖最后由 liren 于 2011-4-27 13:59 编辑
回复  jeongee


   不要在view里才调用alipay啊,都写到controller里去
jeongee 发表于 2011-4-26 11:29

刚才看错了,我再找找原因

本版积分规则