urlencode()和rawurlencode()的区别
urlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码不同。
rawurlencode:功能和urlencode基本一样,采用的是RFC1738编码,因此空格会编码为%20。
代码:
echo 'sales and marketing/Miami';
echo "<br>";
echo rawurlencode('sales and marketing/Miami');
echo "<br>";
echo urlencode('sales and marketing/Miami');
显示:
sales and marketing/Miami
sales%20and%20marketing%2FMiami
sales+and+marketing%2FMiami
$_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'']
通常在本机测试 $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'] 大概看不出有什麼不同,因为大多的PHP不因此CGI模式运行的。PHP以 CGI 体式格局运行,二者就有明显不同的差异。
echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi)
echo $_SERVER['PHP_SELF']; // (/admin/test.php)
但是在做一些URL拼合的历程中可能引发XSS跨站攻击。
$PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']);
htmlentities和htmlspecialchars函数的区别
这两个函数在格式化带有英文字符的html代码的时候基本没啥问题,但是htmlentities对中文字符也不放过,这样得出来的结果是中文字符部分变为一堆乱码
htmlentities跟htmlspecialchars的功能类似,但是htmlentities是对所有HTML定义的entity都不放过,包括各种特殊字符和中文,这样得出来的结果是中文字符部分变为一堆乱码。