$_POST Wert Geting Plus-Zeichen Entfernt
Übergeben wir einen öffentlichen ssh-Schlüssel über einen API-Aufruf, mit der POST. Das merkwürdige ist, wenn wir den Wert in PHP, das plus (+) Zeichen sind vollständig entfernt. Klar, das funktioniert nicht, da es ändert sich der Wert des öffentlichen Schlüssels.
Finden Sie in der folgenden raw-curl-Anfrage:
curl "https://api.example.com/v1/keys" -X POST -d "key=ssh-dss AAAAB3NzaC1kc3MAAACBAOLsyYuyI0/3/UjajY8ljdgkAV2k9jZxjlVGWvHa9afMuO7DqsOcu0o4e5D9TPScsO5XrgTrmcXHkOtM54fOPdXSzonWOXUIn1XEumdHDlv9YRZTCW/A9qajhPR67y+92su9AqeGXI0/q3BXZsZcC1nr1NjgSiz++r+YZFVWfQsNAAAAFQCYBf0KXVLfYUE6cOTbWnBWn5Py9QAAAIEA3WAkAwhR7fhwWpxuwxNnsB8NXwsEs2NWiOaiMu3dmDWyqGRjfOYUchoLelBMpv4oLTZuaGW4/DCWfdh6pgrxs39MXf+FdTir8KeHIIoXEdcXpWqnuyNBdXn5XNY54vc1eMkbm4q3D1i3+IMhNAURasdvFRoDzgH9s68Ik3P5HrMAAACAab+CiT010wXMzv+6v+oWcRWbxhGou/ND+K2QGU1kAW+KuUGmhOgB6XPka7iEsIeA/+Ojh+OiNedFZlJAZq1jarew106YCOrUlbtDk7pAAUJQhIhKFhpNE0UhLRBWOF9LpjDwWu55dlrfLURE32TuMx/NsazWVypbzJqy48d2sg8= justin@mbpro"
Aber, wenn wir var_dump()
den Wert von $_POST['key'] in unserem PHP:
string(601) "ssh-dss AAAAB3NzaC1kc3MAAACBAOLsyYuyI0/3/UjajY8ljdgkAV2k9jZxjlVGWvHa9afMuO7DqsOcu0o4e5D9TPScsO5XrgTrmcXHkOtM54fOPdXSzonWOXUIn1XEumdHDlv9YRZTCW/A9qajhPR67y 92su9AqeGXI0/q3BXZsZcC1nr1NjgSiz r YZFVWfQsNAAAAFQCYBf0KXVLfYUE6cOTbWnBWn5Py9QAAAIEA3WAkAwhR7fhwWpxuwxNnsB8NXwsEs2NWiOaiMu3dmDWyqGRjfOYUchoLelBMpv4oLTZuaGW4/DCWfdh6pgrxs39MXf FdTir8KeHIIoXEdcXpWqnuyNBdXn5XNY54vc1eMkbm4q3D1i3 IMhNAURasdvFRoDzgH9s68Ik3P5HrMAAACAab CiT010wXMzv 6v oWcRWbxhGou/ND K2QGU1kAW KuUGmhOgB6XPka7iEsIeA/Ojh OiNedFZlJAZq1jarew106YCOrUlbtDk7pAAUJQhIhKFhpNE0UhLRBWOF9LpjDwWu55dlrfLURE32TuMx/NsazWVypbzJqy48d2sg8= justin@mbpro"
Irgendeine Idee, was die Ursache für die plus Zeichen entfernt werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
+
plus-Zeichen in einem Formular die Daten werden interpretiert als Raum-Zeichen, die von einigen Servern.Können Sie vermeiden, indem Sie die Kodierung der plus-Zeichen in der form von Daten als
%2B
. Anstelle der Verwendung von-d/--data
verwenden cURL ist--data-urlencode
- parameter, dies zu tun.PHP ' s
rawurlencode
- Funktion konnte, führen Sie die gleiche Codierung, wenn Sie bauen eine ausgehende Anfrage. Allerdings, wenn eingehende Antwort-Daten zugegriffen wird Ihr PHP-Skript auf dem server, es wurde bereits automatisch dekodiert, so brauchen Sie nicht (und sollte nicht) anrufenrawurldecode
selbst.rawurlencode
.-d
, versuchen Sie es mit--data-urlencode
. Ich denke, es sollte in der Lage, dies für Sie.Müssen Sie eine entsprechend URL-kodierter string, der Daten argument für curl. Sie können eine online URL encoder für einmalige Situationen.
Hast du magic quotes eingeschaltet?
Hier ist eine bereits bestehende Frage, dass die Adressen, die ein ähnliches Problem:
Warum werden die $_POST-Variablen immer entkam in PHP?
Müssen Sie auch die url-codieren-post-Werte, obwohl Sie nicht direkt in der URL als get-Wert.
Möglicherweise möchten Sie auch zu prüfen, mit
base64encode
statturlencode
. Manchmalurlencode/decode
tun unerwartete Dinge, aber ich denke, es wird für Sie arbeiten in diesem Fall als gut.http://php.net/manual/en/function.base64-encode.php