我的系统中有12个css文件,每当用户想要更改样式时我都会重命名。我将当前样式存储在数据库中,并将style.css重命名为样式$Color
。css,然后将样式$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到数据库。也许重命名太快了?或者我应该抓住$Color
值的每个ifs(有12个)信息?
答案 0 :(得分:0)
我怀疑在开始重命名文件之前$Color
偶尔没有设置,您是否验证了查询是否完成并在运行您发布的代码块之前返回结果?
更好的想法是,不是不断重命名文件,而只是更改您在页面上输出的<link>
标记中的文件名?这样你就不用担心重命名过程会侧身,或者新的style.css不会覆盖客户端缓存中的旧style.css。
我怀疑你没有充分利用CSS继承,因为你使用的是'style.css'的通用文件名。一个更好的方法是:
<? $color = 'blue'; ?>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="theme.<?= $color ?>.css">
</head>
包含与布局相关的指令和默认颜色,例如:
body {
font-family: Sans;
background-color: grey;
}
#container {
width: 900px;
margin: 0px 20px;
background-color: white;
}
仅包含与颜色相关的指令以覆盖之前定义的指令,例如:
body {
background-color: blue;
}
#container {
background-color: purple;
}