0

我一直在尝试为管理员页面进行页面保护,但无法使其正常工作。如果我不是 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(英文)

4

3 回答 3

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
?>

并记住将其放在文件的开头,否则会话将无法正常工作

于 2015-01-04T00:07:28.583 回答
0
$sql = "SELECT `type` FROM $tbl_namn";

此 SQL 查询将为数据库中的每个用户返回一行。使用您的简单检查查询是否返回结果的方法,您只需选择当前用户的行,然后仅当用户具有type=1.

您需要确保:

  • 用户之前已经使用用户名和密码或类似的方式登录系统
  • 您已将他们的详细信息保存到会话中。

如果您的用户表有一个 ID 列,并且您将登录用户的 ID 作为“用户 ID”保存到会话中,则可以使用以下查询:

$sql = "SELECT `type` FROM $tbl_namn WHERE id = {$_SESSION['userid']} AND type = 1";

但这当然没有实际意义,因为当您第一次登录时,您只需将用户的类型保存在会话中,不是吗?

于 2013-02-01T14:31:33.633 回答
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;
于 2013-02-01T14:36:11.930 回答