Der Inhalt dieses Artikels befasst sich mit dem Problem, dass PHP Sonderzeichenparameter wie das +-Zeichen empfängt. Jetzt können Freunde in Not einen Blick darauf werfen.
Nehmen Sie ein etwas seltsames Problem mit auf Parameter „+“ wird während der Übertragung maskiert.
Mit der get-Methode wird das „+“ in den von PHP empfangenen Parametern zu einem Leerzeichen. Bei Bedarf sollte der URL-Code ausgeführt werden wird auf „+“ Nr. zurückgesetzt, die empfangenen Parameter müssen urlencodiert werden.
Durch die Verwendung von Curl- und Browser-Methoden wird bei allen empfangenen Parametern das +-Zeichen in Leerzeichen umgewandelt.
Die Anforderungsadresse lautet http://ip/xx?aa=+889
Verwenden Sie $_REQUEST['aa']
, um den Parameterwert “ 889”
zu erhalten, und der Parameter + das Vorzeichen werden in ein Leerzeichen umgewandelt. Wenn Sie das Original +889
erhalten möchten, benötigen Sie verwenden urlencode($_REQUEST)
Holen Sie es sich.
Wenn jedoch http://ip/xx?aa=%2B889
während der Übertragung verwendet wird, das heißt, das +-Zeichen allein URL-codiert ist, dann empfängt $_REQUEST
die Parameter von +889
.
Bei Verwendung der Post-Methode werden die von der Curl-Ausführung empfangenen Parameter auch in Leerzeichen umgewandelt. Wenn der Post jedoch über das HTML-Formular simuliert wird, werden die empfangenen Parameter ebenfalls in Leerzeichen umgewandelt sind vollständig. + Zeichen (werden die Parameter beim Absenden des Formulars automatisch URL-codiert?).
Verwenden Sie $_POST, um Parameter zu empfangen.
Wenn während des Curls die Post-Parameter codiertes %2B889
verwenden, dann empfängt PHP +889
.
Daher ziehen wir eine Schlussfolgerung:
Wenn PHP die Parameter empfängt, führt es automatisch eine URL-Dekodierungsoperation für die Parameter durch wird übertragen. Die Parameter sind nicht URL-kodiert und Sonderzeichen (wie das +-Zeichen) werden in Leerzeichen dekodiert, was zu einem falschen Parameterempfang führt.
Wenn Sie möchten, dass PHP Parameter mit Sonderzeichen korrekt empfängt, muss eine Vereinbarung zwischen dem Client und dem Server bestehen. Beispielsweise sind die vom Client gesendeten Parameter alle URL-codierte Parameter Der Server empfängt Die Parameter sind die richtigen Parameter.
Das obige ist der detaillierte Inhalt vonProblem mit PHP beim Empfang von Sonderzeichenparametern wie dem +-Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!