我正试图找到一种用php创建自定义css文件的方法。
我的目标是用户可以为我的网站创建自己的外观。我认为用户会填写一个表格,然后使用fopen、fwrite和fclose。这就是我的想法。
我是PHP的新手,所以我不确定这是否是一条路。如果你能给我一些反馈,我将不胜感激。也许你知道更好的方法?
<?php
if(isset($_POST['submit'])){
$background_color = "background-color:".$_POST['background-color'];
$font_size = "font-size:".$_POST['font-size'].";";
$content = "body{".$background_color.$font_size."}";
$file = fopen("USERNAME.css","w");
fwrite($file,$content);
fclose($file);
};
?>
<form method="post">
background-color: <input type="text" name="background-color"><br>
font-size: <input type="text" name="font-size"><br>
<input type="submit" value="Submit">
</form>
首先,出现了一些花引号,如“ ”
和’ ’
,这将破坏代码(可能使用某种类型的Word处理器软件进行编码,请使用代码编辑器)。
现在,我不允许用户直接输入,而是使用预设。如果他们输入"我不知道尺寸/颜色?!"作为文本怎么办想想。
另外,您的第一个条件语句将永远不会发生,因为输入没有与之匹配的名称属性
此外,对于变量分隔符$background-color
,不应使用连字符。PHP会将其视为"背景MINUS颜色"。
$font-size
也是如此,PHP将其翻译为"fontMINUSsize"。请改用下划线作为分隔符。
在您的位置上,我要做的是使用<select>
中的预设,这就是我在下面使用的示例。您也可以使用单选按钮;选择权在你。
我在这行代码中还发现了另一个错误,它不会在第一个CSS声明的末尾添加分号:
$background-color = "background-color:".$_POST['background-color'];
它需要一个额外的分号(和一个空格,不是关键的):
$background_color = "background-color:".$_POST['background-color']. "; ";
这里有一个你可以使用的重写,我可能会添加一些作品。
<?php
if(isset($_POST['submit'])){
$background_color = "background-color:".$_POST['background-color']. "; ";
$font_size = "font-size:".$_POST['font-size'].";";
$content = "body{".$background_color.$font_size."}";
$file = fopen("USERNAME.css","w");
fwrite($file,$content);
fclose($file);
};
// The semi-colon after your closing brace can be safely omitted.
?>
<form method="post">
<select name="background-color">
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
<option value="#000000">Black</option>
</select>
Font size:
<select name="font-size">
<option value="10pt">10 pt.</option>
<option value="12pt">12 pt.</option>
<option value="14pt">14 pt.</option>
</select>
<input type="submit" value="Submit" name="submit">
</form>
从选择中选择"黑色"answers"10磅"后,在USERNAME.css中生成以下内容:
body{background-color:#000000; font-size:10pt;}
您当前的代码(将花引号改为常规引号)生成了以下内容:
body{background-color:greenfont-size:5;}
这将不是有效的CSS。