PHP中的用户/管理员登录
我知道也有类似的线程,我看过这些线程,尽管它们似乎都不适合我。PHP中的用户/管理员登录,php,login,admin,Php,Login,Admin,我知道也有类似的线程,我看过这些线程,尽管它们似乎都不适合我。 首先,我想指出,这是一个简单的大学作业,不是一个实际的网站,我不担心安全或任何事情。 其次,我的数据库由“用户名”、“密码”和“管理员”组成,管理员为0或1。 我需要的帮助是,如果admin值是1,而不是0,则让用户重定向到'hit counter.php'。目前,无论admin值如何,它们都会转到'index_loginsucessful.php'。如果用户名/密码错误,则使用“index_loginfailed.php” 有什么
首先,我想指出,这是一个简单的大学作业,不是一个实际的网站,我不担心安全或任何事情。 其次,我的数据库由“用户名”、“密码”和“管理员”组成,管理员为0或1。 我需要的帮助是,如果admin值是1,而不是0,则让用户重定向到'hit counter.php'。目前,无论admin值如何,它们都会转到'index_loginsucessful.php'。如果用户名/密码错误,则使用“index_loginfailed.php” 有什么想法吗
<?php
$conn = mysql_connect ("localhost", "root","");
mysql_select_db("a_blub",$conn);
$result=mysql_query("SELECT password FROM user WHERE username = '$_POST[theusername]'",$conn);
$rows=mysql_fetch_array($result);
if($_POST['thepassword'] == $rows[0])
{
if ($_POST['admin'] == 1)
Header("location:hit-counter.php");
else
Header("location:index_loginsuccesful.php");
}
else
{
Header("location:index_loginfailed.php");
} ?>
如果要根据数据库中的数据重定向到不同的位置,则需要将1与从数据库返回的数据进行比较,而不是将包含从表单提交的数据的$u POST。您还需要选择包含该数据和密码的列。您能试试吗
$conn = mysql_connect ("localhost", "root","");
mysql_select_db("a_blub",$conn);
$result = mysql_query("SELECT password FROM user WHERE username = '".mysql_real_escape_string($_POST['theusername'])."' LIMIT 1", $conn);
$row = mysql_fetch_assoc($result);
if ($_POST['thepassword'] == $row['password']) {
if ($row['admin'] == 1) {
header("Location: hit-counter.php");
exit;
} else {
header("Location: index_loginsuccesful.php");
exit;
}
} else {
header("Location: index_loginfailed.php");
exit;
}
注入,不直接将数据传递给sql查询,也使用if count$rows>0{//access admin}else{dieno access;}危险:您正在使用并且应该使用。你也很容易受到一个现代化的API的影响,它会让你更容易从中受益。我不担心安全性或其他任何问题——要担心。SQL注入安全漏洞也是用户输入导致代码崩溃的巨大机会。我想知道谁会进行注入/安全演讲:无论如何,你能粘贴一个$row的var_转储吗?正如我指出的,这是一个简单的大学作业,根本不会放在网上,这就是为什么我不担心安全性。关于我们正在使用的数据库,我们真的没有选择的余地,这是老师们告诉我们要使用的。谢谢,它起了作用,只是我不得不将“选择密码从”替换为“选择*从”。@Gacsam对不起,我忽略了这一点。