2011-06-20 32 views
0

我有一个变量,它是像人品问题PHP和HTML

$ NAME =” 18“液晶电视“;

当我尝试在HTML的输入使用它,它不显示“

我该怎么办?

+1

我们需要了解您如何试图在HTML中展示它。我的猜测是双引号提前关闭标签。 – cusimar9

+0

它不显示它在哪里?你在哪里试图访问用户输入的值,在客户端的javascript中,还是在服务器端处理你的表单? – kinakuta

回答

4

使用htmlentitieshtmlspecialchars

htmlentities将尽一切HTML标签。

htmlspecialchars将只是做:

& " ' < > 

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

如果你这样做:

<input type="text" value="<?php echo $text;?>" /> 

其主要做:

value="18 " LCD TV" 

所以" 18后关闭值属性

1

当你需要转义输出特殊字符(& ' " < >)在HTML,1个方法是这样做的:

$name = htmlentities(' 18 " LCD TV ');

4

不使用htmlspecialchars可能会导致跨站脚本攻击(搜索XSS)。使用此:

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

这将HTML编码的报价,<,>,并在对应的HTML实体& simbols。见htmlspecialcharshtmlentities

附录:这样做的理由是相同的概念,以防止SQL注入或壳牌执行代码:“过滤输入,转义输出”。每种介质都有特殊字符,在该介质中无法正常输出。对于XML/HTML,它们是',',<,>和&。对于SQL,它们是',“,\,\ 0等等。而对于Shell来说,他们是;,',',`,$等等。每当你启动对数据库的查询,在你的html中输出一些内容或者通过php在你的服务器上执行一些命令时,你需要把这个。考虑并为每个媒体PHP有它自己的保护功能:

  • SQL:mysql_real_escape_stringmysqli_real_escape_stringpdo_quotepg_escape_string或准备语句
  • HTML:htmlentitieshtmlspecialchars
  • 壳牌:escapeshellcmdescapeshellarg
+0

+1不错的一个。就像你投入的额外信息一样。 – Tomgrohl