我一直在尝试为管理员页面设置页面保护,但我无法让它工作。我相信如果我不是PHP编码的新手,这不会是一个问题,呵呵。
所以我要做的是,当一个普通用户的类型为' 0'正在尝试访问管理员页面 index_admin.php ,用户将被重定向到普通用户页面 index.php 。如果用户的类型为' 1',则用户/管理员将留在该页面上。
所以这是我一直努力工作的代码。 (此文件在 index_admin.php 中是必需的,名为 index_admin_check.php ):
<?php
session_start();
?>
<?php
$vert = "localhost";
$brukarnamn = "root";
$passord = "";
$db_namn = "nettsidebunad";
$tbl_namn = "kunde_register";
// Connecting to the MySQL database.
mysql_connect("$vert", "$brukarnamn", "$passord") or die ("Kan dessverre ikkje koble til databasen.");
mysql_select_db("$db_namn") or die ("Kan ikkje finna den ynkjande databasen.");
?>
<?php
// *** Page protection *** \\
// Admin check. If `type` = 1, let the user (admin) stay on the site. If `type` = 0 kick the user (normal) off the site.
$sql = "SELECT `type` FROM $tbl_namn";
$res = mysql_query($sql);
$tell = mysql_num_rows($res);
if ($tell == 0) {
header ("location: index.php");
exit();
}
?>
本文的部分内容为挪威语。
$ vert = $ host(英文)
$ brukarnamn = $ usernamn(英文)
$ passord = $ password(英文)
$ db _namn = $ db_name(英文)
$ tbl _namn = $ tbl_name(英文)
答案 0 :(得分:0)
$sql = "SELECT `type` FROM $tbl_namn";
此SQL查询将为数据库中的每个用户返回一行。使用简单检查查询是否返回结果的方法,您只需选择当前用户的行,然后仅选择用户type=1
的行。
您需要确保:
如果您的用户表具有ID列,并且您将登录用户的ID作为“userid”保存到会话中,则可以使用该查询:
$sql = "SELECT `type` FROM $tbl_namn WHERE id = {$_SESSION['userid']} AND type = 1";
但当然这没有实际意义,因为当你第一次登录时,你只会在会话中保存用户的类型,不是吗?
答案 1 :(得分:0)
对于我能看到的内容,您实际上并没有检查用户。 我将对您的代码发表一些评论,以使情况明确:
$sql = "SELECT `type` FROM $tbl_namn"; //Return all values of column "type" from table - instead you should search for specifyc user
$res = mysql_query($sql);
$tell = mysql_num_rows($res); //Count returned rows
因此,您不会找到用户类型,而是获得注册用户的数量。
您应该如何搜索用户名并获取该名称的用户类型。所以让我们想一下这个表的概念:
ID | name | type |
现在我们可以开始用户检查了。我们将询问mysql用户类型“admin”。
$name = $_POST["username"]; //username submited in POST HTML form
$name = mysql_real_escape_string($name); //Replace dangerous characters from name. This is important to avoid your database being hacked
$data = mysql_query("SELECT type FROM $tbl_namn WHERE name='$name'") or die(mysql_error()); //On failure, you will is if there is some error
$data=mysql_fetch_row($data); //Get actual data
if($data["type"]==0) {
header("HTTP/1.1 403 Acces Forbidden");
header("Location: forbidden.html"); //send user to page telling me he is not allowed to enter. As well you can use include here.
exit;
答案 2 :(得分:0)
把它放到登录页面:
<?php session_start();
if ($_POST['type'] = "1") {
Header('location: http://example.com/admin.php/');
$_SESSION['admin']; = "yes";
exit;
} else {
Header('location: http://example.com/user.php/');
$_SESSION['admin']; = "no";
exit;
}
//modify as needed
?>
这个进入admin.php文件名的文件名可以是任何文件,但扩展名必须是.php:
<?php session_start():
if ($_SESSION['admin']; = "no") {
Header('location: http://example.com/user.php/');
exit;
}
//modify as needed
?>
并记住将其置于文件的初始状态,否则会话将无法正常工作