2017-02-09 112 views
0

無法從網址獲取值。無法從網址獲取值

localhost/ddd.php?udh=%05%00%03%6d%03%01 

當我嘗試複製粘貼此鏈接到地址欄中輸入 「本地主機/ ddd.php?UDH =%05%00%03%6D%03%01」 將其轉換爲 「http://localhost/ddd.php?udh=%05%00%03m%03%01」 有什麼說明?

而且我不能夠得到$ _GET [「UDH」],它打印:

array (size=1) 
    'udh' => string '�m' (length=6) 
+1

查看'urlencode()'和'urldecode()' – Jer

+0

urlencode($ _ GET ['udh'])打印「%05%00%03m%03%01 「%05%00%03%6d%03%01」的漏洞 – user3351236

+0

您不需要明確地對URL進行編碼。瀏覽器會自動對URL中的某些字符進行編碼。在這裏,你只需要解碼URL。只使用urldecode()解碼URL。 'urldecode($ _ GET ['udh'])'就足夠了。 – Perumal

回答

0

可能是你應該使用urlencode()編碼您的消息並使用$_GET訪問消息時,你必須對其進行解碼使用urldecode()

HTML

<a href ="localhost/ddd.php?udh=".<?php urlencode('message');?>></a> 

PHP

$value = urldecode(isset($_GET['udh'])); 
+0

您不需要明確地對URL進行編碼。瀏覽器負責自動編碼URL。在這裏,你只需要解碼URL。 – Perumal

0

從W3C學院:

URL編碼(百分號編碼) 網址,只能在互聯網上使用發ASCI我字符集。

由於URL通常包含ASCII集外的字符,因此URL必須轉換爲有效的ASCII格式。

網址編碼會將不安全的ASCII字符替換爲後跟兩個十六進制數字的「%」。 網址不能包含空格。 URL編碼通常會用加號(+)或%20替換空格。

所以,當你把字符串%05%00%03%6d%03%01的瀏覽器,它會自動嘗試做解碼它尋找%字符,你的情況碰巧%6D = M。

不確定您是否使用%作爲分隔符,但可以更改爲:或|並使用爆炸提取它(http://php.net/manual/en/function.explode.php