【发布时间】:2021-10-20 12:57:13
【问题描述】:
我将多个未设置的变量发送到 isset() 语句,但结果为 true。
所以我有一个表单,我通过监听器发送数据,同时我将变量打印到 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) 相同
有什么想法会导致这种情况吗?
【问题讨论】:
-
您已将参数放入您请求的 URL 中,因此它们已设置。这些参数的 value 可能只是一个空字符串或
undefined,这无关紧要。也许你想去看看isset和empty有什么区别? -
使用
if (!empty($_GET['fromDate']) && !empty($_GET['toDate']) && !empty($_GET['apptmnt'])) {,isset会检查你的url参数中是否存在key。
标签: php httprequest