Heim  >  Artikel  >  Backend-Entwicklung  >  Problem mit PHP beim Empfang von Sonderzeichenparametern wie dem +-Zeichen

Problem mit PHP beim Empfang von Sonderzeichenparametern wie dem +-Zeichen

不言
不言Original
2018-04-13 14:06:542971Durchsuche

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.

1. Get-Methodenanforderung

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.

2. Post-Anfrage

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.

3. Fazit

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!

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