Heim  >  Artikel  >  PHP-Framework  >  Was soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?

Was soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?

藏色散人
藏色散人Original
2022-12-06 09:29:092193Durchsuche

thinkphp5-Beitrag kann keinen Wert erhalten, da TP5 die strpos-Funktion verwendet, um die app/json-Zeichenfolge im Inhaltstypwert des Headers zu finden. Die Lösung besteht darin, den Inhaltstypwert des Headers auf app/json zu setzen.

Was soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ThinkPHP Version 5, Dell G3-Computer.

thinkphp5 Was soll ich tun, wenn mein Beitrag keinen Wert erhält?

Lösung für das Problem, dass ThinkPHP5 die vom Client übergebenen Json-Parameter nicht empfangen kann. Ich habe in dieser Zeit einen Kurs aus dem Internet besucht und ihn besucht Noch einmal Dozent und der gesamte Prozess verlief reibungslos. In dieser Situation war das Problem, dass ich beim Testen einer bestimmten Post-Schnittstelle der API auftrat, unabhängig davon, wie ich die Anfrage gesendet habe Ich wurde immer darauf hingewiesen, dass die Parameterüberprüfung fehlgeschlagen ist. Ich habe die Methode zum Übergeben von Parametern über die Body-Tabelle und die API auf magische Weise verwendet. Es hat funktioniert, also habe ich zuvor festgestellt, dass es ein Problem mit der Json-Übertragung gab, also habe ich alle durchsucht über das Internet, aber es gab keine Lösung [aber ich habe zwei Wissenspunkte erhalten und sie am Ende des Artikels platziert].

Was das Problem von TP5 betrifft: Wenn es nicht funktioniert, kann ich nur den Quellcode überprüfen, also habe ich den Fehler Stück für Stück verfolgt und schließlich das Problem entdeckt ~

Es stellt sich heraus, dass TP5 die strpos-Funktion verwendet Suchen Sie im Header nach der Zeichenfolge „app/json“ im Inhaltstypwert des Headers. Dies bedeutet, dass Sie den Inhaltstypwert des Headers auf „app/json“ festlegen müssen, da TP5 sonst nicht davon ausgeht, dass Sie einen Json-Parameter übergeben Geben Sie es an Request::post. Setzen Sie den Wert auf leer.

Das Obige löst das Problem, dass TP5 die vom Client Post übergebenen Json-Parameter nicht empfangen kann.

Zwei Wissenspunkte:

Der Daten-PHP, dessen Inhaltstyp „application/json“ ist, kann nicht direkt erkannt werden, daher ist das $_POST-Array leer. Lösung: Wir müssen nur $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um die Originaldaten herauszunehmen, und sie dann mit json_dekodieren. [Mit dieser Methode müssen Sie den Wert „always_populate_raw_post_data“ in php.ini auf „On“ setzen die Originaldaten der POST-Daten. Dies ist jedoch keine superglobale Variable. Um sie in einer Funktion zu verwenden, muss sie als global deklariert werden oder stattdessen $GLOBALS['HTTP_RAW_POST_DATA'] verwendet werden. ];
  • Sie können file_get_contents('php://input') anstelle der oben genannten Methode verwenden, um die eingehenden Json-Parameter direkt abzurufen [Als ich den TP5-Quellcode las, stellte ich fest, dass sie diese Methode auch zum Abrufen verwenden der Anfangswert] .
  • Empfohlenes Lernen: „
  • thinkPHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn