GET ersetzt pluszeichen durch leer

SigmundK

Grünschnabel
Hallo forum ich habe ein kleines Problem wenn ich auf meiner Page einen Link aufrufe z.B.
http://192.168.0.1/test.php?test=bla+bla
und dann mit
echo $_GET["test"];
wieder ausgebe kommt
bla bla
raus (+ ist durch leer ersetzt)

dieses Symptom tritt aber nur auf einen Server auf (debian) beim anderen (suse) gehts
kann mir jemand erklären warum das so ist bzw wie man das abstellt?
werden noch andere Zeichen ersetzt von denen ich noch nix weis?

ich habs übergangsweise so gelöst dass alle Leerzeichen wieder durch Pluszeichen ersetzt werden ist aber nicht das goldene vom ei wenn ich das überall einbauen muss

mfg
Sigmund
 
Vielen dank für deine antwort

urlencode wollte ich eigentlich ned benutzen da kommen immer ewig lange zeilen raus!
ich benutze base64_encode um den link zu erstellen urlencode hab ich im ganzen script nicht benutzt. Nur base64_decode geht nicht immer weil manchmal ein plus(->leer) zeichen drinn ist.
ich finde es nur komisch weil auf einen rechner gehts beim anderen nicht, deswegen gehe ich davon aus das es "nur" ne konfigurationssache ist.
die frage ist nur php,apache oder ganz was anderes?
 
Also einen Daten mit Base64 codieren schön und gut, trotzdem wird dir dann evtl. der Browser den Text noch URL-Codieren...

Soweit ich das also verstehe, solltest du in deinen Beispiel den Text durch urldecode jagen und dann nur durch base64decode ...
 
Ich denk ich hab mein problem gelöst steht sogar bei php.net unter base64_encode

klassischer fall von :rtfm:

wer ne erklärung hat warums bei suse geht darf mich trotzdem gerne aufklären

Just a minor tweak of massimo's functions.

<?
$data = str_replace(array('+','/','='),array('-','_','.'),$data);
//replace '=' with '.' instead of with nothing, that way the process is reversible. '.' is uri-safe according to http://www.w3.org/Addressing/URL/5_URI_BNF.html
?>
 

Neue Beiträge

Zurück