熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

Php高手帶路--問題匯總解答(一)

2013-11-15 12:39:23  來源: PHP編程 

  :為什麼我得不到變量

  我在一網頁向另一網頁POST數據name為什麼輸出$name時卻得不到任何值?

  在PHP以後的版本中reGISter_global默認為off若想取得從另一頁面提交的變量:

  方法一:在PHPini中找到register_global並把它設置為on
  
  方法二:在接收網頁最前面放上這個extract($_POST);extract($_GET);(注意extract($_SESSION)前必須要有Session_Start())
  
  方法三:一個一個讀取變量$a=$_GET[a];$b=$_POST[b]等這種方法雖然麻煩但比較安全

  調試你的程序

  在運行時必須知道某個變量為何值我是這樣做的建立一文件debugphp其內容如下:

  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>;
  ?>

  然後在phpini中設置include_path = c:/php並將debugphp放在此文件夾以後就可以在每個網頁裡包含此文件查看得到的變量名和值

  如何使用session

  凡是與session有關的之前必須調用函數session_start();

  為session付值很簡單如:

  PHP代碼:

  <?php
  Session_start();
  $Name = 這是一個Session例子;
  Session_Register(Name);//注意不要寫成Session_Register($Name);
  Echo $_SESSION[Name];
  //之後$_SESSION[Name]為這是一個Session例子
  ?>

  在php之後可以為session直接付值:

  PHP代碼:

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

  取消session可以這樣:

  PHP代碼:

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

  取消某個session變量在php以上還有BUG

  注意:

  :在調用Session_Start()之前不能有任何輸出例如下面是錯誤的
   ==========================================
  
   行 Session_Start();//之前在第一行已經有輸出
  
   行 ?>
   ==========================================

  提示:

  凡是出現 headers already sent 就是Session_Start()之前向浏覽器輸出信息去掉輸出就正常(COOKIE也會出現這種錯誤錯誤原因一樣)

  提示:

  如果你的Session_Start()放在循環語句裡並且很難確定之前哪裡向浏覽器輸出信息可以用下面這種方法:
  行 <?PHP Ob_Start(); ?>
  這裡是你的程序

  :這是什麼錯誤

  Warning: session_start(): open(/tmp\sess_daabcecacccdaf O_RDWR) failed:
因為你沒有指定session文件的存放路徑

  解決方法:
  ()在c盤建立文件夾tmp
  ()打開phpini找到sessionsave_path修改為sessionsave_path= c:/tmp

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

  PHP代碼:

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

  receivephp的內容:

  PHP代碼:

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

  正確的方法是:

  PHP代碼:

  <?php
  $Var=hello php;
  $post= receivephp?Name=urlencode($Var);
  header(location:$post);
  ?>

  在接收頁面你不需要使用Urldecode()變量會自動編碼
    
  :我怎麼知道系統默認支持什麼函數

  PHP代碼:

  <?php
  $arr = get_defined_functions();
  Function php() {
  }
  echo <pre>;
  Echo 這裡顯示系統所支持的所有函數和自定以函數php\n;
  print_r($arr);
  echo </pre>;
  ?>

  :如何比較兩個日期相差幾天

  PHP代碼:

  <?PHP
  $Date_=;//也可以是:$Date_= ::;
  $Date_=;
  $d=strtotime($Date_);
  $d=strtotime($Date_);
  $Days=round(($d$d)//);
  Echo 偶已經奮斗了 $Days 天^_^;
  ?>


From:http://tw.wingwit.com/Article/program/PHP/201311/21361.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.