在提問題前請先仔細查閱PHP手冊,MYSQL手冊 以及PHPINFO里面的設置。
另外希望你讀一下PHP編程標準。(站長書庫)
精彩30問,網羅常見PHP問題,希望大家細心查看。
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 Session_start(); $Name = "這是一個Session例子"; Session_Register("Name");//注意,不要寫成:Session_Register("$Name"); Echo $_SESSION["Name"]; //之后$_SESSION["Name"]為"這是一個Session例子" ?> |
| <?PHP Session_Start(); $_SESSION["name"]="value"; ?> |
取消session可以這樣:
| <?php session_start(); session_unset(); session_destroy(); ?> |
取消某個session變量在php4.2以上還有BUG.取消某個session變量在php4.2以上還有BUG.
注意:
1:在調用Session_Start()之前不能有任何輸出.例如下面是錯誤的.
==========================================
1行
2行 <?PHP
3行 Session_Start();//之前在第一行已經有輸出
4行 .....
5行 ?>
==========================================
提示1:
凡是出現"........headers already sent..........",就是Session_Start()之前向瀏覽器輸出信息.
去掉輸出就正常,(COOKIE也會出現這種錯誤,錯誤原因一樣)
提示2:
如果你的Session_Start()放在循環語句里,并且很難確定之前哪里向瀏覽器輸出信息,可以用下面這種方法:
1行 <?PHP Ob_Start(); ?>
........這里是你的程序......
2:這是什么錯誤
Warning: session_start(): open(/tmp/sess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
因為你沒有指定session文件的存放路徑.
解決方法:
(1)在c盤建立文件夾tmp
(2)打開php.ini,找到session.save_path,修改為session.save_path= "c:/tmp"
新聞熱點
疑難解答