2013-10-11 255 views
-1

我遵循許多在線指南之一來創建使用PHP和MySQL的登錄系統。它工作正常;您必須先登錄,然後重定向到/private目錄。裏面有一個index.php文件,該文件必須檢查您是否已通過身份驗證,以防止某人直接瀏覽/private目錄。如果你不是,你會被重定向回登錄屏幕。但是,如果您瀏覽到/私人內部的任何其他文件或目錄(例如/private/myprivatefile.html),即使您未登錄,也不會重定向。請問您能幫助我嗎?PHP + MySQL登錄系統

+0

你的問題是什麼? – Ibu

+4

您必須檢查用戶是否已登錄到所有頁面的專用區域。 –

+2

1.我們需要查看代碼示例以充分協助。 2.將驗證用戶的檢查移至可包含在所有私人文件中的外部文件。純html文件無法處理php,因此需要將其更改爲PHP文件。 –

回答

2

HTML文件通常不做任何腳本,被認爲是靜態頁面。如果你想保護這些文件,那麼你可能需要使用Web服務器來保護目錄。

另一種方法是將靜態HTML文件移動到Web服務器無法訪問的目錄中,並使用PHP檢索HTML文件的比賽。這樣,您的PHP腳本現在總是在請求靜態內容時運行。例如,你會鏈接到靜態內容,如:

/private/index.php?file=myprivatefile.html 

在PHP文件,你會拉從CGI變量文件的文件請求,然後拉動其內容並返回給發出請求的客戶。你會在PHP文件中這樣做:

<?php 
    if(CheckAuthentication()) 
    { 
    $fileName = $_REQUEST['file']; 
    $filePath = '{path to protected files}'; 
    if(is_file($filePath . $fileName)) 
    { 
     readfile(filePath . $fileName); 
    }// Endif check if file exists on server 
    }// Endif Check user authentication 
1

您可能需要使用mod_rewrite將所有請求重定向到PHP腳本,然後在該腳本中根據用戶是否通過身份驗證來處理請求。

這是一個簡化的例子。

的.htaccess

RewriteRule (.*) load.php 

load.php

<?php 

    // include your auth scripts 

    $file = $_SERVER['REQUEST_URI']; 

    // parse $file to extract the requested file 

    if ($authenticated && file_exists($file)) { 
     readfile($file); 
    }