PHP表单将不会提交value =“ 0”

在很多帮助下,我创建了一个脚本,可以编辑VPS上的文件.它一直运行很好,但是我有一个问题使我完全困惑.当我需要将文件中的值调整为0时,它将不起作用.除0(value =“ 0”)以外,几乎所有其他值都可以使用(即value =“ 3”).我很困惑我需要让脚本将color =值更改为color = 0我不知道为什么0无效,但是任何其他数字或字母都可以.这是我的代码:

<?php
//Color
    $color = explode("=", trim($contents[1]));

    if(isset($_REQUEST['difficulty_choice'])){
        exec('sed -i '.escapeshellarg('s/color=.*/color='.$_REQUEST['color_choice'].'/g')." /home/user/color.props");
        echo 'Color choice has been updated';
    }

?>


<?php echo $contents[1]; //Color ?>
<form method="get" action="update.php">
    <select name="color_choice">;
        <option value="0" <?php if($color[1] == '0'){?>selected="selected"<?php }?>>Red</option>;
        <option value="1" <?php if($color[1] == '1'){?>selected="selected"<?php }?>>Blue</option>;
        <option value="2" <?php if($color[1] == '2'){?>selected="selected"<?php }?>>Black</option>;
        <option value="3" <?php if($color[1] == '3'){?>selected="selected"<?php }?>>Yellow</option>;
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>

文件内容:

# The color file
color=1

更新:我用isset切换了!empty,它起作用了!

解决方法:

在php中,当$val =“ 0”时,empty($val)的计算结果为true.出乎意料,但这就是php的方式. php docs for empty() give you a list of values considered empty under the “Return Values” section.下面是一些测试脚本来证明这一点:

<?php
$val = "0";
if (empty($val)) {
        echo $val . " is empty!\n";
} else {
        echo $val . " is not empty.\n";
}

$val = "1";
if (empty($val)) {
        echo $val . " is empty!\n";
} else {
        echo $val . " is not empty.\n";
}
?>

输出为:

0 is empty!
1 is not empty.

考虑使用另一种检查,例如===运算符,而不是empty().

上一篇:php – 在表单提交后使用URL中的用户输入重定向


下一篇:javascript – 如何在表单提交到_blank后刷新表单页面?