php微信收不到post資料的解決方法:1.開啟php.ini中的register_globals;2、透過file_get_contents("php://input")方法來取得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中文網其他相關文章!