You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP获取用户输入的颜色值并设置为页面背景色

现有代码问题梳理
  • readline() 仅适用于PHP命令行(CLI)运行场景,无法在网页服务环境中获取用户输入
  • CSS背景色属性标准写法为background-color(美式拼写,非英式colour,部分浏览器虽兼容但不符合通用规范)
  • 字符串拼接存在引号转义错误,会直接导致HTML语法失效
  • 未做任何输入校验就直接输出用户提交内容,存在严重的XSS注入风险
  • 仅输出了div标签的开头片段,没有闭合标签,也没有将背景色作用到整个页面的body元素上,不符合需求
网页场景实现方案(主流使用场景)

网页环境下通常通过HTML表单收集用户输入,PHP接收参数后渲染页面样式,完整可运行代码如下:

<?php
// 初始化默认背景色为白色
$bgColor = '#ffffff';
// 接收表单提交的颜色参数
if (isset($_POST['bg_color'])) {
    $inputColor = trim($_POST['bg_color']);
    // 正则校验:仅允许合法十六进制颜色值传入,避免非法输入
    if (preg_match('/^#([a-f0-9]{3}|[a-f0-9]{6})$/i', $inputColor)) {
        $bgColor = $inputColor;
    }
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>背景色设置</title>
    <style>
        /* 把背景色配置到body元素,作用于整个页面 */
        body {
            background-color: <?php echo htmlspecialchars($bgColor); ?>;
        }
    </style>
</head>
<body>
    <form method="post">
        <label>输入背景色(支持十六进制格式,例:#ff0000):</label>
        <!-- 同时提供原生拾色器,降低输入门槛 -->
        <input type="color" name="bg_color" value="<?php echo htmlspecialchars($bgColor); ?>">
        <button type="submit">确认设置</button>
    </form>
</body>
</html>
CLI场景实现方案(仅用于命令行生成静态HTML)

如果你是在命令行环境运行PHP生成静态HTML文件,readline()可以正常使用,修改后的代码如下:

<?php
$color = readline("Enter background: ");
// 校验颜色格式合法性
if (preg_match('/^#([a-f0-9]{3}|[a-f0-9]{6})$/i', $color)) {
    echo <<<HTML
<!DOCTYPE html>
<html>
<head>
    <style>
        body {
            background-color: {$color};
        }
    </style>
</head>
<body></body>
</html>
HTML;
} else {
    echo "输入的颜色格式不合法,请输入标准十六进制颜色值";
}
?>

内容的提问来源于stack exchange,提问作者Happy coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:09:01