Maison  >  Article  >  développement back-end  >  Que faire si WeChat ne peut pas recevoir de données de publication en php

Que faire si WeChat ne peut pas recevoir de données de publication en php

藏色散人
藏色散人original
2021-12-22 09:16:521796parcourir

Solution pour PHP WeChat qui ne reçoit pas de données de publication : 1. Activez register_globals dans php.ini ; 2. Obtenez les données de publication via la méthode file_get_contents("php://input").

Que faire si WeChat ne peut pas recevoir de données de publication en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.

php Que dois-je faire si WeChat ne peut pas recevoir de données de publication ?

L'interface PHP officielle de WeChat ne peut pas obtenir de données postStr

Dans le document d'interface PHP fourni par le responsable de WeChat, il existe un tel morceau de code pour gérer l'activité principale.

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

Cette méthode est passée. La variable globale GLOBALS est utilisée pour obtenir les données Post originales, mais cette méthode pose également des problèmes.

Pour obtenir des données via Globals, register_globals dans php.ini doit être défini sur ON. Dans les versions inférieures de php, les données d'enregistrement sont activées par défaut, mais dans les versions supérieures, elles sont désactivées par défaut. à ON , les variables soumises dans le formulaire deviendront automatiquement des variables, c'est-à-dire que les variables saisies dans la barre d'adresse deviendront des variables globales, ce qui est très dangereux.

En plus de $GLOBALS["HTTP_RAW_POST_DATA"] pour obtenir les données de la publication, vous pouvez également obtenir les données de la publication via la méthode file_get_contents("php://input").

Apprentissage recommandé : " Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn