我有<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中声明的吗?
如何从数据库中获取级别字段值?
答案 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;);