WeChatがPHPで投稿データを受信できない場合の対処方法

藏色散人
リリース: 2023-03-14 15:02:02
オリジナル
1841 人が閲覧しました

php WeChat が投稿データを受信できない解決策: 1. php.ini で register_globals を有効にします; 2. file_get_contents("php://input") メソッドを通じて投稿データを取得します。

WeChatがPHPで投稿データを受信できない場合の対処方法

この記事の動作環境: 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート