Mam problem z zablokowaniem strony z sesją ORAZ muszę przekierować ją do login.php jeśli nie jestem zalogowany

To jest scenariusz, który mam i wypróbowałem wiele z nich i jakoś żaden z nich nie działa

<?PHP
include("include/session.php");
?>

<?PHP
if(isset($_SESSION['logged_in'])){
   unset($_SESSION['logged_in']);
else
{
    header ("location: login.php"); 
}

?>

<?PHP
if($session->logged_in){
?>

Ten kod kiedyś działał, ale nie przekierowywał mnie do login.php

To jest kod na stronie głównej i każdej podstronie, na której strona jest zablokowana, więc próba dostępu do niej powinna przekierować do login.php

Jakieś sugestie?

0
Ingþór Ingólfsson 26 luty 2012, 20:56

2 odpowiedzi

Najlepsza odpowiedź

Albo jest kilka rzeczy nie tak z twoim kodem, albo źle rozumiem pytanie_

  • if(isset($_SESSION['logged_in'])){ kończy się nawiasem niezrównoważonym
  • Dlaczego unset() jesteś zalogowany, jeśli odczytałeś go z sesji?
  • czy if($session->logged_in) to to samo co if(isset($_SESSION['logged_in']))?

W każdym razie to, co sugeruję, to

  • Zmień header ("location: login.php"); na header ("Location: login.php");, niektóre przeglądarki mogą być wybredne z wersalikami
  • Zmniejsz bałagan do

,

<?php
include("include/session.php");
if(isset($_SESSION['logged_in']))
{
?>

<!-- whatever you wanna do -->


<?php
}
else
{
    header ("Location: login.php"); 
    exit;
}
?>

I upewnij się, że w include/session.php nic (zwłaszcza żadnych łamań linii lub białych znaków) nie jest wyprowadzane

2
Eugen Rieck 26 luty 2012, 21:22

Upewnij się, że login.php jest na ścieżce; czy jest w tym samym folderze?

Nie powinieneś musieć usuwać ustawienia logged_in.

W każdym razie, jeśli to nie rozwiąże problemu, opublikuj pełne session.php, a przyjrzymy się temu.

0
Mikulas Dite 26 luty 2012, 21:00