PHP文件重命名出错了

时间:2013-09-24 15:46:18

标签: php

我的系统中有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个)信息?

1 个答案:

答案 0 :(得分: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>

的style.css

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

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

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

theme.blue.css

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

body {
  background-color: blue;
}

#container {
  background-color: purple;
}