3

我的注册页面和登录表单工作正常。如果任何会员注册然后登录,用户就会来到 member.php 页面。会员页面有他们的个人资料信息,仅供会员使用。现在我想创建一个管理员登录名,管理员将在其中重定向到 admin.php 页面。此页面包含所有信息,例如:关于有多少用户注册(完成)所有其他管理任务(完成)

我已经完成了我的管理页面,但我不知道如何授权管理员登录名和密码,如果我使用它们,那么它将带我到管理区域。

这是我的登录表单代码

<form id="loginForm" name="loginForm" method="post" action="login-exec.php">
  <table width="700" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <td width="112"><b>User id (Email-id)</b></td>
      <td width="188"><input name="user_email" type="text" class="textfield" id="login" /></td>
    </tr>
    <tr>
      <td><b>Password</b></td>
      <td><input name="password" type="password" class="textfield" id="password" /></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="Submit" value="Login" /></td>
    </tr>
  </table>
</form>
</body>
</html>

login-exec.php 的代码

<?php
    //Start session
    session_start();

    //Include database connection details
    require_once('config.php');

    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    //Connect to mysql server



    //Select database
    ----something----

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }

    //Sanitize the POST values
    $user_email = clean($_POST['user_email']);
    $pwd = clean($_POST['password']);

    //Input Validations
    if($user_email == '') {
        $errmsg_arr[] = 'Login ID missing';
        $errflag = true;
    }
    if($pwd == '') {
        $errmsg_arr[] = 'Password missing';
        $errflag = true;
    }

    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: login-form.php");
        exit();
    }

    //Create query
    $qry="SELECT * FROM customer WHERE user_email='$user_email' AND password='$pwd' ";

    if ($user_email= )

    $result=mysql_query($qry);

    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) == 1) {
            //Login Successful
            session_regenerate_id();
            $customer = mysql_fetch_assoc($result);
            $_SESSION['SESS_id'] = $customer['id'];
            $_SESSION['SESS_fname'] = $customer['first_name'];
            $_SESSION['SESS_lname'] = $customer['last_name'];
            session_write_close();
            header("location: member-index.php");
            exit();
        }else {
            //Login failed
            header("location: login-failed.php");
            exit();
        }
    }else {
        die("Query failed");
    }
?>
4

3 回答 3

3

您可以在数据库中为所有成员(包括管理员)设置一个额外的字段来设置用户权限以存储用户权限。如果该字段是管理员,您可以拥有该用户的管理区域,否则如果它是成员,则您可以进入成员区域。

于 2012-04-05T12:08:47.053 回答
1

您可以拥有数据库索引的额外部分来对权限 IE 进行分类:例如“级别”权限,然后检查该级别。又名:如果级别高于 3 或其他级别,则允许访问自动访问管理页面。

于 2012-04-05T12:18:50.407 回答
1

所以为了重述这个问题,你已经从某个地方获取了代码(这里可能是:http ://www.phpfreaks.com/forums/index.php?topic=314604 ),现在你想改变它的行为也允许管理员用户。我最好的建议是首先了解您正在使用的代码。

查找header("Location: member-index.php");将用户重定向到成员索引页面的行。由于您已经表明您不想对数据库字段正确执行此操作,因此您可以对 $user_email 的值进行硬编码测试;如果是 admin@blah,那么您可以设置一个特殊的 Session 变量,比如“SESS_isadmin”,然后重定向到不同的页面。该新页面可以测试“SESS_isadmin”值以确保用户已登录;如果不是,您可以将它们重定向到登录页面。

没有实际为您编写代码,这就像它得到的“用户级”一样。:)

请注意:不要使用这种方法来编码实际的生产级代码;以这种方式学习编程语言很好,但是在你把这些东西放到野外之前,还有很多事情需要考虑。

于 2012-04-05T13:47:19.197 回答