2012-05-06 38 views
-3

我有一個網站,我想創建一個包含所有用戶日誌的log.txt文件。例如,用戶隨時登錄並註銷。也就是說,用戶登錄和註銷的時間。我可以用數據庫做到這一點,但會有很多行,我不想要它。如果我將log.txt文件放在/logs/log.txt中,那麼將domain.com/log/log.txt寫入地址欄的任何用戶都將看到該文件。我怎樣才能防止這一點。 (我用PHP)如何防止在地址欄中顯示文件?

+5

爲什麼你不想使用數據庫?這正是一個用例;由於數據庫是爲這種情況而設計的,因此「行數太多」沒有意義。 – Venge

+1

呃,將日誌文件寫入可公開訪問的Web根目錄之外的位置? – rdlowrey

+1

你不能用PHP來阻止它。 –

回答

2

確實,您可以使用.htaccess或通過在其他Apache配置位置中放置類似的規則來隱藏網站訪問者的文件。但這種事情不是微不足道的,犯錯誤很容易。從網站訪問者隱藏文件的最佳方式是通過項目的目錄結構。例如:

  • 一個目錄www/包含網站訪問者需要使用瀏覽器直接訪問的所有文件。這將是您的Apache配置中用作我們網站根目錄的目錄。如果瀏覽器不需要獲取文件,它不應該在這裏。
  • 其他目錄,如logs/原木,lib/源代碼,因爲他們不是在網站根目錄(www/)內這是包含在腳本中,config/的設置和配置文件等等,用戶可以不點他們的瀏覽器在這些文件中的任何一個。

如果你在共享主機,他們只給你一個文件夾是你的網站根目錄,那麼你不能這樣做。不過,我不會從這樣的公司購買主機帳戶,因爲有很多東西可以讓您將文件放到網頁根目錄之外。

0

您可以防止你的日誌文件夾HTTP訪問使用包含

deny from all 
+3

更好的是,只要在文檔根目錄之外放置任何'私人'的東西,這使得它自然無法訪問。 –

1

使用與

<Files "log.txt"> 
     order deny,allow 
     deny from all 
     allow from 1.2.3.4 
    </Files> 

一個的.htaccess .htaccess文件其中1.2.3.4是你的IP,如果你想通過網站從你的瀏覽器訪問它。否則,請刪除該行,以便您只能通過FTP或腳本訪問

+2

不是一個好主意。如果某些內容不可訪問,則不應位於文檔根目錄內。 Apache配置很容易搞砸,這樣做會暴露文件。 –

相關問題