【问题标题】:Using Ternary Operator to change an input attribute [duplicate]使用三元运算符更改输入属性[重复]
【发布时间】:2018-10-27 15:16:48
【问题描述】:

我的想法是我在一个表单中有一堆输入,当我发送它(到同一页面)时,我想保留选定的选项值。

这就是我设法使它工作的方法。

<input type="number"  
    <?= isset($_POST['price']) ? 'value="' . $_POST['price'] . '"' : '' ?> 
>

如果之前已经设置了“价格”的结果是输入将是属性

值="123"

是否可以在不连接的情况下编写相同的内容?

我试过了,但 "'$_POST 似乎相互干扰,所以我只是收到 php 错误或只是在页面上写纯文本。

【问题讨论】:

  • 危险:此代码为vulnerable to XSS 用户输入需要转义才能插入到 HTML 文档中!。

标签: php html input attributes ternary-operator


【解决方案1】:

您可以使用 null 合并运算符并在 value 属性中输出您输入的数据:

<input type="number" value="<?= $_POST['price'] ?? '' ?>">

但它不会逃避用户输入,所以你不希望这样。

改为:

<input type="number" value="<?= htmlentities($_POST['price'] ?? '') ?>">

或者:

<input type="number" value=
"<?= isset($_POST['price']) ? htmlentities($_POST['price']) : '' ?>"
>

【讨论】:

  • 危险:此代码是vulnerable to XSS 用户输入需要转义才能插入到 HTML 文档中!。
  • 谢谢,这样好多了。我还没有真正研究过这种漏洞,请您推荐一些资源吗?
猜你喜欢
  • 2015-05-21
  • 2021-04-14
  • 2017-06-04
  • 2015-10-24
  • 2012-02-02
  • 2021-03-31
  • 2018-12-29
  • 2019-07-14
  • 2011-05-05
相关资源
最近更新 更多