2011-02-03 43 views
0

這裏是我的代碼用htmlspecialchars()或ヶ輛()不工作

$currentPage = SITE_URL.'/'.basename($_SERVER['PHP_SELF'])."?".substr($tail,1); 
//For example a URL 'http://php.net/docs.php 
' 
$currentPage = htmlspecialchars($currentPage); 
//$currentPage = htmlentities($currentPage); 

//I was hoping for a output like this 'http%3A%2F%2Fphp.net%2Fdocs.php ' 
echo $currentPage; //but I get http://php.net/docs.php again 

我得到完全相同的輸出與輸入

+0

使用$ _SERVER ['SCRIPT_NAME']而不是$ _SERVER ['PHP_SELF']。可以通過轉到/index.php/someotherpage.php來欺騙$ _SERVER ['PHP_SELF']。除此之外,其他人說了些什麼。 – igorw 2011-02-03 14:09:21

回答

0

我想你想要urlencode。它會將http://php.net/docs.php編碼爲http%3A%2F%2Fphp.net%2Fdocs.php,如你所願。

0

根據手冊:

此功能與 htmlspecialchars()在所有方面相同,除了 與htmlentities(),所有字符 其中有HTML字符實體 e這些實體被翻譯成這些實體。

因此,如果沒有看到原始輸入,我只能假設原始輸入不包含任何可以翻譯的字符。

0

如果您獲得相同的輸出,則無法逃脫。

htmlentities()應該將<>&轉換爲實體等效項。它只剩下其他ASCII字符,如/:。因此,您的網址可能只包含這些內容,但不包含&