2012-12-14 82 views
1

我想拒絕訪問特定目錄的訪問者,如果他們沒有登錄。 並將它們重定向到「您未登錄」.html文件。htaccess拒絕訪問目錄如果註銷(使用php檢查)

我怎樣才能做到這一點?如果註銷,是否有某種方法可以用PHP編輯.htaccess?

+1

阿帕奇沒有你的「登陸」狀況的信息,除非你使用HTTP級身份驗證(例如「基礎」)。你可以檢查會話cookie的存在,但這幾乎沒有用,因爲apache無法讀取PHP會話來查看該會話是否「登錄」。 –

+0

我不會這樣做'.htaccess' - 我懷疑這是可能的,除非使用Apache AUTH,所以我會去檢查該用戶是否登錄在該具體頁面上,如果沒有重定向他(用PHP)到403錯誤頁面... – shadyyx

+0

此信息可能有幫助 [http://stackoverflow.com/questions/3166792/password-protected-directory-and-files-in-php][1] [1]:http://stackoverflow.com/questions/3166792/password-protected-directory-and-files-in-php – Kasun

回答

1

你不能用Apache做到這一點。

實現此目的的一種方法是通過重寫規則將每個請求轉發到php腳本並通過此PHP腳本提供文件。

但是這很重,如果你的文件很大,這不是一個好的解決方案。

也許你應該看起來像Apache dbd auth mod(如果你有你的用戶在數據庫中)。但是,再次,這不應該是Apache的工作,因爲它不擅長。

0

這不是Apache的工作,但PHP可以爲你做。

在僅公開頁面上,不定義會話參數。

在公共登錄頁面上,定義所有會話參數。

在一個僅供會員頁面,是啓動一個會話:

<?php 

    session_start(); 

    // Assuming variables have been initally defined 
    if(isset($_SESSION['username']) AND isset($_SESSION['password'])) 
    { 
     echo 'You are now logged in'; 
      header('Location: sosecretpage.php'); 
    } 

    else 
    { 
     echo 'You are not logged in. You dont have access to this page'; 
    } 
    ?>