Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转义输出,在哪里使用什么?_Php_Escaping - Fatal编程技术网

Php 转义输出,在哪里使用什么?

Php 转义输出,在哪里使用什么?,php,escaping,Php,Escaping,我读了一篇关于在输出上转义数据的伟大文章,其中非常详细,但有一个例外,它告诉您何时需要转义输出数据,而不是在何处使用 规则是 如果在标记之间插入,则应转义& 如果插入属性中,也需要转义引号。所以&' 如果它是作为URL插入的,那么您还需要检查协议方案以确保它不是javascript:URL 前两个问题我理解并有解决方案 因此,从带有此逻辑的$GET变量可以得出如下结果 如果在标记之间插入: 或 如果插入到属性中: 如果前两个是正确的,那就剩下第三个了,这一个让我很困惑。这方面有什么帮助吗?这是你

我读了一篇关于在输出上转义数据的伟大文章,其中非常详细,但有一个例外,它告诉您何时需要转义输出数据,而不是在何处使用

规则是

如果在标记之间插入,则应转义<>& 如果插入属性中,也需要转义引号。所以<>&' 如果它是作为URL插入的,那么您还需要检查协议方案以确保它不是javascript:URL 前两个问题我理解并有解决方案

因此,从带有此逻辑的$GET变量可以得出如下结果

如果在标记之间插入:

如果插入到属性中:


如果前两个是正确的,那就剩下第三个了,这一个让我很困惑。这方面有什么帮助吗?

这是你所说的过滤器\u验证\u URL吗?好主意,这就是为什么我问…哈哈;我不确定自己是否完全理解他们所说的话,因此很难找到解决办法。
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING);
echo 'Hi '. htmlspecialchars($name, ENT_NOQUOTES, 'UTF-8');
 $name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING);
echo 'Hi '. htmlspecialchars($name, ENT_COMPAT, 'UTF-8');
<img src="<?php echo htmlspecialchars($img_path, ENT_COMPAT, 'UTF-8')">