Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的用户/管理员登录_Php_Login_Admin - Fatal编程技术网

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对不起,我忽略了这一点。