从PHP会话填充表单文本输入-简化现有代码



我有一个简单的HTML表单,我正在使用PHP从myfield获取文本值来处理数据。

我正在尝试填充文本输入,如果一个值已经存在于PHP会话中,像这样

if (isset($_SESSION['myfield'])) {
$myfield = filter_var($_SESSION['myfield'], FILTER_SANITIZE_STRING);
} else {
$myfield = ''
}

echo '<input type="text" value="' . $myfield . '">';

这似乎是一个冗长的方法,有没有更好的方法,我可以做到这一点,以减少膨胀。

是一个好的方法来使用三元操作符吗?

这是我能找到的最短的代码:

echo '<input type="text" value="' . ($_SESSION['myfield'] ?? '') . '">';

更多Null合并运算符:https://www.php.net/manual/en/language.operators.comparison.php

对于过滤器变量,您需要在函数内部使用相同的操作符:

echo '<input type="text" value="' . (filter_var($_SESSION['myfield'] ?? '', FILTER_SANITIZE_STRING) : '') . '">';

或者实现一次过滤多个变量的函数:

function filterMySessionVars() {
$myVars = ['myfield1','myfield2',];
foreach($myVars as $v) {
$_SESSION[$v] = filter_var($_SESSION[$v] ?? '', FILTER_SANITIZE_STRING);
}
}
filterMySessionVars();
echo '<input type="text" value="'.$_SESSION['myfield'].'">';

您可以尝试使用一行if,然后将其嵌入行中也许像这样的东西应该工作:

echo '<input type="text" value="' . (isset($_SESSION['myfield'])) ? $_SESSION['myfield'] : '') . '">';

最新更新