【问题标题】:PHP isset function won't workPHP isset 函数不起作用
【发布时间】:2016-08-08 14:58:13
【问题描述】:

该功能未触发有谁知道如何使它工作

if ($logged_in_bool == "true") {
    echo "<form action='page-settings.php?name=".$name."' method='POST'>
        <input type='button' name='delete_page' value='Delete Page'>
        </form>
";
} else {


}

$clicked_delete = @$_POST['delete_page'];

if (isset($clicked_delete)) {
    delete_page();
} else {
}

function delete_page() {
    echo "Page deleted";
}


?>

该功能未触发有谁知道如何使其工作

【问题讨论】:

  • 如果@ 被删除会怎样?
  • 为什么不简单地if (isset($_POST['delete_page']))
  • 只有在您提交页面后,IF 才会起作用。另外是你得到一个错误修复它,不要用@错误抑制来隐藏它
  • 另外,如果 $logged_in_bool 实际上是一个布尔值,则应该是 if ($logged_in_bool) {
  • if ($logged_in_bool == "true") 你在这里检查布尔值还是字符串?这里有两种不同的动物。并且不知道这是如何填充?name

标签: php forms function mysqli isset


【解决方案1】:

为什么不使用 type='submit' ?那么,如果您尝试将类型按钮更改为类型提交,如下所示:

<input type='button' name='delete_page' value='Delete Page'>

改为:

<input type='submit' name='delete_page' value='Delete Page'>

【讨论】:

    【解决方案2】:

    在第 3 行中,type=button 应替换为 type=submit,因为 type=button 不会提交表单,除非您使用一些 JavaScript 来执行此操作,当未提交 POST 表单时,$ 中没有任何内容_POST 变量,因此 $_POST['delete_page] 未设置。请参阅下面的修改代码:

    // $name is probably the name of the page to be deleted, not mentioned in the question
    $name = 'example';
    // $logged_in_bool comes from somewhere else not mentioned in this problem
    $logged_in_bool = true;
    if ($logged_in_bool) 
    {
        echo "<form action='page-settings.php?name=" . $name . "' method='POST'>
                  <!-- Input type changed from button to submit -->
                  <input type='submit' name='delete_page' value='Delete Page'>
              </form>";
    }
    // If the $_POST['delete_age'] from the form is available, delete the page
    if (isset($_POST['delete_page'])) {
        delete_page();
    } else { }
    
    function delete_page() {
        echo "Page deleted";
    }
    

    【讨论】:

    • 希望您不要介意添加一些描述的编辑
    • 这里还有很多事情要做,看看所有其他的 cmets
    【解决方案3】:

    正如我的前海报已经告诉你该怎么做,我想告诉你 isset 语句不起作用的原因是变量 $clicked_delete 实际设置,因为你声明它并给它 $_POST 的值['delete_page']。所以你要么使用

    $clicked_deleted = (isset($_POST['deleted_page'])) ? true : false;
    
    if ($clicked_deleted) { /* ... */ }
    

    或者你可以使用空函数(我推荐第一个解决方案)

    if (!empty($_POST['deleted_page'])) { /* ... */ }
    

    【讨论】:

    • 不,@ 不需要 emptyNo warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false..
    • 感谢您的澄清,我不再确定了,因为我不经常使用空函数。编辑了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多