我有一个变量,它类似于
$name=‘18“液晶电视';
当我尝试在HTML输入中使用它时,它不会显示“
我能做些什么?
发布于 2011-06-20 17:31:31
使用htmlentities或htmlspecialchars
htmlentities会做所有的html标签。
htmlspecialchars将会做以下事情:
& " ' < >示例
<input type="text" value="<?php echo htmlentities( $text );?>" />如果您这样做了:
<input type="text" value="<?php echo $text;?>" />它实际上是在做:
value="18 " LCD TV"因此,18之后的"将关闭value属性
发布于 2011-06-20 17:32:06
不使用htmlspecialchars可能会导致跨站点脚本攻击(搜索XSS)。使用以下命令:
<input type="text" value="<?php echo htmlspecialchars($name, ENT_QUOTES);?>" />这将在等价的html实体中对引号、<、>和& simbols进行html编码。参见htmlspecialchars或htmlentities。
外壳附录:其背后的基本原理与防止注入或代码执行的概念相同:"Filter Input,Escape Output“。每种介质都有一些特殊字符,您无法在该介质中正常输出。对于XML/HTML,它们是‘、“、<、>和&;对于SQL,它们是’、”、\、\0和更多。对于Shell,它们是;,',",`,$,还有更多。每次你向数据库发起一个查询,在你的html中输出一些东西,或者通过php在你的服务器上执行一些命令时,你需要考虑到这一点。对于每种媒介,PHP都有自己的预防功能:
statements.
mysql_real_escape_string、mysqli_real_escape_string、pdo_quote、pg_escape_string或prepared statements.
htmlentities、SQL escapeshellcmd、SQL发布于 2011-06-20 17:32:04
当你在超文本标记语言中输出特殊字符(& ' " < >)时,你需要对它们进行转义,有一个方法是这样做的:
$name = htmlentities(' 18 " LCD TV ');
https://stackoverflow.com/questions/6409223
复制相似问题