2014-01-11 29 views
1

作为一个练习,我正在滚动我自己的CMS以更好地学习php。目前我有我的.htaccess文件设置为将所有URL重定向到index.php页面。解析PHP CMS的URL最安全的方法?

// .htaccess file 
RewriteEngine on 
RewriteRule !\.(js|gif|jpg|png|css)$ index.php 

一旦我在index.php页面,我需要根据请求的URL确定用户应该看到什么内容。例如,如果用户访问了mysite.com/about,那么我将包括文件内容about.php

我的问题是:什么是最安全的方式来解析这个URL的文件值?我想避免用户编写恶意URL,其中包括可以访问我不想显示的私人PHP文件。

+0

名单执行此任务? – SaidbakR

回答

1

您的htaccess与安全性无关。我建议你使用开关的情况下是这样的:

$site = "home"; 
switch(strtolower($_SERVER['REQUEST_URI'])){ 
    case "about": 
    $site = "about"; 
    break; 
    case "contact": 
    $site = "contact"; 
    break; 
} 
include "{$site}.php"; 

也许这样的:

$site = "home"; 
$page = strtolower($_SERVER['REQUEST_URI']); 
switch($page){ 
    case "about": 
    case "contact": 
    $site = $page; 
    break; 
} 
include "{$site}.php"; 

或者无需作出什么是当前的代码,你已经通过允许访问的网页

$path = "pages/"; 
$page = trim(strtolower($_SERVER['REQUEST_URI']),"/"); 
$slashPos = strpos($page, "/"); 
if($slashPos!==false){ 
    $page = substr($page, 0, $slashPos); 
} 
$page = preg_replace("/[^a-z0-9-]/", "", $page); 
if(file_exists("{$path}{$page}.php")){ 
    include "{$path}{$page}.php"; 
}else{ 
    //include "{$path}home.php"; 
} 
+0

这限制了CMS的部分或页面。 – SaidbakR

+0

是的,OP没有说是否有问题 – Jompper