PHP和(isset($ _ POST ['']))问题

时间:2016-06-01 05:55:32

标签: php

如果这个问题重复,我很抱歉,但我没有找到明显的答案。我是的完全新手,善良!当我加载以下代码时,即使我没有按下按钮if(isset($_POST['test'])),它似乎也会运行"test"。我只想在按下" test"时执行代码。按钮。我该如何解决这个问题?

<?php
    if(isset($_POST['update'])) {
        $content=simplexml_load_file("books.xml");
        $value=$content->book->price;
        $sum=$content->book->price;
    }

    if(isset($_POST['test'])) {
        $content=simplexml_load_file("books.xml");
        $value=$content->book->price;
        $content->book->price = $value + 1.0;
        $content->asXML("books.xml");
        $sum=$content->book->price;
    }
?>

<body>
    <form method="post">
        <input type="checkbox" id="i1check1" onchange="toggleDisabled(this.checked)"> Alarm 01
        <input type="text" id="i1text1" name="i1" size="80" maxlength="128" value="<?php echo @$sum;?>"/>
        <input type="submit" id="i1btn1" name="update" value="Update"/>
        <input type="submit" id="i1btn2" name="test" value="Test"/>
    </form>

    <script>
        function toggleDisabled(_checked) {
            document.getElementById('i1text1').disabled = _checked ? false : true;
            document.getElementById('i1btn1').disabled = _checked ? false : true;
        }
    </script>
</body>

2 个答案:

答案 0 :(得分:5)

请尝试此

if(isset($_POST['update']) && $_POST['update'] == "Update"){
    $content=simplexml_load_file("books.xml");
    $value=$content->book->price;
    $sum=$content->book->price;
}

if(isset($_POST['test']) && $_POST['test'] == "Test"){
    $content=simplexml_load_file("books.xml");
    $value=$content->book->price;
    $content->book->price = $value + 1.0;
    $content->asXML("books.xml");
    $sum=$content->book->price;
}

答案 1 :(得分:1)

在您的情况下,您应该使用!empty而不是isset

每当提交表单时,所有表单的名称属性都将在 $ _ POST 数组中收到。无论是否设定都没关系。

您可以使用!空进行过滤,因为它会检查设置+有值。虽然只检查设置

if(!empty($_POST['update'])){ // !empty instead of isset

    $content=simplexml_load_file("books.xml");
    $value=$content->book->price;
    $sum=$content->book->price;

}
if(!empty($_POST['test'])){  // !empty instead of isset

    $content=simplexml_load_file("books.xml");
    $value=$content->book->price;
    $content->book->price = $value + 1.0;
    $content->asXML("books.xml");
    $sum=$content->book->price;
}

建议: - 您已在表单中撰写echo @$sum;。切勿使用 @ 隐藏错误。您应该在开发模式下error_reporting开启而不是这样做。

你应该写下面的声明。

 echo empty($sum) ? '' : $sum;  // ternary operator