使用文本输入表单在php中更改背景颜色

使用文本输入表单在php中更改背景颜色,php,background-color,Php,Background Color,我编写了一个程序,通过使用文本输入字段的表单更改页面的背景色。我试图为文本字段中写入的任何值分配一个变量 当输入值!=6但是当输入值==6时,它不起作用。我认为当我试图将输入文本字段的值分配给activity1.php文件中的$color时,问题就出现了 activity1.php <?php $color = "color"; if (isset ($_POST["button1"])) { if (strlen($_POST["color"]) == 6) {

我编写了一个程序,通过使用文本输入字段的表单更改页面的背景色。我试图为文本字段中写入的任何值分配一个变量

当输入值
!=6
但是当输入值
==6
时,它不起作用。我认为当我试图将输入文本字段的值分配给
activity1.php
文件中的
$color
时,问题就出现了

activity1.php

<?php
$color = "color";
if (isset ($_POST["button1"])) {
    if (strlen($_POST["color"]) == 6) {
        echo "<body style='background:#$color;'>";
    } elseif (strlen($_POST["color"]) != 6) {
        echo "Please enter a valid 6 digit hex code<body style='background: black; color: white;'><br>";
    }
}
?>

首先,我不建议您尝试什么,因为这可以很容易地用Javascript完成,而且应该用Javascript完成,但正如您所说,您只是在学习,所以这里是您的错误

//First there are 2 body tags which is totally wrong. your php page should be like this
activity.php

<?php
    if (isset ($_POST["button1"]))
     {
       //Checking for lenght and hexa type
       if(ctype_xdigit($_POST["color"]) && (strlen($_POST["color"]) == 6 || strlen($_POST["color"]) == 3)) 
       {
        echo  '<body style=\'background-color:#'.$_POST["color"].';\'>';
       } 
       elseif(!ctype_xdigit($_POST["color"]) || (strlen($_POST["color"]) != 6 && strlen($_POST["color"]) != 3))
       {
        echo "Please enter a valid 6 or 3 digit hex code<br /><body style='background-color: black; color: white;'><br />";
        }
      }
?>
为什么不使用Jquery

您可以在提交时更改背景色

$(document).ready(function()
{
     $("#form").submit(function()
{
    $("body").css({"background-color": "#Code"});
})

})
您可以通过给输入元素一个id和

$("#elem").val();
上面的示例还要求您为表单分配一个ID

为您的代码

尝试:
echo'

正如注释中所暗示的,问题是您正在输出两个body标记。这不是有效的html

为了解决这个问题,我更喜欢使用单独的html和php代码,这样我就可以用php处理html,并且可以清楚地看到我的html代码

body.html:

<body style="background-color:{zBackgroundColor}">
<form action="pageColor.php" method="post">
    Please enter your color code: <input type="submit" id="button1" name="button1" />
    <p>{zErrorContainer}</p>
    <input type="submit" id="button1" name="button1">
</form>
</body>
我喜欢使用替换html中的值。还有其他函数可以替换字符串中的内容,例如,它功能更强大、速度更快,但约束性更强、更复杂

$html= strtr(file_get_contents('body.html'), $data);
echo $html;
$data
中包含的值将替换模板中的占位符。{z}括号很重要,因为
strtr()
将用它的值替换与数组的任何键匹配的任何字符串。将这些括号中的“z”字母替换为不需要的字符串的可能性降至最低


但是,直接访问
$\u POST
中的值有些危险,因为它无法控制发送到服务器的内容。至少考虑使用< /P> 在这个循环之后

if (strlen($_POST["color"]) == 6){
您没有将$color值指定给$\u POST['color']。因此,可变颜色值将保留为“颜色”。当您在样式设置中使用时,“背景:#颜色”
无效

$color = "color";
if (isset ($_POST["button1"])){
    if (strlen($_POST["color"]) == 6){
        // $color value is color here. '#color' is not a proper hex bg code. 
        echo  "<body style='background:#$color;'>";
    }elseif(strlen($_POST["color"]) != 6){
    echo "Please enter a valid 6 digit hex code<body style='background: black; color: white;'><br>";
    }
}
$color=“color”;
如果(isset($_POST[“button1”])){
如果(strlen($_POST[“color”])==6){
//$color值在此为color。“#color”不是正确的十六进制bg代码。
回声“;
}elseif(strlen($_POST[“color”])!=6){
echo“请输入有效的6位十六进制代码
”; } }
尝试将此更改为

$color = "color";
if (isset ($_POST["button1"])){
    if (strlen($_POST["color"]) == 6){
        $color=$_POST["color"];
        echo  "<body style='background:#$color;'>";
    }elseif(strlen($_POST["color"]) != 6){
    echo "Please enter a valid 6 digit hex code<body style='background: black; color: white;'><br>";
    }
}
$color=“color”;
如果(isset($_POST[“button1”])){
如果(strlen($_POST[“color”])==6){
$color=$_POST[“color”];
回声“;
}elseif(strlen($_POST[“color”])!=6){
echo“请输入有效的6位十六进制代码
”; } }
页面中的两个
正文
标记是错误的。请说明为什么有人给出了-1。在您的代码中,$color值始终为“红色”。因此,无论用户输入什么,背景都将始终为红色。您没有使用发布值$\u POST['color']哈哈哈。如果你嫉妒的话,你可以在发帖前检查一下你的答案。你的答案很好,而且效果也不错。我只是在学习使用这个网站,我不知道一个网站可以被标记为上下。我本想把它标记为正确的。我会尽快把它修好。我再次表示歉意。
$color = filter_input(\INPUT_POST, 'color', \FILTER_SANITIZE_STRING);
if (strlen($_POST["color"]) == 6){
$color = "color";
if (isset ($_POST["button1"])){
    if (strlen($_POST["color"]) == 6){
        // $color value is color here. '#color' is not a proper hex bg code. 
        echo  "<body style='background:#$color;'>";
    }elseif(strlen($_POST["color"]) != 6){
    echo "Please enter a valid 6 digit hex code<body style='background: black; color: white;'><br>";
    }
}
$color = "color";
if (isset ($_POST["button1"])){
    if (strlen($_POST["color"]) == 6){
        $color=$_POST["color"];
        echo  "<body style='background:#$color;'>";
    }elseif(strlen($_POST["color"]) != 6){
    echo "Please enter a valid 6 digit hex code<body style='background: black; color: white;'><br>";
    }
}