2016-05-29 3 views
0

mit diesem Code habe ich ein bisschen ein Problem gekontert. Wenn ich versuche, in einen Unterordner umzuleiten, ignoriert er registrierte Benutzer und leitet mich zurück zur Website index.php.Probleme mit der Protokollierung/Umleitung in PHP und MySQL

// 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 

Dieser Codeblock funktioniert gut, wenn mich Website umleiten, die in Stammordner ist, aber wenn ich versuche, es zu Umleitung ignoriert Unterordner completily Code und leitet mich auf index.php.

Beispiel:

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

Und hier ist Beispiel für admin.php Website

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


<h1>TEST TEST TEST</h1> 



<?php 
showHTMLFooter(); 
?> 
+0

Bist du sicher, dass du hier keinen 404 bekommst? wenn "test" kein Unterordner des Ausführungsortes des Skripts ist, dann gehe zurück zum root 'header (" Location: /test/admin.php "); exit; 'oder ein vollständiger http-Aufruf' header ("Location: http://www.example.com/test/admin.php"); exit; '- auch auf Fehler prüfen. –

+0

Sie haben auch als '.htaccess' getaggt, so dass wir nicht wissen, ob Sie eine schlechte Neuschreibung haben. Suchen Sie erneut nach Fehlern oder sehen Sie sich Ihre Logs an, falls etwas darin ist. Ich für meinen Teil werde nicht in der Lage sein, eine magische Antwort zu geben; Viel Glück. Ich werde das hier weitergeben und weitermachen. –

+0

.htaccess war mein Tag fehlgeschlagen. Egal, ich habe eine Frage gestellt, während ich selber nach Antworten gesucht habe. Danke für deine Zeit. Ich werde nach Fehlern suchen – Svinjica

Antwort

0

Header-Funktionen Parameter ersetzen - "statische Funktion checkAuthWithRedirect()" in Auth.php mit folgenden

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

Es ist weil, zu testen/admin.php in doLogin() innerhalb Auth.php, wenn Sie Platz umleiten

die myAuth :: checkAuthWithRedirect(); in admin.php einleitet checkAuthWithRedirect() in Auth.php, wo es wieder zu index.php wird Umleiten

ersetzen einfach die Umleitungs-Wert in checkAuthWithRedirect() zu testen/admin.php & Umleitungswert in doLogin() zu test/admin.php. Es würde funktionieren!

+0

Ich habe versucht, das zu tun, und es funktioniert nicht, es erstellt folgende URL, die falsch ist: ** test/test/admin.php ** und ich muss mich auf diese URL umleiten ** test/admin.php **. Um fair zu sein _function checkAuth() _ wird verwendet, um eine Verifizierung vor Ort zu erstellen. _Wenn der Benutzer nicht eingeloggt ist, leiten Sie ihn an index.php_ weiter. Aber ich schätze Ihre Mühe, danke, lieber Herr! – Svinjica