php为什么变量要初始化 向高手讨教

初始化变量用的(无论何时用变量都要考虑初始化,要不然安全性不值得一提,一个get就完了)
今天看到这么一句化
不理解一个get就完了 请高手指教

第1个回答  推荐于2016-10-10
是这样的,比如我们程序要使用$tmp来存储一个循环里面取到的内容,语句如下:

while(...){
if (...) $tmp=...;
}
if ($tmp==...) {...}

上面的语句,是在循环里面判断某个条件,条件满足就赋值,循环结束后判断变量的值来执行程序,看起来没问题,但是实际上有问题。

因为在循环前没有对$tmp='';这样初始化,那么循环中如果一直都没有满足条件,其实$tmp的值可能是不确定的。特别是,当字段全局变量开关打开的时候,$tmp的值可能是调用这个PHP文件时的参数值,例如xxx.php?tmp=xxx这样的调用就可以改变程序里面变量的值,非常危险。本回答被提问者采纳
第2个回答  2009-04-14
安全性的问题一定要时刻记在心里!!
PHP常见的一个安全问题就是register_globals
在php.ini里如果register_globals = On被打开
就默认设置GPCS对应的变量,G:$_GET,P: $_POST, C:$_COOKIE, S: $_SESSION.
例如,有一个连接a.php?a=1&b=2
$_GET就是array('a'=>1, 'b'=>2)
系统自动生成以下变量:
$a = 1;
$b = 2;
GPCS里的都会被生成。

这样虽然方便了,但是会带来安全隐患,外人可以控制你的变量!!
例如你有一个变量是判断是否登录的,假设$logined,
我访问这个链接$a.php?logined=1
你的$logined就自动设置为1了,你就登陆了!!
是不是很危险呢?
如果我们在用到前些一句 $logined=0;就不会出现问题了。
这就是你所说的 一个get就完了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网