发生的事情是一切都在加载 url 是 deigned.sytes.net 除了当我点击关于我们或服务或联系时的链接他们看起来像加载但 body.tpl 中的内容没有改变默认.也许您可以帮助我解决为什么链接没有改变的问题。你想要的是这里唯一的 php 文件
我已经为查看 perpose 制作了 phps 文件,但如果您坚持使用它,我将发布所需代码。
designed.sytes.net/index.phps designed.sytes.net/classes/file.class.phps
最佳答案
在 URL 中,您将参数命名为 p
,但在您的 files.class.php
中,您实际上测试了 $_GET['page']
。因此,要么将 URL 更改为使用 page
作为参数,要么将代码更改为:
// in files.class.php instead of if(!isset($_GET['page']))
if(!isset($_GET['p'])){
// your code here...
} else {
// ...
}
在您的原始代码中,由于 $_GET['page']
不存在,它始终显示索引页。
另一件对我来说很奇怪的事情如下(但也许这正是您设置它的方式):
if(file_exists($_GET['page'].'.txt')){
// and lets include that then:
ob_start();
include("contents/". $_GET['page'] . '.php');
$content = ob_get_contents();
ob_end_clean();
}
您首先检查文本文件是否是about.txt
存在,但包含一个 PHP 文件 contents/about.php
。这是故意的吗?如果文本文件存在,PHP 是否总是存在?
更新:
还要确保您正确检查了从 $_GET['page']
获得的值,或者您最终如何调用它。
例如。此调用 http://designed.sytes.net/index.php?page=../index
似乎会杀死您的服务器(抱歉,这是无意的:( )
更新 2:
为了提供“某种”安全性,您可以检查 $_GET['page']
是否是预定义值之一,而不是检查是否存在具有此名称的文件。例如:
$valid_pages = array('home', 'about', 'services', 'contact');
if(isset($_GET['page']) && in_array($_GET['page'], $valid_pages) {
// include page here
}
else {
// redirect to home page
}
这确保 $_GET['page']
不是像 ../index
这样的相对路径形式。如果它不是 $valid_pages
中的那些值之一,您将重定向到主页。
关于php - 我不知道怎么调用它 php/css 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557556/