如何修复由window.history.replaceState引起的php中未定义数组键的警告?[复制]

How to fix a warning about undefined array key in php caused by window.history.replaceState? [duplicate]

提问人:Gibon 提问时间:7/29/2022 最后编辑:BarmarGibon 更新时间:7/29/2022 访问量:1161

问:

我的头标签中有一个 js 代码,以防止弹出有关重新提交表单的窗口。它有效,但它在我的选择输入(排序项目)中导致错误消息。 这是js代码:

if (window.history.replaceState){
  window.history.replaceState(null, null, window.location.href);
}

HTML格式:

<form method="POST" id="form" enctype='multipart/form-data'>
    Sort:
    <select name="Sort" onchange="form.submit();" id="sort">
        
        <optgroup label="Alphabetically">
            <option value="alphabet_p" <?php if($_POST['Sort'] == 'alphabet_p') {echo "selected=selected"; } ?>> 
                A-Z
            </option>

            <option value="alphabet_rev_p" <?php if($_POST['Sort'] == 'alphabet_rev_p') {echo "selected=selected"; } ?>>
                Z-A
            </option>
        </optgroup>
    </select>
</form>

PHP(还有一些其他的东西):

function recipe_list_dishes() {
    $con = mysqli_connect("localhost", "root", "", "cookbook");
    $sort = $_POST["Sort"];

    switch ($sort) {
        case "alphabet_p":
            $sql = "SELECT * FROM product WHERE type = $dish_type ORDER BY name";
        break;
            
        case "alphabet_rev_p":
            $sql = "SELECT * FROM product WHERE type = $dish_type ORDER BY name DESC";
        break;

    }

    mysqli_close($con);
}               

当然,我删除了一些(至少我认为是这样)在这个问题上并不重要的东西。 这是警告消息(它显示在“选择”框中): 警告:第 129 行> A-Z 的 [xampp path] 中未定义的数组键“排序”(第 129 行是 HTML 中的第一个标记)。 没有 js,一切似乎都很好。我不能把它放在页脚旁边的正文标签中,因为它不起作用。 有没有办法解决它?

JavaScript PHP 数组 错误处理 警告

评论

0赞 mickmackusa 7/29/2022
您的查询不安全/不稳定。请阅读准备好的陈述的重要性。相关新闻: stackoverflow.com/q/63523103/2943403

答:

1赞 Barmar 7/29/2022 #1

在不提交表单的情况下加载页面时没有变量。因此,请检查它是否已设置:$_POST

if(isset($_POST['Sort']) && $_POST['Sort'] == 'alphabet_p')

评论

0赞 Gibon 7/29/2022
现在,当我刷新页面时,它会将我的选择标签重置为 AZ(第一个选项):/