我试图找出一种用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>
答案 0 :(得分:3)
首先,你会发生一些卷曲的引用,比如“ ”
和’ ’
这会破坏你的代码(可能使用某种类型的Word处理器软件来编码,使用代码编辑器)。
现在,我不会让直接用户输入,而是使用预设。如果他们进入&#34;我不知道尺寸/颜色会怎么样?!&#34; 作为文字? 考虑一下。
另外,您的第一个条件语句永远不会发生,因为输入没有名称属性来匹配它。
此外,您不应将连字符用于变量分隔符$background-color
。 PHP会看到&#34;背景 MINUS 颜色&#34;。
$font-size
也是如此,PHP会将其翻译为&#34; font MINUS size&#34;。改为使用下划线作为分隔符。
我要做的就是使用<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>
选择&#34; Black&#34;和&#34; 10 pt。&#34;从选择中,在USERNAME.css中生成以下内容:
body{background-color:#000000; font-size:10pt;}
您现在的代码(将引号改为常规引号)产生以下内容:
body{background-color:greenfont-size:5;}
这不是有效的CSS。