如题 请问2个套在一起网上说是防止一些©之类的被浏览器解析,所以要用&来代替&.
但是 我经过urlencode编码之后$a已经一个&符号都没有了啊 不是很明白这2个的意思。自己写了一段代码也不知道是不是写在点子上了。。
$a="http://localhost/index.php?a=1©=&2";
echo $a;
echo '<br>'.urlencode($a); //http%3A%2F%2Flocalhost%2Fdz%2Findex.php%3Fa%3D1%26copy%3D%262
echo '<br>'.htmlentities(urlencode($a));//http%3A%2F%2Flocalhost%2Fdz%2Findex.php%3Fa%3D1%26copy%3D%262清明白人给小弟解释解释吧,最好举个例子看下。 手册里的例子根本没看明白。
但是 我经过urlencode编码之后$a已经一个&符号都没有了啊 不是很明白这2个的意思。自己写了一段代码也不知道是不是写在点子上了。。
$a="http://localhost/index.php?a=1©=&2";
echo $a;
echo '<br>'.urlencode($a); //http%3A%2F%2Flocalhost%2Fdz%2Findex.php%3Fa%3D1%26copy%3D%262
echo '<br>'.htmlentities(urlencode($a));//http%3A%2F%2Flocalhost%2Fdz%2Findex.php%3Fa%3D1%26copy%3D%262清明白人给小弟解释解释吧,最好举个例子看下。 手册里的例子根本没看明白。
将字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号;
htmlentities 是将字串转化成html编码
& 符号 由于urlencode 被转化了,这样可以解决你说的问题
我是或 我urlencode已经把 & 符号给转换了
还要一个htmlentities在外面有什么用呢?
最好有个具体例子叫我看看这个2个函数套在一起有什么左右。
手册里介绍的实在是不好理解
不会把html 标签输出,即把此字串当作html 解析echo htmlentities('<title>hello,&everybody!</title>');
//输出: <title>hello,&everybody!</title>
将html实体输出,输出整个字串; 你上面的例子中没有HTML中的实体,所以输出结果相同;
不知道这样能否明白
htmlentities呢?麻烦在解释一下吧
你需求的URL里面已经没有html实体了,所以这里不用,
浏览器可以自动解析,因为浏览器有解析他的方法,所以这个你不用考虑,
一般在需要使用html实体的地方,使用htmlentities
htmlentities 是防止别人在网址中加入有害代码。比如 < > 之类的,可以参考discuz的网址参数过滤。
//处理REQUEST_URI
if(!isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];
if(isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING'];
}
if($_SERVER['REQUEST_URI']) {
$temp = urldecode($_SERVER['REQUEST_URI']);
if(strexists($temp, '<') || strexists($temp, '"')) {
$_GET = shtmlspecialchars($_GET);//XSS
}
}
例如: 一个输入框中输入:
<script type="text/javascript">
//有害的代码;
</script>
这样利用htmlentities将这段脚本原样输出,而不会执行这段脚本;