我正在尝试根据浏览器提供的URL包含特定的css文件。
我的网站有以下格式:
标题信息
php include for content
页脚信息
我这样做是因为当我更改标题菜单链接时,我不必更改网站上的每个页面。
php包含的代码如下:
<?php
$page = $_GET['page'];
$pages = array('main', 'contact');
if (!empty($page)) {
if(in_array($page,$pages)) {
$page .= '.php';
include($page);
}
else {
include('404.php');
}
}
else {
include('main.php');
}
?>
网址如下:
index.php?page =例如index.php?page = contact
作为php包含代码的一部分,当页面= ????元素不在它加载页面404.php的数组内,这是一个错误页面。
可以看出,该阵列目前包含两个页面,main(主页内容)和联系人(联系表单)。如果用户试图加载名为test的页面(index.php?page = test),我的网页将显示404页面(但是不加载index.php?page = 404 - 浏览器中的URL保留为index.php?页=测试
我想要实现的是在加载页面= test(或数组中未包含的任何其他页面名称)时加载404.css文件。
有谁知道我将如何实现这一目标?我已经尝试在头文件中编写if语句来加载404.css但是我使用strstr来获取浏览器URL(所以测试,而不是404),因此没有加载正确的css文件。
非常感谢任何帮助(或者是实现我想要做的更好的方式)。
提前致谢
伊恩
答案 0 :(得分:1)
这样做的一个简单方法是使用ob_ * php函数,如bellow:
PHP从ob_start和ob_get_clean函数中获取所有信息,并将它们作为单个变量$ _page_content连接在一起,该变量可以在任何需要的地方使用。
<?php
$page = $_GET['page'];
$pages = array('main', 'contact');
if (!empty($page))
{
if(in_array($page, $pages))
{
ob_start('ob_gzhandler');
?>
<link rel="stylesheet" href="css/<?=$page?>.css" type="text/css">
<?
include($page . '.php');
$_page_content = ob_get_clean();
echo $_page_content;
}
else
{
include('404.php');
}
}
else
{
include('main.php');
}
&GT;