2017-04-12 8 views
0
Ich habe eine logout.php Datei, die tatsächlich das tut, was es sagt, den Benutzer aus der Anwendung abmeldet durch Zerstörung der Sitzung und Weiterleitung zurück zur Anmeldeseite.

Sitzung wird nicht im Internet Explorer zerstört

<?php 
    session_start(); 
    if(isset($_SESSION) && 
     !empty($_SESSION)) 
    { 
     $con = mysqli_connect("localhost", 
           "root", 
           "", 
           "ctp"); 

     $associate = $_SESSION[ 'user' ]; 
     date_default_timezone_set('Asia/Kolkata'); 
     $tn = time(); 

     $dateTime = date("Y-m-d H:i:s", 
          $tn); 

     $sql = "INSERT INTO ind_ctp_workflow_log 
       VALUES ('CTPLogoutButton', 
         'CTP - Logout', 
         '$associate', 
         '$dateTime')"; 

     mysqli_query($con, 
         $sql); 

     unset($_SESSION); 
     session_destroy(); 

     header("Location:index.php?r=site/login");  
    } 
    else 
    { 
     echo 'There is no active session<br>\n 
     echo '<a href = "index.php?r=site/login">\n' 
     echo ' Click here\n'; 
     echo '</a>\n'; 
     echo 'to login'; 
    } 
?> 

Dies funktioniert in Chrome in Ordnung, aber nicht auf IE, Der Workflow, der es folgt:

1) Login-Seite - Sitzung nicht gesetzt ist, so zeigt dieser Seite

2) Startseite - Sitzung gesetzt, so bleibt hier, gehen andere Seite

3) Logout zum Login-Seite - Sitzung löschen, geht Seite

4) Login-Seite anmelden - Session-Set, gehtzur Startseite

Daher kann ich verstehen, dass Sitzung nicht in IE gelöscht wird. Dies funktioniert in Mozilla auch

In Chrome, Mozilla die vierte Schritt Änderungen an

4) Login-Seite - Session nicht festgelegt, bleib hier

Es gibt sehr wenige Fragen in SO und die sind alle Vor 4 Jahren, und hat keine sehr überzeugende Antwort für meinen Fall.

+0

verwendet, um dieses _SESSION $ = array(); –

+0

Können Sie bitte Ihre Login-Seite posten? Vielleicht möchten Sie einen Index in Ihrer Sitzung setzen, mit dem Sie vergleichen, wie $ _SESSION ('is_logged_in') ... – chickenchilli

+0

@chickenchilli die Login-Seite ist in yii-Framework geschrieben. Es hat Module auf verschiedenen Seiten. und keine spezifische Login-Seite –

Antwort

0

Statt unset($_SESSION), verwenden Sie diese:

$_SESSION = array(); 
session_destroy(); 
+0

Das hat nicht für mich funktioniert, ich habe es ersetzt, aber das gleiche Problem besteht weiter –

+0

Meine einzige andere Vermutung ist, dass IE die Seite zwischenspeichert und nicht loslassen wird. Nachdem Sie versucht haben, sich abzumelden und es umgeleitet wird, zeigt die Aktualisierung der Seite immer noch an, dass Sie angemeldet sind? – Difster

+0

aktualisierte Seite nach dem Abmelden, geschlossene und geöffnete Registerkarte, IE neu gestartet, System neu gestartet, Server neu gestartet! wäre es, weil das Projekt in einem Rahmenwerk gebaut wird? –

Verwandte Themen