2017-08-11 116 views
-1

我想分开管理员和用户标题位置。我在db中有一个名为role的角色,其中1用于admin,2用于用户,我们只有两个客户一个管理员,第二个是用户,并分别给出用户名和密码。我想根据角色重新定向用户,如管理员或用户

现在我想,当他们使用用户名管理登录重定向到管理员布局,如果是登录用户用它重定向到用户页面。我附上了代码。

<?php 

    session_start(); 
include'config.php'; 


$un = $_POST['username']; 
$pw = $_POST['password']; 


     $sql = "SELECT * FROM sign_in where user_name='$un' and pasword='$pw'"; 



      //SELECT `id`, `user_name`, `pasword` FROM `sign_in` WHERE 1 


     $result = $conn->query($sql); 

     if ($result->num_rows > 0){ 

      header('Location:index2.php'); 

     }else{ 
     echo "Invalid username or password"; 
     } 

?> 

如果用户输入错误的用户名密码,则显示弹出无效的用户名密码。我添加了数据库sign_in表的屏幕截图。

+1

究竟是什么卡住了?如何做重定向?如何做一个'if'语句?你有什么尝试,什么不工作?另外,请注意,您的代码已广泛应用于SQL注入。你可能想看看这里:https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – David

+0

@David先生其实我是新的发展,所以我想分享我的代码寻找可以编辑并向我发送我正在寻找的代码的人... –

+2

在这种情况下,您误解了此社区的功能。你被邀请从这里开始:https://stackoverflow.com/help如果你有一个特定的问题,你想解决,我们可以帮助。但是,如果像你所说的那样,你只是在寻找一个人为你做你的工作,那么这不是发生在这里的事情。 – David

回答

1

OK,你做很多事情错了,所以我打算在回答框写,即使我可能是矫枉过正的回答。

首先,你传递用户数据到你的查询,这可能是危险的,因为他们可以给你,你需要确保不会被执行造成伤害到你的系统不安全的数据。

其次,你无法正常保护您的用户密码。 PHP有一个叫做password_hash()的函数。当你将它插入数据库时​​,它非常易于使用,只需要password_hash($ _ POST ['password'],PASSWORD_DEFAULT)`,而不仅仅是简单的密码,因为它看起来像你正在做的。

在一天结束的时候,我会建议你使用PHP/MySQL的PDO驱动。您可以从here了解如何设置config.php文件(向下滚动到页面下半部分的PDO说明)。

一旦你做到了这一点:

$stmt->prepare("SELECT * FROM sign_in WHERE user_name = :user_name") 
$stmt->bindParam(':user_name', $_POST['user_name'); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 

你现在从你的表符号中的所有数据。注意,你的sign_in表看起来好像可能只是一个用户表,所以也许可以称之为与世界其他地方保持一致。

首先,你要比较他们张贴的密码,并在数据库中的哈希值,并且仅当它匹配进行。

if(!password_verify($_POST['password'], $result['password']) { 
    // if the result is false, they need to be redirected. 
    header('Location: http://yoursite'); 
    exit; 
} 

现在,我们已经证实,他们登录,您只需通过看“ROLE_ID”从结果中(这是我的“M假设你有)显示每个卷特定的标题。

if($role_id == 1) { ?> 
<b>You can just enter plain old HTML here - this is what you would put in for your admin header</b> 
<?php } else { ?> 
<b>This is the header that your user would see if they AREN'T an admin</b> 
<?php } ?> 

对不起,如果这是为你的答案矫枉过正,但我​​尽量保持它尽可能简单,以便如何使用预准备语句(防止SQL注入),password_hash和password_verify函数,以便您可以安全地存储您的用户密码(以散列形式),最后根据用户滚动显示不同的标题。

不幸的是,它可能不会复制/粘贴到您当前的代码中,但我会建议阅读我提供的链接(PDO),然后从此继续。不应该让你长久,我保证!

相关问题