Als Login $_Session niet bestaat/expired is header location niet in div?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marvin H

Marvin H

03/10/2012 16:55:34
Quote Anchor link
Jullie kennen het probleem vast wel, je maakt een login systeem en controleert op elke php pagina waarvoor je ingelogd moet zijn of bepaalde sessies nog actief zijn, zo niet, dan redirecten header(location: ); naar de login pagina.

Nu is het zo dat als mijn sessie is verlopen, vanwege inactiviteit en iemand klikt een link aan wat een stukje AJAX aanroept en de resultaten in een DIV zet, dan verschijnt in deze DIV het login formulier, echter wil ik dat als de sessie is verlopen dat de gehele pagina redirect...

Hoe dit te doen?
 
PHP hulp

PHP hulp

28/03/2024 22:34:57
 
Cake Masher

Cake Masher

03/10/2012 18:03:07
Quote Anchor link
Kan je in dat geval niet beter kijken of je de verwachte resultaten kloppen? Zo niet, redirect je via javascript de pagina.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
window.href = '';

(als ik me niet vergis).
 
Nick Dijkstra

Nick Dijkstra

03/10/2012 18:50:05
Quote Anchor link
volgens mij is het:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
window.location = '';
 
Chris -

Chris -

03/10/2012 20:03:15
Quote Anchor link
Je kan er ook voor kiezen om een timer van een minuut ofzo te doen. Dan heb je twee mogelijkheden, de sessie levend houden, of juist kijken of de laatste actie meer dan xxx aantal seconden geleden is. Zoja, dan geef je dat als resultaat terug.

Da's handiger dan dat in de functie te doen die de pagina laad, omdat hij op deze manier kan redirecten wanneer die tijd lang geleden is.

Voor de duidelijkheid, bij het laden van een pagina moet je die timer weer resetten via de sessie he ;-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/10/2012 01:06:32
Quote Anchor link
Als je je ajax pagina's alleen vanuit ajax benaderd en niet als 'gewone pagina' dan kun je voor de ajax pagina's het redirecten er uit laten en in plaats daar van een standaard foutmelding echo-en. Vervolgens is het niet moeilijk om in javascript dmv een if statement de xmlhttp.responseText te testen op die foutmelding.

voorbeeldje?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
  session_start();
  if(!isset($_SESSION['username'])) {
    echo "session timeout";
    exit();
  }

?>


javascript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function Posthttp(target, url, data) {
    var
xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
      }
else {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

    document.getElementById(target).innerHTML="loading...";
    xmlhttp.onreadystatechange=function() {
          if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            if(xmlhttp.responseText == 'session timeout')
                window.location = 'login.php';
            else
                document.getElementById(target).innerHTML=xmlhttp.responseText;
        }
      }

    xmlhttp.open('POST',url,false);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send(data);
}


?>


groeten Frank
Gewijzigd op 04/10/2012 01:08:07 door Frank Nietbelangrijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.