2016-05-24 2 views
0

Ich habe die URL folgendenGET und filter_input hält am Symbol "#"

http://www.example.com/check.php?q=498#2D83B631%3800EBD!801600D*7E3CC13 

Dann versuche ich

<?php var_dump($_GET); ?> 

und

<?php 
echo $my_string = filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING); 
?> 

Aber sie scheinen beide zu stoppen das "#" Symbol und nur Anzeige 498. Gibt es eine Möglichkeit, die gesamte 498#2D83B631%3800EBD!801600D*7E3CC13 abzurufen?

+0

Ja, weil '#' in einer URL definiert, wo der Abschnitt 'fragment' beginnt und den Abfrageteil beendet. Sie müssen Sonderzeichen codieren. –

Antwort

1

Auf dem Server können Sie nur die URL bis # erhalten. Wenn Sie den Wert nach möchten, benötigen Sie ein Client-Skript, um die URL zu erhalten.

Wenn das der Wert q ist, sollten Sie zuerst mit urlencode() kodieren. Auf diese Weise werden Sie alle den Wert erhalten von q

Ihre URL sollte wie folgt aussehen: http://www.example.com/check.php?q=498%232D83B631%253800EBD!801600D * 7E3CC13

zu dekodieren die URL Sie urldecode()

0

Fragmente verwenden können, sind überhaupt nicht an den Server senden.

https://en.wikipedia.org/wiki/Fragment_identifier

Wenn ein Agent (wie ein Web-Browser), um eine Web-Ressource von einem Webserver anfordert,> sendet der Agent die URI an den Server, aber nicht das Fragment senden.

Die Übergabe der Daten als weiterer GET-Parameter wäre eine praktikable Alternative.

Verwandte Themen