zmoli775 发表于 2018-11-6 16:55:17

无法获取post传递参数(求助)

本帖最后由 zmoli775 于 2018-11-6 17:19 编辑

我CI做了企业微信的消息url认证·打算用CI来接收企业消息数据!
但是接收不到post数据呢?以下是抓包信息:

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><!]></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><!]></AgentID>
</xml>



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


zmoli775 发表于 2018-11-6 17:12:50

补充这是我控制器(没有视图文件·这样也就能验证企业微信url)

<?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);
                        }
                }
      }
}

Skiy 发表于 2018-11-6 19:34:23

本帖最后由 Skiy 于 2019-1-2 13:43 编辑

file_get_contents('php://input');

zmoli775 发表于 2018-11-6 20:49:44

本帖最后由 zmoli775 于 2018-11-6 20:55 编辑

Skiy 发表于 2018-11-6 19:34
file_get_contents('php://inpuit');
感谢老师·我马上试试!感谢!:D-----------------------------------------
额-貌似没用·我不太明白!为什么拿不到值·问题任然没得到解决!

Hex 发表于 2018-11-7 13:29:38

zmoli775 发表于 2018-11-6 20:49
感谢老师·我马上试试!感谢!-----------------------------------------
额-貌似没用·我不太明白!为 ...

因为微信 post 的不是标准格式,所以 $_POST 拿不到内容,需要
file_get_contents('php://inpuit'); 你可以搜一下 php://input 是什么。

Skiy 发表于 2019-1-2 13:44:08

zmoli775 发表于 2018-11-6 20:49
感谢老师·我马上试试!感谢!-----------------------------------------
额-貌似没用·我不太明白!为 ...

我打错英文了:
是 input 不是 inpuit
页: [1]
查看完整版本: 无法获取post传递参数(求助)