关于php的你未必知道的事情 2 3 4
2012-04-11 14:54
190 查看
=== 2 ===
一个很有用的函数。
大家经常会这么写
有个函数可以轻松解决这个问题
注意参数$_var之前的引用符号&
=== 3 ===
数组装载自身
$GLOBAL 数组就装载了自身,$GLOBAL['GLOBAL']就是自己.
你用print_r()函数打印一下它就知道了.
=== 4 ===
过滤
大家都知道php的字符串需要过滤,以防止sql注入,跨站脚本攻击等等,于是就想不通为什么php不给自动过滤掉呢?
自动过滤是没有意义的. 因为大部分变量都不需要过滤.
什么时候需要过滤呢?其实这件事情很简单.你只需要记住只有满足以下两点的字符串才需要过滤:
1. 字符串来自用户(或者被用户污染过)
2. 需要嵌入外部代码中(比如1. SQL语句 2. HTML代码 3. 命令行)
第一种情况需要给变量套上mysql_real_escape_string()函数,第二种情况需要给变量套上htmlspecialchars()函数(也就是说每个echo都需要这么做).第三种情况需要套上escapeshellcmd() 和 escapeshellarg() 函数.
就是这么简单.
一个很有用的函数。
大家经常会这么写
$var = isset($src)? $src : '';这里要把$src写两遍,不够简单。(虽然可读性挺强的)
有个函数可以轻松解决这个问题
function isset_or(&$_var, $or = '') { return (isset($_var)) ? $_var : $or; }
注意参数$_var之前的引用符号&
=== 3 ===
数组装载自身
$GLOBAL 数组就装载了自身,$GLOBAL['GLOBAL']就是自己.
你用print_r()函数打印一下它就知道了.
=== 4 ===
过滤
大家都知道php的字符串需要过滤,以防止sql注入,跨站脚本攻击等等,于是就想不通为什么php不给自动过滤掉呢?
自动过滤是没有意义的. 因为大部分变量都不需要过滤.
什么时候需要过滤呢?其实这件事情很简单.你只需要记住只有满足以下两点的字符串才需要过滤:
1. 字符串来自用户(或者被用户污染过)
2. 需要嵌入外部代码中(比如1. SQL语句 2. HTML代码 3. 命令行)
第一种情况需要给变量套上mysql_real_escape_string()函数,第二种情况需要给变量套上htmlspecialchars()函数(也就是说每个echo都需要这么做).第三种情况需要套上escapeshellcmd() 和 escapeshellarg() 函数.
就是这么简单.
相关文章推荐
- 关于php的你未必知道的事情 1
- 关于PHP数组你应该知道的事情
- 有关于 Longhorn Server Core 你必须知道的5件事情
- 需要知道关于struct的一些事情
- 你应该知道的10件关于Java 6的事情
- 你应该知道的10件关于Java 6的事情
- 关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)
- 你应当知道的关于Codeforces的事情
- 关于PHP Notice: A non well formed numeric value encountered, 你知道多少
- 你应当知道的关于Codeforces的事情
- 你所未必知道的关于<!DOCTYPE>标签的细节
- 关于web切图你需要知道的几件事情
- [转]关于SilverLight:你需要知道的十件事情
- 关于 PHP 7 你必须知道的五件事
- 你应该知道的10件关于Java 6的事情
- [译] 关于 Git 你需要知道的一些事情
- 你应该知道的10件关于Java 6的事情
- 你应该知道的10件关于Java 6的事情
- [转]关于SilverLight:你需要知道的十件事情
- 关于IOS越狱和解锁必须知道的一些事情