2013-11-20 76 views
0

基本上,我目前正在開發某種形式的框架,它將有一個主要的索引文件來控制顯示的頁面,然後我會include文件基於使用.htaccess重寫的URL,因此我的.htaccess看起來像這樣。在PHP中包含一個包含文件

Options +FollowSymlinks -MultiViews 

AddType "text/html; charset=UTF-8" html 
AddType "text/plain; charset=UTF-8" txt 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    # if file not exists 
    RewriteCond %{REQUEST_FILENAME} !-f 

    # if dir not exists  
    RewriteCond %{REQUEST_FILENAME} !-d 

    # avoid 404s of missing assets in our script 
    RewriteCond %{REQUEST_URI} !^.*\.(jpe?g|png|gif|css|js)$ [NC] 

    # core framework url rewriting 
    RewriteRule^index.php [L] 
<IfModule mod_rewrite.c> 

雖然記住,我有這行RewriteRule^index.php [L]我然後使用下列保持我的index.php

define("PAGES", $_SERVER['DOCUMENT_ROOT']."/pages"); 

$uri = explode("/",substr($_SERVER['REQUEST_URI'],1)); 
if((isset($uri[0])) && ($uri[0]!="")) {$page = $uri[0];} else {$page = "login";} 

if(is_file(PAGES."/$page/$page.php")) { 
    include(PAGES."/$page/$page.php"); 
} else { 
    include(PAGES."/error_pages/404.php"); 
} 

這會被視爲足夠安全?還是會提供某種形式的漏洞利用的能力?

+0

這似乎很好很多CMS框架像WP運營商在類似的模式。 – anubhava

+0

感謝您的評論,最好讓其他開發者的觀點 – Curtis

回答

0

更好的解決方案是使用PHP> = 5.3的名稱空間和自動加載功能。您的解決方案必須安全,直到用戶無法在DOCUMENT_ROOT中創建自己的文件,並且應該避免將文件包含在DOCUMENT_ROOT之外。