如果用户是admin(2)或noarmal user(1),我想显示不同的内容。登录工作正常,但我不知道热,检查用户是否'usertype'1或2?我想使用PHP $ _SESSION。
这是我的登录表单:
<!-- Log in -->
<form method="post" action="authentication.php">
<input type="text" name="userid" placeholder="E-mail" required/>
<input type="password" name="password" placeholder="Password" required/><br>
<button type="submit" name="submit" class="btn">Log in</button>
</form>
这是我的authentication.php:
session_start();
if(isset($_POST['userid']) && isset($_POST['password'])){
$userid = $_POST['userid'];
$password = $_POST['password'];
$dbc = mysqli_connect('localhost', 'root', '', 'news');
if(!$dbc){
echo "Cannot connect to database";
exit;
}
$query = "SELECT * FROM users_tbl WHERE email = '$userid' AND password = sha1('$password')";
$result = $dbc->query($query);
if($result->num_rows)
{
$_SESSION['valid_user'] = $userid;
}
$dbc->close();
}
if(isset($_SESSION['valid_user'])){
header("location:prefs.php");
}else{
header("location:login.php");
echo 'Error';
}
这就是我的尝试:
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('news');
$sql = "SELECT users_tbl.usertype FROM users_tbl";
$result = mysql_query($sql);
$user = mysql_fetch_array($result);
$_SESSION['user'] = $user['user'];
$_SESSION['usertype'] = $user['usertype'];
if($_SESSION['user']['usertype'] == 2)
{?>
<h1>Only admin stuff</h1>
<$? }//Endif user is admin(2) ?>
也许不是每次都进行查询以检查用户是否是管理员,我可以保存$ _SESSION ['usertype'],然后使用它来检查用户是否为2,对于管理员,可能是用户是登录?但我不知道该怎么做。我对此很陌生。
答案 0 :(得分:3)
试试这个
if($_SESSION['usertype'] == 2)
{
//do stuff here
}
if ($_SESSION['usertype']) == 1)
{
//do stuff here
}
编辑: 如果你不想写这么多的东西,你只想在这个用户中包含管理员的东西就这样做
if ($_SESSION['usertype']) == 1 or $_SESSION['usertype']) == 2)
{
//do stuff here for them both admin and users
if($_SESSION['usertype'] == 2 )
{
//do extra stuff here for only admin
}
}
答案 1 :(得分:2)
我意识到这是一个老问题,但是我花了上周搜索互联网寻找这个问题的答案,因为我遇到了类似的问题。 “echo_Me”有答案,但我看到一些不正确的语法。在本地服务器上玩弄它之后,这就是我所做的。
if($_SESSION['usertype']) == 1 or $_SESSION['usertype']) ==2)
//> start end < end < < end
{
//do stuff here for them both admin and users
if($_SESSION['usertype'] == 2)
{
//Do other stuff for usertype 2
}
}
你有更多的结束括号,然后你开始。 我为我的网站运行登录脚本时设置了所需的所有会话变量。因此,如果我需要一个会话变量,我将按照以下方式处理它:
if($_SESSION['user']['usertype'] == 1 OR $_SESSION['user']['usertype'] == 2) { ?>
// Do Stuff for normal user and admin
<?php } if($_SESSION['user']['usertype'] == 2) { ?>
// DO Stuff for admin only
<?php } ?>
如您所见,第一个if语句只有一组括号。实际上,你可以删除一些PHP代码,然后只需要执行常规的html / css标记,然后使用if语句为usertype为2的管理员。
<!-- HTML Markup for both Admin and Regular Users Goes Here above if statement -->
<?php if($_SESSION['user']['usertype'] == 2 { ?>
// Markup for Admin only
<?php } ?>
另外,我建议不要在会话变量中设置密码。在那段代码中,你可能没有这样做,我只是不熟悉mysqli,因为我使用PDO。
答案 2 :(得分:0)
您可以使用会话变量
保存您的用户类型登录后,您需要使用用户类型1或2来检查db,并将该变量存储为会话变量,如$ _SESSION ['user_type']。
因此,您可以跟踪。
答案 3 :(得分:0)
尝试向该表添加用户类型的列。 从表中获取数据时检查该列的值。如果值为 admin ,则显示其他文本。