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

[版本 3.x] 无法获取post传递参数(求助)

[复制链接]
发表于 2018-11-6 16:55:17 | 显示全部楼层 |阅读模式
本帖最后由 zmoli775 于 2018-11-6 17:19 编辑

我CI做了企业微信的消息url认证·打算用CI来接收企业消息数据!
但是接收不到post数据呢?以下是抓包信息:
HTML复制代码
 
POST /index.php/WxReceiveMsg/ResMsg?msg_signature=5566455c7e925fe2b922b28f76000a548a446060×tamp=1541491094&nonce=1542417820 HTTP/1.1
Host: mobile.xxxx.cn
Content-Type: text/xml
User-Agent: Mozilla/4.0
Accept: */*
Pragma: no-cache
X-Forwarded-For: 14.215.153.87
X-Forwarded-Host: mobile.xxxx.cn
X-Forwarded-Server: mobile.xxxx.cn
Connection: Keep-Alive
Content-Length: 607
 
<xml>
<ToUserName><![CDATA[ww9501108a2459b2bb]]></ToUserName>
<Encrypt>
<![CDATA[sLxGRKELsLSVtnyf8NnkHTTu6+ZJJo2b0e9AphTN
2tzMEpnoscsQEsDVgYv+I6XouOM3U364b4doplwnuuwe6FHQQml4Rw
JMc+shClFGr6wEG/fkxyV5yLNqnVtiYxjNooSHQVQwIqLU4+kjJmyHW4
9pJZSvZaIqTYL4b53Ob57occysImoR5+eVS4dN1sFR99Yww3esW4ICvu
qHJ90+RyXQtmaLKzkmGiH3CexLpxzayIPV71bUj24kP+nZn6xCHQUDQ
MFjkb6Q687YcZN/gY/e66QPLbSfwC7ZY81Yj8omnDRM0w50Yx4RAcd
FwgvALS4AKJuhQJO9zCT/oVgLAQsM1TAHw9euXzFs1H14UHKjd0F020
HYLpmuUFyc2xeJAX3Nl7ynFnN3JuW0VT/TxBwwDNu3NkklTbELG+6IA
2hEPi5PZJX/HBJUAWBkpaXKZiDxplvssRvc5d41GWgHJw==]]>
</Encrypt>
<AgentID><![CDATA[1004009]]></AgentID>
</xml>
 
 
复制代码


我在控制器中使用:
-------------------------------------------------------
$s = $this->input->post('msg_signature');
-------------------------------------------------------将$s数据写入日志文件·感觉控制器都没执行...
想获取XML的内容·怎么获取?
我没有建立视图文件·是不是这个视图文件引起的?我把控制器代码补充到下面·php萌新一枚不太懂!
抓包·确实有数据...
求各位老师教教我怎么处理?谢谢了!


 楼主| 发表于 2018-11-6 17:12:50 | 显示全部楼层
补充这是我控制器(没有视图文件·这样也就能验证企业微信url)
PHP复制代码
 
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
 
class WxReceiveMsg extends CI_Controller {
       
        public function __construct()
        {
                parent::__construct();
        }
        public function index()
        {                
                // 接收get传值
                $s = $this->input->get('msg_signature');
                $t = $this->input->get('timestamp');
                $n = $this->input->get('nonce');
                $e = $this->input->get('echostr');
                // 判断get接收值是否为null
                if(!is_null($s)&&!is_null($t)&&!is_null($n)&&!is_null($e))
                {        
                  // 准备加载自定义类命
                        $l="wxbizmsgcrypt";
                        // 加载自定义类
                        $this->load->library($l);        
                  // 定义返回明文
                  $sEchoStr = 0;
                  // 调用自定义类中方法验证url地址合法性
                  $errCode= $this->$l->VerifyURL($s,$t,$n,$e,$sEchoStr);  
                        // 验证成功返回明文
                        if($errCode==0)
                        {
                                print($sEchoStr);
                        }
                        else
                        {
                                // 验证失败写错误码
                                xlog($errCode);
                        }
                }
        }
}
 
复制代码

企业微信截图_3.png
发表于 2018-11-6 19:34:23 | 显示全部楼层
本帖最后由 Skiy 于 2019-1-2 13:43 编辑

file_get_contents('php://input');
 楼主| 发表于 2018-11-6 20:49:44 | 显示全部楼层
本帖最后由 zmoli775 于 2018-11-6 20:55 编辑
Skiy 发表于 2018-11-6 19:34
file_get_contents('php://inpuit');

感谢老师·我马上试试!感谢!-----------------------------------------
额-貌似没用·我不太明白!为什么拿不到值·问题任然没得到解决!

发表于 2018-11-7 13:29:38 | 显示全部楼层
zmoli775 发表于 2018-11-6 20:49
感谢老师·我马上试试!感谢!-----------------------------------------
额-貌似没用·我不太明白!为 ...

因为微信 post 的不是标准格式,所以 $_POST 拿不到内容,需要
file_get_contents('php://inpuit'); 你可以搜一下 php://input 是什么。
发表于 2019-1-2 13:44:08 | 显示全部楼层
zmoli775 发表于 2018-11-6 20:49
感谢老师·我马上试试!感谢!-----------------------------------------
额-貌似没用·我不太明白!为 ...

我打错英文了:
是 input 不是 inpuit

本版积分规则