PHP NEWBIE需要注意的一些问题
问题1:变量传递问题
这个问题恐怕是大家见到的最多的问题了,总有朋友在问:为什么我装了PHP后,变量无法在页面间传递?
PHP4.2版本后,将PHP.INI中register_globals的设置改成了Off,这就使原来的一些在低于4.2版本情况下可以运行的程序无法执行。
之所以这么做是因为在register_globals设置为On的情况下,PHP本身会有安全隐患。在程序设计不严密的情况下,别人可以通过某些手段得到你在页面间传递的变量(很可怕的问题哦)。解决的方法有两个:一是将PHP.INI中的register_globals重新设置成On(不要吧?);二是在使用页面间传递变量的时候,使用PHP为我们准备好的全局变量集。如下:
$_POST['varname'];//通过post方式提交的变量,多用于form的提交(<form method=post>)。
$_GET['varname'];//通过get方式提交的变量,可用于from的提交(<form method=get>),也可以用来得到页面的参数(http://test.php?a=ok)。
$_COOKIE['varname'];
$_SESSION['varname'];//用于得到保存在session和cookie的变量。
其实上面的这些变量名都可以写成另一种形式:$HTTP_*_VARS['varname'],即$HTTP_POST_VARS['varname'],$HTTP_GET_VARS['varname'],$HTTP_COOKIE_VARS['varname'],$HTTP_SESSION_VARS['varname'],不过似乎这么写也不太安全,所以大家就采用开始说的这种容易写,又较安全的方法吧。
问题2:关于SESSION的设置
Warning: open(tmp\sess_a18eaa908774d353293cf91777599c90, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
当程序中要使用SESSION时,有的朋友就会问这样的问题:为什么在使用SESSION的页面上会出现类似上面的警告呢?
这种情况只会出现的WINDOWS系统中。这是因为在PHP.INI中,SESSION的默认存放路径session.save_path='\tmp',这其实是*nix的路径写法,而在WINDOWS下面是不存在这样的路径的。所以PHP找不到存放SESSION的地方,当然就要发出警告了。解决的方法就是将'\tmp'替换成一个WINDOWS系统下存在的目录的地址。
还有一点问题,就是在使用SESSION的时候,要想在当前页面得到SESSION变量,就必须在程序的开始部分加上session_start(),而且在此之前不能有任何的输出。也就是说,最好就把session_start()写在第一行。
问题3:关于页面最大执行时间
当上传较大的文件,或是从数据库读取大量数据的时候,页面执行的时间可能变得很长。而PHP.INI中对于页面执行时间的最大限制默认为max_execution_time=30,也就是说当你的程序执行了30秒还没结束,就会自动停止响应。所以当你要执行的程序花费时间要较长时间的时候,可以修改max_execution_time=300或更大,以确保程序的正常执行。如果是上传文件的话,还要同时注意以下几个设置:
upload_max_filesize=2M //上传文件最大容量
post_max_size=2M //通过post方法提交的文件最大容量
memory_limit=8M //每个页面执行时消耗的最大内存
---------------------------
一般的程序设置max_execution_time=30,应该就足够了。
超过这个时间大多是死循环。
[解决办法]