如何根据网址

时间:2015-06-04 23:12:40

标签: php html css

我有一个网站,我希望用户能够更改背景图像和其他一些CSS元素。我尝试这样做的方法是拥有多个html页面,用户可以通过下拉列表更改并重新加载页面。

示例:

href 1 = index.html

href 2 = red.html

href 3 = blue.html

每个页面都相同,都指向相同的样式表(style.php),但我希望链接的样式表元素根据用户选择的URL进行更改。

所以style.php就像这样开始

<?php
    header("Content-type: text/css; charset: UTF-8");
    include 'blue.php';
?>

body {
    background: url(../images/backgrounds/<?php echo $background; ?>.jpg) no-repeat;
    background-attachment: fixed;
} 

每个html页面都有一个匹配的.php页面,用于定义背景的每个变量。

所以我需要的是一种选择包括&#39; blue.php&#39;如果用户在blue.html上。我可以使用不同的样式表,但在改变CSS时会很麻烦。

有基于url的php案例吗?

3 个答案:

答案 0 :(得分:1)

假设您有三个主题:

  1. 热(红色)
  2. 冷(蓝色)
  3. 中立(默认)
  4. 为CSS中的每个创建一个类和主题。 E.g

    body.hot
    {
        /*Set Base Theme details here, including background*/
    }
    
    body.hot p 
    {
       /*Styles for hot paragraphs*/
    }
    
    /*etc*/
    
    
    body.cold
    {
        /*Set Base Theme details here, including background*/
    }
    
    body.cold p 
    {
       /*Styles for cold paragraphs*/
    }
    
    /*etc*/
    

    现在使用会话变量来保存用户选择,然后根据需要向body标签添加一个类:

    $bodyClass = "";
    switch($_SESSION['bodyClass']) {
    case "hot":
    
    break;
    case "cold":
       $bodyClass= "class='cold'";
    break;
    default:
      $bodyClass = "";
    }
    

    现在将其插入body tag

    <body <?=$bodyClass ?> >
    

答案 1 :(得分:0)

为什么不使用$_SESSION变量作为用户的背景选择而不是拥有多个HTML页面?这样,您可以避免重复代码。

如果您想尝试这条路线,可以在样式表中include switch.php代替include blue.php,其中switch.php检查要应用的背景:

<?php
// switch.php
switch($_SESSION['background']) {
case "red":
  // apply red background
break;
case "yellow":
  // apply yellow background
break;
default:
  // apply blue background
}
?>

答案 2 :(得分:0)

我有一个网站,用户可以编辑颜色/字体大小和字体类型,我将数据保存在我的数据库中。

我的网站中只有可编辑的元素位于一个名为“style.php”的php中,如下所示(没有标题或任何内容):

    .main-header{ background: none repeat scroll 0% 0% <?php echo $edge_background ?> }

    .sub-menu .arrow{ border-bottom: 9px solid <?php echo $edge_background ?> }

在我的标题中,我有一个sql,用于检查用户是否在我的数据库中有任何值,如果是,则包含该文件。

<head>
<!-- your stuff -->
<?php
    //after sql check with results
    $edge_background = "my value";
    $color2 = "my value";
?>
<style type="text/css">
    <?php include('styles.php') ?>
</style>
</head>

我不知道这是不是最好的方法,但工作正常,不需要创建大量的文件。

在您的情况下,值将随着网址而变化。您可以查看网址,然后使用$_SERVER['SERVER_NAME']$_SERVER['REQUEST_URI']

为您的样式添加值