在CSS中嵌入PHP

时间:2010-08-26 13:03:26

标签: php css

我正在尝试创建一个可变背景,其中图像会根据一天中的时间而变化。我已经使用过这段代码,但是我在某个地方做了一些事情并没有注意到功能已经崩溃了。有人可以向我解释为什么这不起作用吗?

<html>
<?php

    function day()
    {
        if ( $hour >= 6 && $hour <= 18 )
        {
        return 1;
        } else { return 0; }
    }

?>

<style type="text/css">

body
{

    background-image: url('<?php echo (day() ? 'images/day_sheep.jpg'
                                             : 'images/night_sheep.jpg'); ?>');
    background-position: 50% 50%;
    background-repeat: no-repeat;
    background-color: silver
}

a {text-decoration:none;}
a:link {color:#ff0000;}
a:visited {color:#0000FF;}
a:hover {text-decoration:underline;}

</style>

</html>

2 个答案:

答案 0 :(得分:12)

在您的函数day()中,$hour未设置。它将在数字上下文中被视为0,如果您启用通知报告,您将看到警告您未设置变量的通知。它曾经是一个全局变量吗?您是否删除了设置其值或将其声明为全局的代码?

编辑:另外,在风格方面,我觉得有一个像这样的外部CSS文件比较简洁:

body {
    background-position: 50% 50%;
    background-repeat: no-repeat;
    background-color: silver
}

body.day {
    background-image: url('images/day_sheep.jpg');
}

body.night {
    background-image: url('images/night_sheep.jpg');
}

然后你可以摆脱你的PHP脚本的CSS部分,但包括上面的CSS文件,你只需要有以下内容:

<body class="<?php echo day() ? 'day' : 'night'; ?>">

答案 1 :(得分:1)

你永远不会宣布$ hour是什么。

<html>
<?php
    function day()
    {
        $hour = date('G');
        if ( $hour >= 6 && $hour <= 18 )
        {
        return 1;
        } else { return 0; }
    }

?>
... snip ...