好的,所以我有一个函数可以根据页面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