Home  >  Article  >  Backend Development  >  What to do if WeChat cannot receive post data in php

What to do if WeChat cannot receive post data in php

藏色散人
藏色散人Original
2021-12-22 09:16:521835browse

php WeChat cannot receive post data solution: 1. Enable register_globals in php.ini; 2. Obtain post data through the file_get_contents("php://input") method.

What to do if WeChat cannot receive post data in php

The operating environment of this article: Windows 7 system, PHP version 7.1, Dell G3 computer.

php What should I do if WeChat cannot receive post data?

WeChat official PHP interface cannot obtain postStr data

The PHP interface document provided by WeChat official , there is such a piece of code to handle the main business

public function getIndex(){
        if (ob_get_contents())  ob_end_clean();
        $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"])?$GLOBALS["HTTP_RAW_POST_DATA"]:'';//获取post过来的数据
        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $this->postObj = $postObj;
            $this->fromUserName = $postObj->FromUserName;//发送方
            $this->toUserName = $postObj->ToUserName;//接收方(即本公众账号)
            $this->msgType = trim($postObj->MsgType);//消息类型
            $this->content = trim($postObj->Content);
            $this->event = trim($postObj->Event);
            $this->eventKey = trim($postObj->EventKey);
            $this->dealMsg();
        }else{
            $this->wx->makeInfo(Input::all());
            $this->wx->valid();//非消息推送时,默认为校验
        }
        flush();
    }

In this method, the original Post data is obtained through the global variable GLOBALS, but this method also has problems.

To obtain data through Globals, register_globals in php.ini must be set to ON. Register data is turned on by default in lower versions of php, but in higher versions, it is turned off by default. This is because, After setting it to ON, the variables submitted by the form will automatically become variables. That is to say, the variables entered in the address bar will become global variables. This is very unsafe.

In addition to $GLOBALS["HTTP_RAW_POST_DATA"] to obtain the data from the post, you can also obtain the data from the post through the file_get_contents("php://input") method.

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What to do if WeChat cannot receive post data in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn