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代碼:

<?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
  <?php
  Session_start
();
  $Name = “這是一個Session例子”;
  Session_Register(“Name”);//註意,不要寫成:Session_Register(“$Name“);
  Echo $_SESSION[“Name”];
  //之後$_SESSION[“Name”]為”這是一個Session例子”
  ?>

  在php4.2之後,可以為session直接付值:

  PHP代碼:

<?PHP
  <?PHP
  Session_Start
();
  $_SESSION[“name”]=“value”;
  ?>

  取消session可以這樣:

本新聞共5頁,當前在第1頁  1  asp”>2  3  4  5  

PHP代碼:

  <?php
  session_start
();
  session_unset();
  session_destroy();
  ?>

  取消某個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(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:….
因為你沒有指定session文件的存放路徑.

  解決方法:
  (1)在c盤建立文件夾tmp
  (2)打開php.ini,找到session.save_path,修改為session.save_path= “c:/tmp”


  4:為什麼我向另一網頁傳送變量時,隻得到前半部分,以空格開頭的則全部丟失

  PHP代碼:

<?php
  <?php
  $Var
=“hello php”;//修改為$Var=”     hello php”;試試得到什麼結果
  $post= “receive.php?Name=”.$Var;
  header(“location:$post”);
  ?>

  receive.php的內容:

  PHP代碼:

<?PHP
  <?PHP
  Echo “<pre>”;
  Echo   
$_GET[“Name”];
  Echo
“</pre>”;
  ?>

  正確的方法是:

  PHP代碼:

<?php
  <?php
  $Var
=“hello php”;
  $post= “receive.php?Name=”.urlencode($Var);
  header(“location:$post”);
  ?>

  在接收頁面你不需要使用Urldecode(),變量會自動編碼.

本新聞共5頁,當前在第2頁  1  2  3  4  5  

5:如何截取指定長度漢字而不會出現以”?>”結尾,超出部分以”…”代替

  一般來說,要截取的變量來自Mysql,首先要保證那個字段長度要足夠長,一般為char(200),可以保持100個漢字,包括標點.

  PHP代碼:<BR

發佈留言