Mysql sorgu vs PHP dizi

0 Cevap php

Ben kullanıcı adı, parola ve erişim düzeyinde (roller) denetleyen bir authorization script üzerinde çalışıyorum. Bu sürece kontrol etmek için sadece tek bir rolü var gibi çalışıyor.

Ben bir diziye rolleri koymak ve bunlardan herhangi oturum açan kullanıcı için veritabanında varsa veritabanı kontrol olabilir öğrenmek istiyorum. Şu anda sadece bir rol için kontrol edin.

Question: nasıl inşa ve izin verilen rolleri için dizi ve bunlardan herhangi bir maç ise o sorgu çek var mı?

<?php
// allowed roles  
$allowedRoles = 'role1';  

// needs to be like:  
$allowedRoles = array('role1','role2','role3','etc.');

//------------------------------------------------------------  
// instantiate sessions  
//------------------------------------------------------------  
if (!isset($_SESSION)) {  
  session_start();  
}  

//------------------------------------------------------------  
// define auth variables  
//------------------------------------------------------------  
$first_pass = 0; // sessions  
$second_pass = 0; // password  
$third_pass = 0; // role  

//------------------------------------------------------------  
// check if sessions exist and are valid  
//------------------------------------------------------------  
if(!empty($_SESSION['UserName']) && !empty($_SESSION['Password']) && !empty($_SESSION['LoggedIn']) && $_SESSION['LoggedIn'] == 1)  
{  
    // FIRST PASS OK!  
    $first_pass = 1;  
    echo 'PASSED: 1st ';  
}  

if($first_pass == 1)  
{  
    //------------------------------------------------------------  
    // include db connection  
    //------------------------------------------------------------  
    require_once('../../connections/mysql.php');  

    // set variables
    $session_un = $_SESSION['UserName'];
    $session_pw = $_SESSION['Password'];

    // DB QUERY: check username SESSION credential against db
    // ------------------------------------------------------------------
    $session_auth = mysqli_query($conn, "SELECT UserId, UserName, Password FROM users WHERE UserName = '$session_un' AND IsApproved = 1 AND IsLockedOut = 0 LIMIT 1")
    or die($dataaccess_error);
    // ------------------------------------------------------------------

    if(mysqli_num_rows($session_auth) == 1)
    {
        $row = mysqli_fetch_array($session_auth);
        $auth_UserId = $row['UserId'];
        $auth_Password = sha1(sha1($row['Password']));

        // if passwords match
        if($auth_Password == $session_pw)
        {
            // SECOND PASS OK!
            $second_pass = 1;
            echo 'PASSED: 2nd ';

            if($second_pass == 1)
            {
                // DB QUERY: check ROLE credentials in db
                // ------------------------------------------------------------------
                $auth_roles = mysqli_query($conn, "SELECT UserId, RoleId, RoleName FROM users_in_roles WHERE UserId IN ($auth_UserId) AND RoleName IN ('$allowedRoles')")
                or die($dataaccess_error);
                // ------------------------------------------------------------------

                if(mysqli_num_rows($auth_roles) > 0)
                {
                    // THIRD PASS OK!
                    $third_pass = 1;
                    echo 'PASSED: 3rd ';
                }
                else
                {
                    // redirect back to login page
                    header('Location: ../../login.php');
                }
            }
        }
    }
}

?>

Teşekkür ederiz!

0 Cevap