2012-09-09 43 views
0

我創建會話變量與每個登錄$ _SESSION ['usr'] & $ _SESSION ['psw']。當我退出,我使用此代碼摧毀它們:管理我的會話

<?php 
session_start(); 
session_destroy(); 
if(count($_SESSION) == 0) 
{ 
$_SESSION=array(); 
session_destroy(); 
} 
header("Location:home.php"); 
?> 

我想要做的是限制一些只對登錄用戶的頁面,所以我試圖用這小小的一段代碼:

<?php if(!$_SESSION['usr']){header('Location:home.php');} ?> 

我不明白爲什麼它不工作,因爲它是完全合理的,但它沒有任何人知道爲什麼?感謝您的幫助...

+2

你問24個問題,但你已經接受了只有52%的人的答案。這是在這個網站上皺起了眉頭 - 人們試圖幫助你,你只是無視他們的工作。 – lanzz

+0

do'session_start(); var_dump($ _ SESSION);'看看有沒有'usr'的密鑰 – dbf

+0

這是var_dump的輸出:array(0){} –

回答

1

您不應該試圖摧毀會議兩次。

它應該是:

<?php 
    session_start(); 
    $_SESSION = array(); 
    //Session Cookie 
    if (ini_get("session.use_cookies")) { 
     $params = session_get_cookie_params(); 
     setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
    ); 
    } 
    session_destroy(); 
?> 

http://php.net/manual/en/function.session-destroy.php

有沒有必要檢查,如果有什麼地方設置。 和檢測大概應該是:

<?php if(!isset($_SESSION['usr'])) { 
    //header() - see below 
} ?> 

而且位置必須是絕對URL(例如http://www.mydomain.com/home.php