首页 > 解决方案 > isset($_GET(var)) 为真,即使 var 为空或未定义

问题描述

我正在向 amisset()语句发送多个未设置的变量,但结果是正确的。

所以我有一个表单,我通过一个监听器发送数据,同时我将变量打印到 Web 控制台

  formQuote.addEventListener('submit', (event) => {
    event.preventDefault();
    fromDate = formQuote.elements["fromDate"].value;
    toDate = formQuote.elements["toDate"].value;
    apptmnt = $('input[name="apptmnt"]:checked').val();
            
    console.log(fromDate);
    console.log(toDate);
    console.log(apptmnt);

    $('#priceDisplay').load('forms/quote.php?fromDate=' + fromDate + '&toDate=' + toDate + '&apptmnt=' + apptmnt);

由于我没有输入任何内容,控制台在单击提交时显示 2 个空行(fromDate、toDate)和未定义。数据由 php 文件捕获

if (isset($_GET['fromDate'], $_GET['toDate'], $_GET['apptmnt'])) {
    echo 'true';
}
else {
    echo 'false'; 
}

作为回报,我看到了true!?

我对文档的理解是,仅当所有参数都为真时 isset 才返回真,因此isset($a, $b)isset($a)*isset($b)

有什么想法会导致这种情况吗?

标签: phphttprequest

解决方案


isset示例代码显示和之间的区别empty

<?php
$a = array('blank'=>'');
var_dump(isset($a['blank']));  // bool(true)
var_dump(!empty($a['blank'])); // bool(false)

推荐阅读