php WeChat が投稿データを受信できない解決策: 1. php.ini で register_globals を有効にします; 2. file_get_contents("php://input") メソッドを通じて投稿データを取得します。
この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。
php WeChat が投稿データを受信できない場合はどうすればよいですか?
WeChat 公式 PHP インターフェイスが postStr データを取得できない
PHP インターフェイス ドキュメントが提供しています。 WeChat公式 、本業を処理するためにこのようなコードがあります
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(); }
この方法では、元のPostデータをグローバル変数GLOBALSを通じて取得しますが、この方法にも問題があります。
グローバルを通じてデータを取得するには、php.ini の register_globals を ON に設定する必要があります。php の以前のバージョンではデータの登録がデフォルトでオンになりますが、より高いバージョンではデフォルトでオフになります。これはなぜなら、これを ON に設定すると、フォームから送信された変数が自動的に変数になる、つまりアドレスバーに入力された変数がグローバル変数になってしまうため、非常に安全ではありません。
$GLOBALS["HTTP_RAW_POST_DATA"] を使用して投稿からデータを取得することに加えて、file_get_contents("php://input") メソッドを通じて投稿からデータを取得することもできます。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がWeChatがPHPで投稿データを受信できない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。