好的,所以我有一個函數可以根據頁面ID生成前一個/下一個鏈接,它之前是工作的,但現在不是。 switch語句中使用的所有必需變量都在調用它們的函數之前定義。下面就來生成鏈接功能:函數調用似乎沒有通過變量
function generateNavbar(){
//Name and number
$name = preg_replace("#[\d]#", "", strval($_GET["id"]));
$num = preg_replace("#[^\d]#", "", strval($_GET["id"]));
$maxNum = getMaxPage($name);
//Print the nav links
echo "<br><br><center><b>";
if(intval($num) > 1) echo "<a href=\"?id=" . $name . (intval($num) - 1) . "\"><< PREV</a>";
if(intval($num) > 1 && intval($num) < intval($maxNum)) echo " | ";
if(intval($num) < intval($maxNum)) echo "<a href=\"?id=" . $name . (intval($num) + 1) . "\">NEXT >></a>";
echo "</b></center>";
};
而這裏得到最大價值的功能:
function getMaxPage($name){
//Get max value
switch($name){
case "codeSquirrel":
return $numSquirrel;
break;
case "strPhobia":
return $numPhobia;
break;
case "strDouble":
return $numDouble;
break;
default:
return 0;
break;
};
};
爲getMaxPage()
代碼原是內generateNavbar
,但是當我需要使用相同的代碼在使用頁碼的其他函數中,它停止工作。這就像是出於某種原因,函數不希望將$name
發送給它,所以它總是返回0. getMaxPage()
也在調用它的所有函數之前定義。我究竟做錯了什麼?
如果它返回0,那麼'$ name'既不是你的開關情況。 –
因爲我們不知道'$ _GET ['id']'包含了什麼,所以很難說。如果刪除所有數字,最有可能不包含'codeSquirrel','strPhobia'或'strDouble'。 – h2ooooooo
..還有,**你的代碼是開放的XSS注入 - 絕不信任用戶輸入!**。只接受'$ _GET ['id']'並以HTML格式輸出意味着人們可以在其中放入任何HTML(或javascript),並讓其他用戶單擊鏈接執行。編碼HTML。 – h2ooooooo