PHP开发中遇到的错误总结

2014 年 11 月 23 日7170

【赛迪网讯】1:为什么我得不到变量

我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值?

在PHP4.2以后的版本中register_global默认为off

若想取得从另一页面提交的变量:

方法一:在PHP.ini中找到register_global,并把它设置为on.

方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()).

方法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这种方法虽然麻烦,但比较安全.

2:调试你的程序

在运行时必须知道某个变量为何值。我是这样做的,建立一文件debug.php,其内容如下:

PHP代码:







复制代码







Ob_Start();



Session_Start();



Echo "<pre>";







Echo "本页得到的_GET变量有:";



Print_R($_GET);







Echo "本页得到的_POST变量有:";



Print_R($_POST);







Echo "本页得到的_COOKIE变量有:";



Print_R($_COOKIE);







Echo "本页得到的_SESSION变量有:";



Print_R($_SESSION);



Echo "</pre>";











然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹,



以后就可以在每个网页里包含此文件,查看得到的变量名和值.







3:如何使用session







凡是与session有关的,之前必须调用函数session_start();







为session付值很简单,如:











PHP代码:







[php]



Session_start();



$Name = "这是一个Session例子";



Session_Register("Name");//注意,不要写成:Session_Register("$Name");



Echo $_SESSION["Name"];



//之后$_SESSION["Name"]为"这是一个Session例子"



[/php]



在php4.2之后,可以为session直接付值:







PHP代码:







[php]



Session_Start();



$_SESSION["name"]="value";



[/php]











取消session可以这样:







PHP代码:







[php]



session_start();



session_unset();



session_destroy();



[/php]











取消某个session变量在php4.2以上还有BUG.







注意:







1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.



==========================================



1行



2行 [php]



3行 Session_Start();//之前在第一行已经有输出



4行 .....



5行 [/php]



==========================================

0 0