1. Mehrere Methoden für PHP, um POST-Daten zu erhalten
Methode 1. Die gebräuchlichste Methode ist: $_POST['fieldname'];
Hinweis: Dies ist nur möglich empfangen werden Content-Type: application/x-www-form-urlencoded übermittelte Daten
Erklärung: Das sind die Daten POST aus dem Formular
Methode 2, file_get_contents("php://input");
Beschreibung:
Ermöglicht das Lesen der Rohdaten von POST.
Es belastet den Speicher weniger als $HTTP_RAW_POST_DATA und erfordert keine speziellen php.ini-Einstellungen.
php://input kann nicht mit enctype="multipart/form-data" verwendet werden.
Erklärung:
Für POST-Daten ohne angegebenen Inhaltstyp können Sie file_get_contents("php://input"); verwenden, um die Originaldaten abzurufen.
Tatsächlich kann diese Methode verwendet werden, um beliebige POST-Daten mit PHP zu empfangen. Unabhängig vom Inhaltstyp ist auch die Einbeziehung binärer Dateiströme akzeptabel.
Methode 2 ist also die sicherste Methode
Methode 3, $GLOBALS['HTTP_RAW_POST_DATA'];
Erklärung:
Generieren Sie immer die Variable $HTTP_RAW_POST_DATA, die Rohdaten enthält POST-Daten.
Diese Variable wird nur generiert, wenn Daten eines nicht erkannten MIME-Typs gefunden werden.
$HTTP_RAW_POST_DATA ist für enctype="multipart/form-data"-Formulardaten nicht verfügbar
Wenn die geposteten Daten von PHP nicht erkannt werden, können Sie $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um sie zu empfangen,
wie Text /xml oder Soap usw.
Erklärung:
$GLOBALS['HTTP_RAW_POST_DATA'] speichert die Originaldaten von POST.
$_POST oder $_REQUEST speichert von PHP formatierte Daten in der Form key=>value.
Aber ob die POST-Daten in $GLOBALS['HTTP_RAW_POST_DATA'] gespeichert werden, hängt von der Centent-Type-Einstellung ab, d. h. der Content-Type muss beim POSTing von Daten explizit angegeben werden: application/x-www-form-urlencoded , POST Nur die Daten werden in $GLOBALS['HTTP_RAW_POST_DATA'] gespeichert
2. Demonstration
1. Wie erhält PHP die XML-Daten von POST und analysiert die XML-Daten
Wenn wir beispielsweise ein WeChat-Unternehmenskonto entwickeln, wie verarbeiten wir dann die Daten, auf die Benutzer antworten?
Dokument: http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A% E6%B6%88%E6%81%AF
Schauen Sie sich zunächst die Dokumentation an und Sie werden wissen, dass der WeChat-Server nach der Aktivierung des Entwicklungsmodus eine Zeichenfolge mit XML-Daten postet, wenn der Benutzer auf die Anwendung antwortet zur verifizierten Rückruf-URL
Angenommen, die URL ist http://www.xxx.com
HTTP-Anfragemethode: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS× tamp=13500001234&nonce=123412323
Der XML-Inhalt von POST ist:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> <AgentID>1</AgentID> </xml>
Wie erhalten Sie diesen Inhalt?
Sie können es derzeit verwenden: Methode 2 (file_get_contents("php://input"), Methode 3 ($GLOBALS['HTTP_RAW_POST_DATA'])
Methode 2 (file_get_contents("php : //input")):
$input = file_get_contents("php://input"); //接收POST数据 $xml = simplexml_load_string($input); //提取POST数据为simplexml对象 var_dump($xml);
Methode 3 ($GLOBALS['HTTP_RAW_POST_DATA'])
$input = $GLOBALS['HTTP_RAW_POST_DATA']; libxml_disable_entity_loader(true); $xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA); var_dump($xml);
Mehr PHP Get POST Bitte beachten Sie die PHP-Chinese-Website für verwandte Artikel zu verschiedenen Möglichkeiten der Datenzusammenfassung!