据我了解,反对提供方便if (var) {}
的javascript,即使var
不存在,在PHP中你必须使用if (isset(var)) {}
或{{1} }。
今天我偶然发现一个似乎来自可靠来源的login tutorial,其中if (isset(var) && var) {}
未被使用:
isset
[来自链接页面,demo.php部分,第15行]
在我的本地服务器上,当if(!$_SESSION['id']):
未设置时,此行会中断,即恕我直言,这是预期的行为。此行之前未定义$_SESSION['id']
。
是否有一种神秘的方法可以避免烦人的$_SESSION['id']
检查?
答案 0 :(得分:6)
您的应用程序没有“中断”,因为它只是一个通知而且是:您应该始终测试数组密钥的存在,如果您不确定它们是否存在。
$defaults = array('id' => null);
$session = array_merge($defaults, $_SESSION);
现在您可以确定,$ session有一个键id
。
但是,您可以使用@
if (!@$_SESSION['id']) { /* .. */ }
但通常如果您触摸@
键:
在干净的应用程序中,只有在极少数情况下才需要@
。
最后一句话:从不使用来自外部的值而不进行验证!
答案 1 :(得分:2)
if(!$_SESSION['id'])
将检查会话变量是否为空。 isset
检查NULL
是否为{{1}}。个人empty()
是要走的路。它检查: