如何设置 HTML 值属性(带空格)

2022-08-30 20:49:53

当我使用PHP设置HTML表单输入元素的值时,只要我在数据中没有任何空格,它就可以正常工作。

<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />

如果我输入“Jonathan”作为用户名,它会按预期重复给我。但是,如果我输入“Big Ted”,则只有在提交表单时才会重复“Big”。

请注意,变量是正确的;当我使用PHP回显它时,它被设置为“Big Ted”。$_POST["Username"]


答案 1

引用它。否则,空格将变成属性分隔符,空格后面的所有内容都将被视为元素属性。在网页浏览器中右键单击页面并查看源代码。它不应该看起来像这样(另请参阅语法突出显示颜色):

<input value=Big Ted>

而是这个

<input value="Big Ted">

更不用说当某人的名字中有引号时,这仍然会中断(因此你的代码对XSS攻击很敏感)。使用 htmlspecialchars()

开球示例:

<input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">

答案 2
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = '".$_POST["username"]' : "value = ''"; ?> />

您必须用引号包装变量结果,以便浏览器可以知道输入的内容。


推荐