2011-09-26 114 views
0

我有一個HTML頁面,除非登錄成功,否則我不希望它們可用。我的登錄開始會話,但是我不知道如何檢查HTML中的會話,如果會話存在,我想顯示該頁面,如果沒有,我想顯示未經授權的消息。我怎樣才能做到這一點?PHP - 檢查HTML頁面中的會話

+1

你不會在HTML檢查,你會檢查在PHP – mowwwalker

回答

1

你不能在HTML中檢查會話,你必須在PHP中進行。根據您的頁面是如何使用PHP構建的,你可以嘗試把這樣的事情在你的HTML文件的頂部:

<?php 
if (!isset($_SESSION['my_login_var'])) { 
    echo 'Unauthorised'; 
    exit(); 
} 
?> 

但你會好得多在PHP代碼中做這個較早,其中您可以使用header function將用戶發送到正確的403頁面。

UPDATE

通常是PHP做一些處理,輸出前的HTML和頭被髮送到連接的客戶端,讓你想要的輸出發生之前發送403頭。這可以在構建HTML之前運行的包含PHP文件中,或者如果在腳本到達該點之前沒有輸出其他內容,則甚至在HTML文件本身中。

你可以做一個小的調整,上面的代碼發送403頭和「正確」拒絕訪問的頁面:

<?php 
if (!isset($_SESSION['my_login_var'])) { 
    header('HTTP/1.1 403 Forbidden'); 
    exit(); 
} 
?> 
+0

但是,如果我這樣做了,是不是本質上不會發布HTML頁面,這可以在不登錄的情況下輕鬆訪問? – mino

+0

它會如果不是[exit()函數](http://php.net/manual/en/function.exit.php)。這終止了腳本處理,所以如果滿足'if'語句中的條件,那麼您的HTML將永遠不會顯示。 – Clive

+0

這很有道理 - 你能否解釋一下你描述的替代方法?謝謝。 – mino

0

你將需要查看PHP會話。有關PHP session_start()文檔,請參見http://us.php.net/manual/en/function.session-start.php。基本上你需要做session_start()。如果登錄成功,請設置會話變量,如$_SESSION['logged_in'] = true;。然後根據結果在頁面上執行一些邏輯並重定向/顯示消息。

如果您有問題,您應該嘗試一些並回過頭來問一個更具體的問題。