有没有办法选择所有请求,或检查是否存在任何请求?
这是我想要的简单方法。
if(
所有请求均为否定){
执行此操作}
if(
任何请求都已存在){
//无所事事}else{
执行此操作}
我有页面我想让它仅供管理员使用。
$username_ = $_SESSION['username'];
$password_ = $_SESSION['password'];
if((!isset($username_) && !isset($password_)))
{
if($_REQUEST['login'] !== 'no'){header("location: admincp.php?login=no");}
}
else
{
$user_find = mysql_query("SELECT * FROM users WHERE username='".$username_."' AND password='".$password_."' AND rank='admin'");
$user_count = mysql_num_rows($user_find);
if($user_count == 0)
{
if($_REQUEST['login'] !== 'access'){header("location: admincp.php?login=access");}
}
else
{
header("location: admincp.php?login=success"); // here is the problem
}
所以有三种类型的人:
所以请求是
login=no
的 not logged
login=access
logged not admin
对于login=success
< - admin index
logged and admin
除了上一个else
部分之外,在前面的代码中它将按照我的解释执行。问题所在。
header("location: admincp.php?login=success");
这里正在发生循环。如果我这样做了。
if($_REQUEST['login'] !== 'success'){header("location: admincp.php?login=success");}
我不能做其他请求。比如$_REQUEST['add'] == 'post'
。我在上一个else
中需要什么。我想检查是否有请求与否。
这是我所说的重复,我想现在很清楚。
if(
所有请求均为否定){
执行此操作}
if(
任何请求都已存在){
//无所事事}else{
执行此操作}
答案 0 :(得分:1)
我认为一个好的方法是在你的桌子上有一个标题为permission
的列,其值为'admin','user'等。
当用户登录时,根据用户ID获取列值并将其置于会话中。然后在标题中使用基于您创建的会话值的if
语句。将非管理员用户重定向到用户页面,以及未登录公共页面的用户。
答案 1 :(得分:0)
要回答您的问题,尽管设计存在明显的安全漏洞,您可以将条件更改为:
if(isset($_REQUEST['login']) && $_REQUEST['login'] !== 'success'){
header("location: admincp.php?login=success");
}
总体而言,我认为switch语句可以更好地为您提供服务:
switch($_REQUEST['login']) {
case 'no':
//handle this case
break;
case 'access':
//handle this case
break;
case 'success':
//handle this case
break;
}
更重要的是,请不要依赖url参数的值来保证安全。