管理页面的页面保护无效

时间:2013-02-01 14:22:57

标签: php admin webpage protection

我一直在尝试为管理员页面设置页面保护,但我无法让它工作。我相信如果我不是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(英文)

3 个答案:

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

并记住将其置于文件的初始状态,否则会话将无法正常工作