2013-04-05 31 views
0

我使用htaccess在我的網站上設置了密碼保護目錄。當我輸入文件夾的URL時,我會得到一個簡單的彈出框,可以輸入我的信息。一切皆好。但是我真正想做的事情是我有一個可以登錄的html/php/mySQL表單,而不是一個彈出框。有沒有辦法做到這一點? 注意:我要保護的目錄有數百個文件。用html表單替換Htaccess彈出框?

我知道如何製作表單,查詢數據庫,我只想用html表單替換彈出式窗體。

+0

問題是保護目錄 – user2246998 2013-04-05 18:58:05

+0

隨着'.htaccess'和'.htpasswd'文件,您將無法登錄類型更改爲一個網頁,除非你再使用PHP或文件訪問另一種語言以及。以這種方式利用'apache security'模式,你將限制你修改它的能力,因爲它是一個簡單的系統。 – Jon 2013-04-05 19:09:14

+0

有一個關於serverfault的類似問題的答案:http://serverfault.com/questions/125579/how-to-secure-a-directory-in-apache-using-a-php-session – barbashov 2013-04-05 19:10:13

回答

1

一個可行的方法...

說你要保護的 「保護」 的目錄。

使用.htaccess,限制通過把

Options -Indexes 

# Block External Access 
deny from all 

.htaccess文件中的「保護」目錄中的所有訪問該目錄。

接下來,使用RewriteRule捕獲所有到達主文件.htaccess文件中「受保護」目錄的URL。例如:

RewriteEngine on 
RewriteRule ^protected/(.*) accessprotected.php?url=$1 

通常情況下,重寫規則應該抓住所有的URL去「保護」目錄,並將它們發送到accessprotected.php頁。

在accessprotected.php頁面上,檢查登錄狀態。

if (isset($_SESSION['LoggedIn'])) { // or something like this 
    /* 
     Here, you should check what file type is being 
     requested and handle this properly. 
    */ 
} else { 
    // put code for login form here 
} 
0

您需要這樣做才能使網站上的任何登錄頁面都將您重定向到初始登錄頁面(如果該用戶未登錄)。此登錄頁面必須是HTML以便進行樣式化。

.htaccess控件是Apache的一個功能,不能用PHP或CSS或類似的東西來設計樣式。他們依靠內置的瀏覽器控件來返回默認的對話框。