PHP SQL IF语句问题
PHP SQL IF statement problems
好的,所以我正在尝试从我的 SQL 数据库中提取一些数据并在 IF 语句中使用它。
我有一个名为 DB_Default 的数据库
我有一个名为 Users
的 table
Inside Users 我有所有常规列,例如 id、用户名、密码,但我还有一个名为 isadmin 的列。
我希望能够通过 PHP 选择所有用户名为 $_SESSION[username]
和 isadmin = 1
.
的用户进行 mysql 查询
我的目标是为升级的特权用户添加一些导航链接。因此,由于代码将要放入的页面仅供登录用户使用,我认为是正确的,让我们使用已经定义的用户名会话,即如果我的会话用户名设置为 Admin。
声明应该是
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
我已经设置了 $admin = "1";
,因此只有当登录用户将 isadmin 设置为 1 时,它才能 return 结果。
相反,我要么让导航链接显示给任何用户,不管他们的 isadmin 状态如何,要么根本不显示。
老实说,代码非常混乱,因为它是 5:40am,而且我已经有一段时间没有编写代码了,所以很生疏,所以我非常清楚修复它应该是多么容易。
我 99% 确定这与我刚刚设置的事实有关 $admin = "1";
但我终究无法弄清楚哪里出了问题。今天打算休息一下,明天再来。希望到那时有人会发布解决方案,显然我会投票选出最佳答案,否则我会查看代码,看看我是否无法自己修复它!
谢谢!
更新 - 包含代码
<?php
$admin = 1;
$conn = mysql_connect("localhost","root","password");
mysql_select_db("DB_Default",$conn);
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
$row = mysql_fetch_array($result);
if(is_array($row)) {
$_SESSION["isadmin"] = $row[isadmin];
} else {
}
if($_SESSION["isadmin"] == '1'){
//has admin privs
} else {
//does not have admin privs
}
我还没有设置导航链接,因为我还没有到达那个阶段,但是链接将在管理部分的 if 语句管理链接内,而不是在非管理部分。
我现在的猜测如下:您在以管理员身份登录时设置了 $_SESSION 变量。之后 $_SESSION 永远不会改变。这几乎意味着,如果您以管理员身份登录,然后以其他人身份重新登录,$_SESSION['isadmin'] 将已设置为 1,从而提供完全访问权限。因此,您需要做的是将 else 部分更改为:
if(is_array($row))
{ $_SESSION["isadmin"] = $row[isadmin]; }
else
{ $_SESSION['isadmin'] = 0; }
好的,所以我正在尝试从我的 SQL 数据库中提取一些数据并在 IF 语句中使用它。
我有一个名为 DB_Default 的数据库 我有一个名为 Users
的 tableInside Users 我有所有常规列,例如 id、用户名、密码,但我还有一个名为 isadmin 的列。
我希望能够通过 PHP 选择所有用户名为 $_SESSION[username]
和 isadmin = 1
.
我的目标是为升级的特权用户添加一些导航链接。因此,由于代码将要放入的页面仅供登录用户使用,我认为是正确的,让我们使用已经定义的用户名会话,即如果我的会话用户名设置为 Admin。
声明应该是
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
我已经设置了 $admin = "1";
,因此只有当登录用户将 isadmin 设置为 1 时,它才能 return 结果。
相反,我要么让导航链接显示给任何用户,不管他们的 isadmin 状态如何,要么根本不显示。
老实说,代码非常混乱,因为它是 5:40am,而且我已经有一段时间没有编写代码了,所以很生疏,所以我非常清楚修复它应该是多么容易。
我 99% 确定这与我刚刚设置的事实有关 $admin = "1";
但我终究无法弄清楚哪里出了问题。今天打算休息一下,明天再来。希望到那时有人会发布解决方案,显然我会投票选出最佳答案,否则我会查看代码,看看我是否无法自己修复它!
谢谢!
更新 - 包含代码
<?php
$admin = 1;
$conn = mysql_connect("localhost","root","password");
mysql_select_db("DB_Default",$conn);
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
$row = mysql_fetch_array($result);
if(is_array($row)) {
$_SESSION["isadmin"] = $row[isadmin];
} else {
}
if($_SESSION["isadmin"] == '1'){
//has admin privs
} else {
//does not have admin privs
}
我还没有设置导航链接,因为我还没有到达那个阶段,但是链接将在管理部分的 if 语句管理链接内,而不是在非管理部分。
我现在的猜测如下:您在以管理员身份登录时设置了 $_SESSION 变量。之后 $_SESSION 永远不会改变。这几乎意味着,如果您以管理员身份登录,然后以其他人身份重新登录,$_SESSION['isadmin'] 将已设置为 1,从而提供完全访问权限。因此,您需要做的是将 else 部分更改为:
if(is_array($row))
{ $_SESSION["isadmin"] = $row[isadmin]; }
else
{ $_SESSION['isadmin'] = 0; }