【1】变量get、post、session不能在页面间传递。在最新的php版本中,自动全局变量是关闭的,所以需要从上面开始获取一个页面提交的变量,使用$\_GET\['foo'\],$_POST['foo'],$_SESSION['foo']来获取它们。当然也可以修改自动全局变量开启(php.ini改成register_globals=On);考虑到兼容性,不如强迫自己熟悉新的写法。读者福利,可以直接点击链接领取相关学习福利包:ShimoDocumentshimo.im是一个安全的网站,不用担心,Win32、apache2下继续访问[2]即可领取使用get方法传中文参数会报错test.php?a=Hello&b=你也不错传参会报内部错误解决方法:"test.php?a=".urlencode(Hello)."&b=".urlencode(你也不错)..........【3】win32下session无法正常工作。php.inidefaultsession.save_path=/tmp这明明是linux下的配置。PHP在win32下无法读写session文件,所以session无法使用。改成绝对路径即可,例如session.save_path=c:\windows\temp[4]显示错误信息当php.ini的display_errors=On和error_reporting=E_ALL时,会显示所有的错误和提示,debugging是最好打开它进行纠错。如果用以前的php写法,报错信息多半是undefinedvariables。变量赋值前会有提示。解决办法是检测或者屏蔽$foo的显示,比如可以if(isset($foo))echo$foo或者echo@$foo[5]mail()win32下不能发邮件linux下配置的sendmail可以发送。win32下需要调用smtp服务器发送邮件。修改php.ini的smtp=ip//ip是没有认证功能的smtp服务器(网上很难找到)对方没有转发服务器[6]如果初始安装mysql没有设置密码,应该使用updatemysql.usersetpassword="yourpassword"whereuser="root"来修改密码[7]】headeralreadysent这个错误通常发生在你使用HEADER的时候。可能有以下几个原因:1.你在使用HEADER之前PRING或ECHO2.你当前文件前面有一个空行3.你可能INCLUDE一个文件,文件末尾有一个空行或者此错误将出现在输出中。![8]更改php.ini后,没有变化。重新启动Web服务器,例如IIS、Apache等,然后应用最新设置。[9]2003安装php(ISAPI的安装方法请专家指点)PHP4的php4isapi。dll好像和2003有冲突,只能用CGI方式安装。步骤1.首先在http://www.php.net下载安装程序。我安装的是:php-4.2.3-installer.exe,你也可以找到最新版本,在安装php-4.2.3-installer.exe之前确保你的IIS6.0已经启动并且可以访问。安装后,转到默认网站-->应用程序配置步骤2:单击Web服务扩展-->新建Web服务扩展。Step3:Extension-->php,然后添加Step4:找到php.exe的路径添加上去。第五步:好的!第六步:选择php的服务扩展,然后点击允许。[10]有时sql语句不起作用。调试数据库操作失败最简单的方法就是回显sql,看能否获取到变量的值。[11]include和require区别不大。如果要包含的文件不存在,include会提示一个通知,然后继续执行下面的语句,require会提示致命错误并退出根据我的测试,都是先包含然后在win32平台下执行,所以最好不要在包含文件中再有include或require语句,这样会造成目录混乱。也许在*nux下情况不同。我还没有测试过。如果一个文件不想被多次包含,可以使用include_once或者require_once##读写文档数据functionr($file_name){$filenum=@fopen($file_name,"r");@flock($filenum,LOCK_SH);$file_data=@fread($filenum,filesize($file_name));@fclose($filenum);返回$文件数据;}函数w($file_name,$data,$method="w"){$filenum=@fopen($file_name,$method);群($filenum,LOCK_EX);$file_data=fwrite($filenum,$data);fclose($filenum);返回$文件数据;}【12】isset()和empty()的区别都是用来测试变量的,但是isset()是测试一个变量是否赋值,empty()是测试一个变量是否已经赋值是空的。PHP中允许引用没有赋值的变量,但是会提示如果变量被赋值为空值,$foo=""or$foo=0or$foo=false,thenempty($foo)returnsTrue,isset($foo)也返回true,这意味着分配一个空值不会注销一个变量。注销一个变量,可以使用unset($foo)or$foo=NULL[13]当mysql查询语句中包含关键字php查询mysql时,有时mysql表名或列名会有关键字,那么查询就会有错误。比如表名是order,查询的时候就会报错。简单的方法就是在SQL语句中的表名或列名后面加上`[abovethetabkey]来区分。比如select*from`order`[14]通过HTTP协议一次上传多个文件file方法有两种思路,是同一个方法的两种实现。具体程序需要自己设计1.在表单中设置多个文件输入框,用数组命名,如下:";print_r($_FILES);echo"pre>";1、在表单中设置多个文件输入框,但名称不同,如下:=filename=usefile_c>在服务器上做同样的测试:echo"
";print_r($_FILES);回声“
”;
