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

时间:2010-06-20 04:16:14

标签: php html forms

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

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

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

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

5 个答案:

答案 0 :(得分:22)

引用它。否则,空间将成为属性分隔符,空格后的所有内容都将被视为元素属性。右键单击webbrowser中的页面并查看源代码。它看起来不应该像这样(也见语法高亮颜色):

<input value=Big Ted>

而是这个

<input value="Big Ted">

更不用说当某人的名字中有引号时,这仍然会中断(而且您的代码对XSS attacks敏感。)使用htmlspecialchars()

开球示例:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

请注意您的报价用法。

答案 3 :(得分:1)

正如你所看到的那样,不是PHP5甚至是PHP问题 对于想成为PHP用户的人来说,必须具备基本的HTML知识。

使用模板看起来更整洁:

获取数据部分代码:

$username = "";
if isset($_POST['username'])) $username = htmlspecialchars($_POST["username"]);

模板代码:

<input type="text" name="username" value="<?=$username?>">

如果将代码划分为2个部分,则会变得更加可支持且可读

答案 4 :(得分:1)

只需确保将字段放在字段后面,例如:

  <option value="'.$row['name'].'">