2016-11-19 49 views
1

我對php和web很陌生,現在我正在學習有關oop的php以及如何將我的程序分爲每個.php文件中的類。之前,現在我知道PHP程序,我可能有這些文件放到我的根文件夾如何在請求的服務器上保護我的php文件

  1. home.php
  2. about.php
  3. products.php
  4. contact.php

所以,當客戶端請求的任何的在瀏覽器中

http://www.example.com/home.php 
http://www.example.com/about.php 
http://www.example.com/products.php 
http://www.example.com/contact.php 

沒問題,文件將輸出正確的頁面到客戶端。

現在,我有一個問題。我也有在根文件夾等這些文件

  • class1.php
  • class2.php
  • 資源/ myFunctions.php
  • 資源/ otherFunctions.php
  • 如何通過在瀏覽器中輸入類似內容來防止用戶請求這些文件?

    http://www.example.com/resources/myFunctions.php 
    

    ,我已經被加入這一行對他們的每一個文件exit;

    或者說,我知道有一些所謂的.htaccess是Apache的配置文件,它的效果的頂部是思維方式Apache工作的方式。

    現實生活中的應用程序如何解決這個問題?

    +4

    只需將它們放在公共文件夾外。另外,如果你在上面放置'exit;',腳本將停止,並且它不會執行任何操作。 – Qirel

    +1

    無論哪種方式都不重要,如果他們只是類定義。用戶只會看到一個空白頁面。 :) – georoot

    +0

    @Qirel謝謝。你是說當我要購買我的第一臺主機時,他們會給我「公共」文件夾和「私人」文件夾? –

    回答

    2

    你確實會使用任何可用的服務器端配置選項。

    根據您的主機設置方式,您可以修改PHP的包含路徑(http://php.net/manual/en/ini.core.php#ini.include-path)或將各種文檔/目錄限制爲特定的主機/子網/在Apache站點配置(https://httpd.apache.org/docs/2.4/howto/access.html)中無法訪問。

    如果你在共享主機上,通常這種鎖定級別通常是不可能的,所以你堅持使用Apache重寫規則,使用易於處理的文件命名約定(即classFoo.inc。 php和classBar.inc.php),.htaccess文件,並使用FilesMatch指令來阻止對* .inc.php的訪問 - http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess/

    FWIW其他所有條件都相同Apache基金會表示,做的更好/更高效它在服務器端配置與使用.htaccess如果該選項可供您使用。

    1

    實際應用程序經常在項目的根目錄中使用所謂的public/webroot/文件夾,在該文件夾中所有要通過Web請求的文件都駐留在該項目的根目錄中。

    .htaccess文件,然後轉發所有的HTTP請求到該文件夾​​內部URL重寫類似如下:

    RewriteRule ^$ webroot/ [L] # match either nothing (www.mydomain.com) 
    RewriteRule ^(.*)$ webroot/$1 [L] # or anything else (www.mydomain.com/home.php) 
    

    的.htaccess使用正則表達式匹配請求URI(一切都在主機名後的URL)和在這個例子中,以webroot/爲前提。

    www.mydomain.com/home.php變得www.mydomain.com/webroot/home.phpwww.mydomain.com/folder/file.php成爲www.mydomain.com/webroot/folder/file.php

    注:這不會在瀏覽器的URL是可見的。

    正確配置時,放置在此文件夾之外的所有文件都無法通過常規HTTP請求訪問。然而,你的應用程序(你的PHP腳本)仍然可以訪問這些私人文件,因爲PHP在你的服務器上運行,所以它有文件系統訪問這些文件。

    +0

    謝謝...這幫助了我很多 –

    相關問題