【发布时间】:2012-10-20 20:12:17
【问题描述】:
请有人帮我找到更好的写作方式。我觉得好像必须有比嵌套 if 更好的东西。我已经尝试过搜索,但我不知道我在寻找什么。
代码表示如果会话变量“auth”不完全等于 0、1、2 或 3,则重定向到登录页面。
if($_SESSION['auth']!=0){
if($_SESSION['auth']!=1){
if($_SESSION['auth']!=2){
if($_SESSION['auth']!=3){
header("location:login.php");
}
}
}
}
我最初的想法是做这样的事情。
if($_SESSION['auth']<=0 || $_SESSION['auth']>=3){
header("location:login.php");
}
但这不考虑整数值的分数。我只想允许整数值。我的下一个想法是这个。
if($_SESSION['auth']!=0 && $_SESSION['auth']!=1 && $_SESSION['auth']!=2 && $_SESSION['auth']!=3){
header("location:login.php")
}
但是这种方式与所有嵌套的 if 没有太大区别。让我知道我是否只是在尝试修复未损坏的东西。先感谢您。我正在寻找相关主题的链接(最好是 PHP 手册),而不是解决方案。
【问题讨论】:
-
这里的实际问题是,浮点数如何最终出现在变量中?这是一些模糊的授权方案吗? (“错误:您只能在一定程度上编辑此页面。”)
-
您控制会话。如果你不把小数值放在那里,就不会有小数值。可以安全地假设,如果你只输入了整数,你只会得到整数。
-
浮点数是不允许的。但我想尽量准确。
-
现在,看着答案,我为自己没有考虑使用数组而感到羞愧。
-
@Jeremy 这是严重错误的想法。试图通过测试没有业务的价值来“精确”,正在积极地伤害你。您应该
assert会话中的值是一个整数。如果不是这样,您的程序应该会乱七八糟地死掉,以便您找到错误的根源。您可以完全控制会话。如果某个值以某种方式进入了您不希望出现的位置,那是因为您的代码中存在错误,您需要跟踪并修复它,而不是每次访问会话时都处理后果.
标签: php