在输入html中引用(使用PHP)


Quote inside input html (using PHP)

我有这样的东西(代码简化):

<?php
    $var = 'Read "The Book"';
?>
<input type="text" value="<?php echo $var; ?>" />

问题是,在输入中,它看起来像是打印read,当你查看源代码时,你会发现它有<input type="text" value="Read "The Book"" />,但它不起作用。

我不能简单地用value='<?php echo $var; ?>'替换value="<?php echo $var; ?>",因为$var可以有任何值,如果我这样做,它的值是D'Artagnan,它将尝试打印<input type="text" value='D'Artagnan' />

=(

有什么建议吗?

您应该通过将具有特殊含义的字符转义到它们各自的HTML实体中来净化所有输出。您可以使用htmlspecialchars在html上下文中执行此操作。

<input type="text" value="<?php echo htmlspecialchars($var); ?>" />

因此,有了它,您就可以避免XSS攻击。