2011-06-28 25 views
2

建立一個網頁,是隻成員訪問時,是按照正確的PHP:成員只有面積

<?php if($_SESSION['logged_in']): ?> 

// all code for page here 

<?php endif; ?> 

是否所有這些兩條線之間我的HTML/PHP的坐的?

有沒有其他方法可以做得更好?

我應該知道哪些安全問題?

我的內容不是特別敏感,但可能在未來。

+0

正確是一個相對術語 – Fatmuemoo

回答

6

說起嚴格編寫清晰的代碼,爲什麼不來講:

<?php 
if (!$_SESSION['logged_in']) { 
    header("Location: login.php"); 
    exit; 
} 
?> 

<!-- // all code for page here --> 

或同級。

+0

添加'exit;'有什麼好處嗎?誠實的問題,而不是挑剔的錯誤。 – shanethehat

+1

@shanethehat,因爲它在文檔中:http://php.net/manual/en/function.header.php –

+1

@shanethehat是的,因爲如果你不添加'exit;',剩下的頁面(應該僅適用於會員)將成爲每個人的迴應的一部分。的確,任何瀏覽器都會自動遵循「位置」標題而不顯示對用戶的響應,但有些方法不會重定向用戶,因此敏感信息可能會暴露。 –

2

一個更好的辦法可能是:

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

然後你的頁面可能會繼續正常,誰不登錄的用戶將獲得登錄頁面來代替。

編輯:根據標題文檔添加了所需的exit調用。

1

你當然可以可以把你所有的HTML/PHP代碼放在條件之間,如果你喜歡。請注意,如果您這樣做,未經身份驗證的用戶在瀏覽頁面時不會看到任何內容。您可能希望將設計元素置於條件之外,或者至少在endif之前使用else:

0
<?php 
a = checksession(args); //your own function for checking session 
if(!a) 
    header("Location: 401.shtml"); //This can contain advisory regarding login 
?>  

這將位於頁面的頂部,您可以自行決定。