首頁 >後端開發 >PHP問題 >php 微信收不到post 資料怎麼辦

php 微信收不到post 資料怎麼辦

藏色散人
藏色散人原創
2021-12-22 09:16:521849瀏覽

php微信收不到post資料的解決方法:1.開啟php.ini中的register_globals;2、透過file_get_contents("php://input")方法來取得post資料。

php 微信收不到post 資料怎麼辦

本文操作環境:Windows7系統,PHP7.1版,Dell G3電腦。

php 微信收不到post 資料怎麼辦?

微信官方PHP介面無法取得postStr資料

在微信官方提供的PHP介面文檔中,處理主要業務有這麼一段程式碼

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

這個方法中透過GLOBALS這個全域變數來取得原始的Post數據,但是這個方法也同時存在問題。

要透過Globals來取得數據,php.ini中的register_globals必須設定為ON,在低版本的php中register資料預設為開啟,但是高版本中,預設為關閉狀態,這是因為,設定為ON後,表單提交過來的變量,會自動變成變量,也就是說在網址列輸入的變量,都變成全域變量,這個是非常不安全的。

除了$GLOBALS["HTTP_RAW_POST_DATA"]取得post來的數據,也可以透過file_get_contents("php://input")方法來取得post來的資料.

推薦學習: 《PHP影片教學

以上是php 微信收不到post 資料怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn