Die Variable $_POST aus der Anfrage enthält in PHP optional anstelle einer Zeichenfolge [geschlossen]Php

PHP-Programmierer chatten hier
Guest
 Die Variable $_POST aus der Anfrage enthält in PHP optional anstelle einer Zeichenfolge [geschlossen]

Post by Guest »

Der Anwendungsfall ist, dass ein Benutzer/Client eine Anfrage an einen Server sendet, auf dem PHP ausgeführt wird. Ich versuche, den PHP-Code auf dem Server zu schreiben, z. einen API-Endpunkt zum Verarbeiten der Anfrage.
Ich habe vorhandenen Produktions-PHP-Code, der ein JSON-Web-Token (in Form einer Zeichenfolge) aus einer JSON-Anfrage extrahiert, in der der Inhaltstyp angegeben ist Die Anfrage vom Client lautet application/json. Der folgende Code extrahiert die Zeichenfolge mit php://input, was funktioniert, solange der Inhaltstyp der Anfrage application/json ist.

Code: Select all

$jsonString = file_get_contents('php://input');
$jsonArray = json_decode($jsonString, true);
$jwt =$jsonArray['jwt'];
var_dump($jwt); //THIS IS FOR DEBUGGING. COMMENTED OUT IN PRODUCTION
Es gibt die folgende Zeichenfolge zurück:

Code: Select all

string(414) "hlMox0-LOTS OF CHARACTERS-za2b"
Bitte beachten Sie, dass der Präfix string(414) von var_dump hinzugefügt wird. Wenn ich lediglich die Variable $jwt wiedergebe, wird die Zeichenfolge allein ohne dieses Präfix angezeigt.
Diese JSON-Web-Token-Zeichenfolge kann erfolgreich dekodiert werden, um den Benutzer zu authentifizieren.
Ich muss jetzt den Code für einen anderen Endpunkt für Client-Anfragen schreiben, der es dem Client ermöglicht, eine Bilddatei und Metadaten zu senden. In diesem Fall muss der Benutzer/Client zur Unterstützung der Dateiübertragung in der Anfrage content-type multipart/form-data angeben. Allerdings funktioniert php/input nicht mit mehrteiligen Daten und die einzige Möglichkeit, die Metadaten abzurufen, ist die Variable $_POST. In diesem Fall wird die resultierende Zeichenfolge, wenn sie mit var_dump() extrahiert und angezeigt wird, von var_dump als optional gekennzeichnet.

Code: Select all

$jwt = $_POST['jwt'];
var_dump($jwt);
Das ergibt:

Code: Select all

"Optional(414)("hlMox0-LOTS OF CHARACTERS-za2b")";
Var_dump fügt erneut das Präfix Optional(414) hinzu. Wenn ich den Wert nur wiedergebe, ist er mit der Zeichenfolge im ersten Fall identisch.
Obwohl diese Zeichenfolge bei der Wiedergabe mit der obigen identisch erscheint, kann ich diese Variable nicht dekodieren. Var_dump legt nahe, dass die Zeichenfolgen zwar das gleiche Echo haben, aber unterschiedlich sind. Die zweite Version ist eine „optionale“. Für diejenigen, die mit dem Begriff optional nicht vertraut sind: Er wird in vielen Programmiersprachen verwendet, um eine Variable zu bezeichnen, die explizit entweder einen Nullwert haben kann oder nicht. Offensichtlich erkennt PHP diese Idee mit der Funktion var_dump. Allerdings kann ich in der Dokumentation nichts weiterführendes dazu finden.
Warum sollte sich ein String, auf den über die Variable $_POST zugegriffen wird, von einem String unterscheiden, auf den über php://input zugegriffen wird? ?
Insofern var-dump einen Unterschied zwischen optional und string identifiziert, warum sollte der Zugriff auf die Daten über $_POST ein optionales anstelle eines Strings ergeben?
Letztendlich: Wie Kann ich den von $_POST erhaltenen $_POST['jwt'] in eine gewöhnliche Zeichenfolge konvertieren? Was könnte daran falsch sein?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post