【发布时间】:2012-10-31 07:24:52
【问题描述】:
我有这个项目:
在索引中,我使用以下代码检查 url:
if( isset( $_GET['url'] ) ) {
if( file_exists( 'classes/layout/'.$_GET['url'].'.php' ) ) {
require_once 'classes/layout/'.$_GET['url'].'.php';
}
}
在我的 .htacces 中:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*?)$ index.php?url=$1&%{QUERY_STRING} [L]
这很好用。何时转到示例:127.0.0.1/test/pages/edit 索引包括 edit.php 但在索引中我使用了一个名为 test.css 的 css 文件,它使整个 html 背景变为红色。
如果我去 127.0.0.1/test/ 我看到整个背景都是红色的。但是当我去 127.0.0.1/test/pages/edit 它是白色的。我检查了 css 文件的 url,我得到了这个:
127.0.0.1/test/ = 127.0.0.1/test/cache/css/test.css
127.0.0.1/test/pages/edit = 127.0.0.1/test/pages/cache/css/test.css
有人知道如何解决这个问题吗?
【问题讨论】:
-
快速旁注:您发布的代码示例会产生潜在的安全问题(路径遍历)。你永远不应该相信用户输入!
-
向我们展示这一行,您是如何将 test.css 包含在您的条目脚本中的。
-
详细说明 Martijn 的观点:如果您将该代码放在公开可用的 Web 服务器上,您将向全世界开放该服务器。您应该将 URL 参数的值与一组预定义的值进行比较,并根据该值加载正确的文件。为此,参数应该具有不同的名称,例如 pageId 或其他名称。然后执行:
if($_GET['pageId'] == 'page1') { require_once('path/to/file'); }.
标签: php html css .htaccess xampp