CI里面的 view 应该怎样使用required?
大家好!我在CI应用中集成的其他程序php文件有很多 required_once语句,但是在CI中为何找不到文件呢? CI中应该怎样使用 include,required这种php原生功能? 多谢!:) 直接使用,谢谢 直接使用,谢谢
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做了什么转码的操作,使返回验证信息不对了? 回复 3# liren
只要你理解到位了是不会出错的,你发的代码太少,不知道你哪出问题了 回复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. "¬ify_id=".$_GET["notify_id"];
} else {
$veryfy_url = $this->gateway. "partner=".$this->partner."¬ify_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;
}
}
} 回复 5# liren
再好好跟踪下看看吧,我以前用过这个在mvc框架里的,没有任何问题的。 回复 6# jeongee
不要在view里才调用alipay啊,都写到controller里去 本帖最后由 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]