PHP脚本包含switch语句和中断,以防止代码自动运行到下一个情况:
if (!isset($a)) $a = '';
switch($a)
{
case 1:
default:
// some code
break;
case 2:
// some code
break;
case 3:
// some code
break;
}
如何防止用户在 URL 中将 "$a" 写入 php switch 语句中不存在的某个数字?例如,在上面的这个例子中,如果有人写成 url indes.php?a=5 应该会收到一条消息,指出链接不正确。最好的方法是什么?
我感兴趣的另一件事是,在一个页面上使用switch语句的数量是否有任何限制,或者如果页面太大,该页面的大小会导致问题吗?
将其添加到switch
末尾。
default:
echo 'not correct';
break;
来自 php 文档:
特殊情况是默认情况。此案例匹配其他案例不匹配的任何内容。例如:
<?php
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo "i is not equal to 0, 1 or 2";
}
?>
http://php.net/manual/en/control-structures.switch.php
添加默认大小写。
default:
echo 'Invalid Option';
break;
而且switch
的cases
没有限制.
更新:
无论页面的大小如何。但实际上,这取决于在案例中编写的脚本或代码。这比这更耗时。
默认标签的位置可能会导致问题,但我不能 100% 确定这一点:
if (!isset($a)) $a = '';
switch($a)
{
case 1:
default:
// some code
break;
case 2:
// some code
break;
case 3:
// some code
break;
}
只要与$a匹配,就会执行各个案例语句。 例如,如果用户提交了 3(因此 $a==3),则案例 3 将执行。 它将继续执行,直到命中break;
语句。 仅当没有 case 语句与 $a 中包含的值匹配时,才会执行 default
块。
例如,如果用户提交了 5(因此 $a==5),则没有case 5:
因此将执行默认块。 因此,通常的标准做法是将 default:
块放在 switch 语句的末尾,如下所示,以表明如果没有 case 语句与条件匹配,它将最后执行。
if (!isset($a)){
$a = '';
}
switch($a)
{
case 1:
//some code
break;
case 2:
// some code
break;
case 3:
// some code
break;
default:
//code displayed when $a does not match any case statements
}
希望有帮助。 此外,switch 语句执行速度非常快,它们基本上类似于嵌套的 if 语句。 因此,实际上没有限制,但是,代码优化始终是您应该努力实现的目标。
由于使用了错误的开关结构,您的 switch 语句中断,请在此处查看完整的 switch 语句参考
<?php
$i = 1;
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo 'no case match';
break;
}
?>