我全神贯注地看着。我无法弄清楚这一点。
<?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 »
<div id="admin">
ADMIN PANEL
<div id="exitadmin">
</div>
<div id="artistline" />
</div>
</div>
XYZ;
?>
我知道$admin
值正在运行。我测试了它。基本上,我有一个注册系统。默认情况下,它将您的管理值设置为“0”。但是,假设我想添加一个管理员。我通过mysql将'0'更改为'1'。我想知道如何让php找到管理员值设置为'1'的用户,这些用户位于数据库中(行名称:admin),并仅向他们显示管理面板。
答案 0 :(得分: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注入不适用
答案 1 :(得分:0)
首先,我有义务指出,由于SQL注入,不过滤$ _POST(以及$ _GET和$ _COOKIE等)是非常危险的。其次,在你定义之前,变量$ isadmin并不神奇地存在。
我建议设计一个功能更强大的用户组系统,但只是为了回答这个问题,你要检查的变量是$ row [“is_admin”],因为is_admin是表中的有效列。此外,您不需要执行if($ row [“is_admin”] == 1) - 1在PHP中求值为TRUE。
答案 2 :(得分:0)
您需要将if($isadmin["admin"]==1)
更改为if($row['admin'] == 1)
- 如果1和1,您可以省略== 1
部分0是唯一的答案,因为1将始终为真,0将为假。
不可否认,我需要提一下,以明文形式在数据库中存储密码是一个坏主意,在存储它们之前至少应该对它们进行散列处理。在注册和登录阶段就像$password = hash('sha256', $salt.$_POST['password'])
一样。
我还应该指出,你不应该使用查询将裸值输入到数据库中,如果你正在对它进行哈希处理,你不需要担心密码,但如果你不是,你需要密码无论如何要做用户名,否则任何人都可以在你的数据库中运行SQL查询:
$username = mysql_real_escape_string($_POST['username'])