使用角色

时间:2018-05-31 16:22:52

标签: php oop pdo

我目前正在制作一个多级登录系统。我有表'admin'包含'level'字段。我想根据'admin'表中的'level'字段将管理员重定向到页面。如果级别 1 将重定向到 SIPP-Litbang / admin.php 页面,那么如果级别为2将重定向到 SIPP-Litbang / admin-pp-sipp -litbang.php 即可。 第一步,我在class.admin.php页面上创建方法,这里是代码:

 public function login($email, $password)
    {
        $stmt = $this->conn->prepare("SELECT * FROM admin WHERE email_admin = :email");
        $stmt->bindParam(':email',$email);


        $adminRow = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($stmt->rowCount() == 1) {
            if ($adminRow['pass_admin'] == md5($password)) {
                $_SESSION['is_logged_in']=true;
                $_SESSION['adminSession'] = $adminRow['id_admin'];
                $_SESSION['levelSession'] = $adminRow['level'];
                return true;

            }
        } else {
            return false;
        }
    }



    public function cekSession(){
        if (isset($_SESSION['adminSession'])&&$_SESSION['levelSession']==1) {

            header('Location: \SIPP-Litbang\admin.php');
            return true;
        }
        elseif (isset($_SESSION['adminSession'])&&$_SESSION['levelSession']==2) {

            header('Location: \SIPP-Litbang\admin-pp-sipp-litbang.php');
            return true;
        }
    }

loginadmin.php页面:

<?php
    session_start();
    include_once ('class.admin.php');
    $admin = new Admin();
    if (isset($_POST['login'])){
        $user = trim(strip_tags($_POST['email']));
        $pass = trim(strip_tags($_POST['pass']));

        if ($admin->login($user, $pass)){

           header("Location: \SIPP-Litbang\cekadmin.php");


        }
        else {
            echo "GAGAL LOGIN! Email atau Password Salah";
        }
    }

接下来,在loginadmin.php页面上形成:

<form class="login100-form validate-form" method="post">
                    <span class="login100-form-title">
                        SIPP-Litbang Admin
                    </span>
                        <span class="login100-form-avatar">
                        <img src="images/lambang.png" alt="AVATAR">
                    </span>

                        <div class="wrap-input100 validate-input m-t-85 m-b-35" data-validate="Enter Email">
                            <input class="input100" type="text" name="email">
                            <span class="focus-input100" data-placeholder="Email"></span>
                        </div>

                        <div class="wrap-input100 validate-input m-b-50" data-validate="Enter Password">
                            <input class="input100" type="password" name="pass">
                            <span class="focus-input100" data-placeholder="Password"></span>
                        </div>

                        <div class="container-login100-form-btn">
                            <button class="login100-form-btn" type="submit" name="login">
                                Masuk
                            </button>
                            <li class="m-b-8">
                            <span class="txt1">
                                Lupa
                            </span>

                                <a href="lupapass.php" class="txt2">
                                    Password?
                                </a>
                            </li>
                        </div>


                    </form>

最后,cekadmin.php页面:

<?php session_start();

require_once 'class.admin.php'; $adminlevel = new Admin();

$admin_id = $_SESSION['adminSession']; $level = $_SESSION['levelSession'];

if(isset($admin_id)&&$level==1){
    header('Location: \SIPP-Litbang\admin.php'); } elseif(isset($admin_id)&&$level==2){
    header('Location: \SIPP-Litbang\admin-pp-sipp-litbang.php'); } ?>

我尝试登录但结果是我的密码和电子邮件不匹配。我已经更改了密码两次,以防我忘记了密码,但它没有用。我的代码出了什么问题?请帮帮我。

1 个答案:

答案 0 :(得分:-2)

我认为您的问题是您实际上并没有执行SQL语句。添加:

$stmt->execute();

后:

$stmt->bindParam(':email',$email);

再试一次?另外,要进行调试,可以在

之后添加echo语句
if ($stmt->rowCount() == 1)

声明。如果有效,请告诉我!

相关问题