用户访问控制获取用户级别

时间:2015-05-15 07:59:01

标签: php sql database

我有<form method="POST" action="formdata.php">的登录表单 在 formdata.php 中,我将变量视为
$n=$_POST['name']; $p=$_POST['password'];

然后在成功登录后,我直接进入“main.php”页面。

从main.php我想检查用户级别,并根据用户级别限制用户可以访问的页面。

要获得用户级别

$query=mysql_query("SELECT level FROM member WHERE  userName='$n'");
$level=mysql_fetch_array($query);
if ($level==3){
echo "level 3 user";
    }

但我认为我没有将用户级别从数据库正确地提供给变量$ level,因为它没有执行if ($level==3)

我不能在$n中使用WHERE userName='$n'因为$ n是在formdata.php中声明的吗?

如何从数据库中获取级别字段值?

4 个答案:

答案 0 :(得分:0)

您的用法是错误的。一定是

if($level[0] == 3) 

if($level['level'] == 3) 

答案 1 :(得分:0)

您应该查看Sessions

在formdata.php中验证登录时,将用户的数据保存到会话中:

<?php
session_start();
// validate user credentials
$_SESSION['user_level'] = 3;
$_SESSION['user_name']  = 'John Smith';

然后,您可以在main.php中访问此数据

<?php
session_start();
echo("Hello $_SESSION[user_name]!");

if ($_SESSION['user_level'] > 3) {
    echo "You have admin access";
} else {
    echo "You're a regular user";
}

请记住在需要访问会话数据的每个页面上调用session_start()。在使用我的样本之前,还要阅读这个主题,它只是一个起点。

答案 2 :(得分:0)

mysql_fetch_array返回数组不要将其用作字符串

这种情况将是

$level=mysql_fetch_array($query);
if ($level['level']==3){
     echo "level 3 user";
    }

答案 3 :(得分:0)

问题出在这里&#39; $ n&#39;

检查一下: $ query = mysql_query(&#39; SELECT level FROM member WHERE userName =&#34;&#39;。$ n。&#39;&#34;&#39;);