一尘不染

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

php

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

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

如果我输入“ Jonathan”作为用户名,则按预期将其返回给我。但是,如果我输入“ Big Ted”,则提交表格时,只会重复返回“ Big”。

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


阅读 335

收藏
2020-05-29

共1个答案

一尘不染

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

<input value=Big Ted>

而是这个

<input value="Big Ted">

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

开球示例:

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