Проблемы с журналированием / перенаправлением в PHP & MySQL

используя этот код, я столкнулся с небольшой проблемой. Когда я пытаюсь перенаправить в подпапку, он игнорирует зарегистрированного пользователя и перенаправляет меня обратно в индекс.php сайт.

// auth.php
class myAuth {
    static function checkAuth() {
        // detect user by set cookie
        // and value which we saved in session
        if(!session_id()) session_start();
        // check ...
        if(
            isset($_COOKIE["auth"])
            &&
            isset($_SESSION["auth"])
            &&
            $_COOKIE["auth"] == $_SESSION["auth"]
        ) {
            // extend the session and cookie and in mysql as well
            self::_setCookieSessionDBTokenValidity();
            return true;
        } else {
            return false;
        }
    } // chechAuth finish

    // this funkcion redirect user
    // on main site (index.php)
    // na početnu stranicu (index.php)
    // use checkAuthWithRedirect if he's not logged in
    static function checkAuthWithRedirect() {
        if(!self::checkAuth()) {
            header('Location:index.php');
        }
    } // checkAuthWithRedirect finish
static function doLogin() {
    // register user
    // save data in session
    if(
        !empty($_POST['user'])
        &&
        !empty($_POST['pass'])
    ) {
        if(!session_id()) session_start();

        // chech and fetch data for user with sended pass
        $user = self::_fetchUserWithPassDB();


        // if we find user finish login
        if($user) {
            // strengthen pass a bit

            $token = md5(rand(100000,999999));

            // save token in session
            $_SESSION["auth"] = $token;

            // save user in session
            $_SESSION["user"] = $user[0]["user"];

            // save role in session
            $_SESSION["role"] = $user[0]["role"];

            // postavi validity i token u cookie, session i bazu
            // save validity and token in cookie, session in db
            self::_setCookieSessionDBTokenValidity();                   

            // redirect 
            header("Location:admin.php");

        }
        else {

            echo '<div class="alert alert-danger" role="alert">';
            p('<span class="glyphicon glyphicon-exclamation-sign"></span>      USER DOES NOT EXIST!');
            echo '</div>';
        }


    } 

} // login

Этот блок кода прекрасно работает, когда перенаправляет меня на сайт, который находится в корневой папке, но когда я пытаюсь перенаправить в подпапку, он полностью игнорирует код и перенаправляет меня на индекс.РНР.

Образец:

            // redirect 
            header("Location:test/admin.php");

А вот пример админа.php сайт

<?php
// login.php
require_once(__DIR__.'/init.php');
showHTMLHeaderWithTitle('Prijava');
myAuth::checkAuthWithRedirect();
?>


<h1>TEST TEST TEST</h1>



<?php
showHTMLFooter();
?>

1 ответ

  1. Параметр Replace header functions — «static function checkAuthWithRedirect ()» в auth.php со следующим

    static function checkAuthWithRedirect() {
            if(!self::checkAuth()) {
                header('Location:test/admin.php');
            }
        }
    

    Это потому, что, когда вы размещаете перенаправление на test / admin.php в doLogin () в auth.РНР,

    myAuth:: checkAuthWithRedirect(); в admin.php инициирует checkAuthWithRedirect () в auth.php, где он снова перенаправляет на индекс.РНР

    Просто замените значение редиректа в checkAuthWithRedirect () на test/admin.значение php & redirect в doLogin () для проверки/admin.РНР. Это сработает!