У меня есть следующий PHP-код, который должен загружать данные из CSS-файла в переменную, искать цвет фона старого тела, заменять его цветом из представленной формы, сохранять файл CSS и, наконец, обновлять цвет в база данных. Проблема в том, что str_replace не заменяет ничего.Почему str_replace не заменяет эту строку?
Вот мой PHP код (хранится в "процессоров/save_program_settings.php"):
<?php
require("../security.php");
$institution_name = mysql_real_escape_string($_POST['institution_name']);
$staff_role_title = mysql_real_escape_string($_POST['staff_role_title']);
$program_location = mysql_real_escape_string($_POST['program_location']);
$background_colour = mysql_real_escape_string($_POST['background_colour']);
$bar_border_colour = mysql_real_escape_string($_POST['bar_border_colour']);
$title_colour = mysql_real_escape_string($_POST['title_colour']);
$url = $global_variables['program_location'];
$data_background = mysql_query("SELECT * FROM sents_global_variables WHERE name='background_colour'") or die(mysql_error());
$background_output = mysql_fetch_array($data_background);
$css = file_get_contents($url.'/default.css');
$str = "body { background-color: #".$background_output['data']."; }";
$str2 = "body { background-color: #".$background_colour."; }";
$css2 = str_replace($str, $str2, $css);
unlink('../default.css');
file_put_contents('../default.css', $css2);
mysql_query("UPDATE sents_global_variables SET data='{$institution_name}' WHERE name='institution_name'") or die(mysql_error());
mysql_query("UPDATE sents_global_variables SET data='{$staff_role_title}' WHERE name='role_title'") or die(mysql_error());
mysql_query("UPDATE sents_global_variables SET data='{$program_location}' WHERE name='program_location'") or die(mysql_error());
mysql_query("UPDATE sents_global_variables SET data='{$background_colour}' WHERE name='background_colour'") or die(mysql_error());
mysql_query("UPDATE sents_global_variables SET data='{$bar_border_colour}' WHERE name='bar_border_colour'") or die(mysql_error());
mysql_query("UPDATE sents_global_variables SET data='{$title_colour}' WHERE name='title_colour'") or die(mysql_error());
header('Location: '.$url.'/pages/start.php?message=program_settings_saved');
?>
Вот мой CSS (хранится в "default.css"):
@charset "utf-8";
/* CSS Document */
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #000;
}
body {
background-color: #CCCCFF;
}
.main_table th {
background:#003399;
font-size:24px;
color:#FFFFFF;
}
.main_table {
background:#FFF;
border:#003399 solid 1px;
}
.subtitle {
font-size:20px;
}
input#login_username, input#login_password {
height:30px;
width:300px;
font-size:24px;
}
input#login_submit {
height:30px;
width:150px;
font-size:16px;
}
.timetable_cell_lesson {
width:100px;
font-size:10px;
}
.timetable_cell_tutorial_a, .timetable_cell_tutorial_b, .timetable_cell_break, .timetable_cell_lunch {
width:100px;
background:#999;
font-size:10px;
}
I «ве выполняются некоторые проверки, используя следующий код в PHP файл:
echo $css . "<br><br>" . $str . "<br><br>" . $str2 . "<br><br>" . $css2; exit;
И это выводит (как вы можете видеть, что это ничего не меняется в CSS):
@charset "utf-8"; /* CSS Document */ body,td,th { font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000; } body { background-color: #CCCCFF; } .main_table th { background:#003399; font-size:24px; color:#FFFFFF; } .main_table { background:#FFF; border:#003399 solid 1px; } .subtitle { font-size:20px; } input#login_username, input#login_password { height:30px; width:300px; font-size:24px; } input#login_submit { height:30px; width:150px; font-size:16px; } .timetable_cell_lesson { width:100px; font-size:10px; } .timetable_cell_tutorial_a, .timetable_cell_tutorial_b, .timetable_cell_break, .timetable_cell_lunch { width:100px; background:#999; font-size:10px; }
body { background-color: #CCCCFF; }
body { background-color: #FF5719; }
@charset "utf-8"; /* CSS Document */ body,td,th { font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000; } body { background-color: #CCCCFF; } .main_table th { background:#003399; font-size:24px; color:#FFFFFF; } .main_table { background:#FFF; border:#003399 solid 1px; } .subtitle { font-size:20px; } input#login_username, input#login_password { height:30px; width:300px; font-size:24px; } input#login_submit { height:30px; width:150px; font-size:16px; } .timetable_cell_lesson { width:100px; font-size:10px; } .timetable_cell_tutorial_a, .timetable_cell_tutorial_b, .timetable_cell_break, .timetable_cell_lunch { width:100px; background:#999; font-size:10px; }
Вместо того чтобы проходить через все эти хлопоты, почему бы не просто установить заголовок для css, и сделать css динамическим? Btw mysql_ * устарел. Вместо этого используйте mysqli или pdo. – itachi