包含取决于php的CSS文件包括变量

时间:2017-06-19 17:47:40

标签: php html css

我正在尝试根据浏览器提供的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文件。

非常感谢任何帮助(或者是实现我想要做的更好的方式)。

提前致谢

伊恩

1 个答案:

答案 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;