-1

我都看了一遍。我无法弄清楚这一点。

<?php
session_start();
if (!empty($_POST[username]))
{
    require_once("connect.php");

    // Check if he has the right info.
    $query = mysql_query("SELECT * FROM members
                            WHERE username = '$_POST[username]'
                            AND password = '$_POST[password]'")
    or die ("Error - Couldn't login user.");

    $row = mysql_fetch_array($query)
    or die ("Error - Couldn't login user.");

    if (!empty($row[username])) // he got it.
    {
        $_SESSION[username] = $row[username];
        echo "Welcome $_POST[username]! You've been successfully logged in.";
        exit();
    }
    else // bad info.
    {
        echo "Error - Couldn't login user.<br /><br />
            Please try again.";
        exit();
    }

    if($isadmin["admin"]==1)
{
echo $admin;
}
else
{
}

}

$admin = <<<XYZ
<div id="admintab">
Admin &nbsp;&#0187;
<div id="admin">
ADMIN PANEL
<div id="exitadmin">
</div>
<div id="artistline" />
</div>
</div>
XYZ;

?>

我确实知道这个$admin价值正在发挥作用。我已经测试过了。基本上,我有一个注册系统。默认情况下,它将您的管理员值设置为“0”。但是,假设我想添加一个管理员。我通过mysql将'0'更改为'1'。我想知道如何让 php 找到数据库中管理员值设置为“1”的用户(行名:admin),并只向他们显示管理面板。

4

3 回答 3

1

你为什么用

if($isadmin["admin"]==1)

正如你所拥有的

$row = mysql_fetch_array($query)

所以转换

if($isadmin["admin"]==1)

if($row["admin"]==1)

您应该在插入之前检查值并选择数据并使用

mysql_real_escape_string($_POST['username'])

使sql注入不适用

于 2013-04-20T07:57:41.120 回答
0

首先,我有义务指出,由于 SQL 注入,不过滤 $_POST(以及 $_GET 和 $_COOKIE 等)是非常危险的。其次,变量 $isadmin 在您定义它之前不会神奇地存在。

我建议设计一个功能更强大的用户组系统,但只是为了回答这个问题,您要检查的变量是 $row["is_admin"],因为 is_admin 是表中的有效列。此外,您不需要在 PHP 中执行 if ($row["is_admin"] == 1) - 1 评估为 TRUE 的操作。

于 2013-04-20T07:51:56.333 回答
0

您需要更改if($isadmin["admin"]==1)if($row['admin'] == 1)- 如果 1 和 0 是唯一答案,您可以省略该== 1部分,因为 1 始终为真,0 为假。

必须要指出的是,以纯文本形式将密码存储在数据库中是一个坏主意,您至少应该在存储它们之前对它们进行哈希处理。就像$password = hash('sha256', $salt.$_POST['password'])在注册和登录阶段一样。

我还应该指出,您不应该通过查询将裸值输入数据库,如果您正在对其进行哈希处理,则无需担心密码,但如果您不是,您需要这样做并且您需要用户名无论如何,否则任何人都可以在您的数据库中运行 SQL 查询:

$username = mysql_real_escape_string($_POST['username'])

于 2013-04-20T08:06:37.543 回答