0

我的系统中有 12 个 css 文件,每当用户想要更改样式时,我都会重命名它们。我将当前样式存储在数据库中,然后将 style.css 重命名为 style.css,然后$Color将 Style $Requestedcolor.css 重命名为 style.css。这是代码:

if ($_POST['blue'] == "Blue")
{
    if(file_exists('./css/styleblue.css'))
    {
    $old = './css/style.css';
    $new = './css/style'.$Color.'.css';
    $old1 = './css/styleblue.css';
    $new1 = './css/style.css';
    rename($old, $new);
    rename($old1, $new1);
    $newcolor = "blue";
    $idnum = "1";
    mysql_query("UPDATE company SET Color = '$newcolor' WHERE ID = '$idnum'");
    }
}

问题是,我有时(并非总是,发现很难诊断何时以及为什么)最终丢失了一个文件,而系统抓取了一个完全随机的 .css 文件,将其重命名为 style.css 并将正确的 $newcolor 写入数据库. 也许重命名太快了?或者我应该为每一个 ifs(有 12 个)信息获取$Color价值?

4

1 回答 1

0

我有一个偷偷摸摸的怀疑,$Color在您开始重命名文件之前偶尔不会设置,您是否在运行您发布的代码块之前验证您的查询已完成并返回结果?

一个更好的主意是不要不断地重命名文件,而只是更改<link>您在页面上输出的标签中的文件名?这样,您就不必担心重命名过程会发生意外,或者新的 style.css 不会覆盖客户端缓存中的旧 style.css。

我有第二个偷偷摸摸的怀疑,你也没有充分利用 CSS 继承,因为你使用的是通用文件名“style.css”。更好的方法是:

PHP/HTML

<? $color = 'blue'; ?>
<head>
  <link rel="stylesheet" type="text/css" href="style.css">
  <link rel="stylesheet" type="text/css" href="theme.<?= $color ?>.css">
</head>

样式.css

包含与布局相关的指令和默认颜色,例如:

body {
  font-family: Sans;
  background-color: grey;
}

#container {
  width: 900px;
  margin: 0px 20px;
  background-color: white;
}

主题.blue.css

仅包含与颜色相关的指令以覆盖先前定义的指令,例如:

body {
  background-color: blue;
}

#container {
  background-color: purple;
}
于 2013-09-24T16:54:10.067 回答