php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
摘要: 地址栏里输入以下网址:
1) http://www.78yi.cn/ 时
对应的值为:
HTTP_HOST: www.78yi.cn
SERVER_NAME: 78yi.cn
2) http://bbs.qqdiandong.com/ 时
对应的值为:
HTTP_HOST: bbs.qqdiandong.com
SERVER_NAME: qqdiandong.com
阅读全文
PHP程序漏洞产生的原因和防范方法
摘要: 【友情链接:http://www.tjcuxiao.com 和http://www.mujiz.cn】
滥用include
1.漏洞原因:
Include是编写PHP网站中最常用的函数,并且支持相对路径。有很多PHP脚本直接把某输入变量作为Include的参数,造成任意引用脚本、绝对路径泄露等漏洞。看以下代码:
...
$includepage=$_GET["includepage"];
include($includepage);
...
阅读全文
UTF8下中文命名文件下载问题
摘要: 友情链接:http://www.tjcuxiao.com 和http://www.mujiz.cn】
如果$filename是UTF-8编码的,有些浏览器就无法正常处理了。比如把上面那个程序稍稍改一下:
$filename = "中文 文件名.txt";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);
print "Hello!";
?>
把程序保存成UTF-8编码再访问,IE6下载的文件名就会乱码。 FF3下下载的文件名就只有“中文”两个字。Opera 9下一切正常。
输出的header实际上是这样子:
阅读全文
$GLOBALS 有趣现象
摘要: function test() {
$c = 2;
}
$a = 1;
$b = 2;
?>
上边的代码的$a和$b都在$GLOBALS里,与$GLOBALS['a']和$GLOBALS['B']是等价的,如下可知:
// 例子2
function test() {
$c = 2;
$GLOBALS['a'] = 'DDD';
}
$a = 1;
$b = 2;
test();
print $a;//此时输出的是DDD而不是1.
?>
有趣的是:$GLOBALS变量又是$GLOBALS变量的值,你会发现$GLOBALS 下有$GLOBALS,这个$GLOGALS下又有$GLOBALS,这样一直层层不断的套下去,很是有趣。
阅读全文