0

私のシステムには 12 個の css ファイルがあり、ユーザーがスタイルを変更したいときはいつでもファイルの名前を変更しています。現在のスタイルをデータベースに保存し、style.css の名前を style.css に変更し、その直後に Style.css の名前を style.css に$Color変更$Requestedcolorします。コードは次のとおりです。

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 個あります) の情報を値ごとに取得する必要がありますか?

4

1 に答える 1

0

$Colorファイルの名前変更を開始する前に設定されないことがありますが、投稿したコードブロックを実行する前に、クエリが完了して結果を返すことを確認していますか?

<link>ファイルの名前を常に変更する代わりに、ページに出力するタグのファイル名を変更することをお勧めしますか? そうすれば、名前変更プロセスが横向きになることや、新しい style.css がクライアントのキャッシュ内の古い style.css を上書きしないことを心配する必要はありません。

'style.css' という一般的なファイル名を使用していることを考えると、CSS 継承も十分に活用していないのではないかという 2 つ目の疑いがあります。やや良いアプローチは次のとおりです。

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;
}

theme.blue.css

以前に定義されたものをオーバーライドする色関連のディレクティブのみが含まれています。

body {
  background-color: blue;
}

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