2017-04-19 2 views
0

Mein Problem ist, wenn der Benutzer sich abmeldet. Die Login-Seite wird aufgerufen und die Index-Seite zeigt aber die URL sagtPHP Header (Location: 'index.php') und Javascript wird nicht ausgeführt

https://mysite/logout.php 

statt

https://mysite/index.php 

was bedeutet, meine Javascript-Dateien in der index.php enthalten ist, nicht geladen werden, Sie können sich also nicht erneut anmelden, ohne die Seite manuell zu aktualisieren.

Links in home.php der Seite, die Sie nach der Anmeldung erreichen

<p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p> 

Ich habe die folgende Logout-Seite (logout.php)

<?php 

    session_start(); 
    require_once 'php/class/class.user.php'; 
    $user = new USER(); 

    if(!$user->is_logged_in()) 
     { 
      $user->redirect('index.php'); 
      exit; 
     } 

    if($user->is_logged_in()!="") 
     { 
     $user->logout(); 
     $user->redirect('index.php'); 
     exit; 
     } 
    ?> 

meine Benutzerfunktionen wie folgt (class.user. php)

public function is_logged_in() 
{ 
    if(isset($_SESSION['userSession'])) 
    { 

     return true; 
    } 
} 

public function redirect($url) 
{ 
    header("Location: $url"); 


} 

public function logout() 
{ 
    session_destroy(); 


} 

was fehlt mir?

Antwort

0

so endete ich mit einer nicht sehr schön Lösung:

änderte ich den Link in home.php

`<p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p> ` 

Um eine Schaltfläche

<button id="btn-logout">Logout</button> 

und seine Funktionalität in einer Jquery Funktion

hinzugefügt
$(function(){ 

    $("#btn-logout").bind('click', function() { 

    window.location.href = "http://example.com/logout.php"; 
     }) 
    }); 

meine logout.php endete aussehen wie

<?php 
    session_start(); 
    unset($_SESSION['user_session']); 
    session_destroy(); 
    ?> 
<html> 
<head> 
<script> 
    window.location.href = "https://example.com/index.php"; 
</script> 
</head> 
<body> 
</body> 
</html> 

Also gehen von Refresh-Seite in PHP mit Header. Ich endete mit js und jquery. Es ist keine gute Lösung oben, aber es funktioniert!

0

Ihre Funktion is_logged_in() einen Booleschen Wert zurück, TRUE, aber Sie sind die Überprüfung der Rückgabewert mit:

if($user->is_logged_in()!="") 

Das heißt, zu überprüfen, ob es sich um eine leere Zeichenfolge ist.

auch, und noch wichtiger, is_logged_in() nichts zurück, wenn der Benutzer nicht angemeldet ist, dass Funktion sein sollte, so etwas wie:.

public function is_logged_in() 
{ 
    if(isset($_SESSION['userSession'])) 
    { 
     return true; 
    } 
    else { return false; } 

}

und die Prüfung sollte etwas sein, wie :

if(!$user->is_logged_in()) 
+0

Vielen Dank für Ihre Antwort. Ich habe deinen Code hinzugefügt. Ich werde immer noch nicht zur index.php weitergeleitet. Es hängt immer noch auf der https: //mysite/logout.php Seite – p1ux

+0

Sehen Sie, ob Sie Whitespace oder weiße Zeilen vor Ihrem Code haben. "Header" funktioniert nur, wenn noch nichts an den Browser gesendet wurde. – PaulJ

+0

Aber es gibt mir die Benutzerschnittstelle der index.php, aber der Browser sagt: https: //mysite/login.php und meine js-Dateien nicht feuern. Also ich denke der Header funktioniert - ein bisschen – p1ux

Verwandte Themen