2014年9月23日 星期二

PHP重點提示-給ASP.NET程式設計師

學習資源

http://www.w3schools.com/php/php_intro.asp

echo vs. print

echo可顯示多行,print只能顯示一行。
echo "第一行
第二行";

變數

以$宣告變數,變數名稱可由字母、底線及數字組成。不可以數字開頭。

變數名稱大小寫視為相

宣告時無需指定型別

可視範圍:local、global、static
函式中的變數為區域變數,不在函式中的變數則為全域變數。
函式中可用global關鍵字存取全域變數。
函式中可用static關鍵字宣告常存變數。

常數

皆為global,以define()定義常數。

資料型別

String, Integer, Float, Boolean, Array, Object, NULL
可用var_dump(...)顯示變數的型別及內含值

函式

以function關鍵字定義函式

名稱大小寫視為相

陣列

用$宣告陣列,用array(...)設定陣列內容

三種陣列:索引式陣列、key-value陣列、多維陣列

可透過函式依內含值、鍵值以升、降冪方式排序

PHP內建全域變數

$_SERVER、$_REQUEST...

表單輸入驗證

透過htmlspecialchars()處理html特殊字元
透過trim()、stripslashes()去除不必要字元
例如可宣告以下函式處理使用者的輸入值:

function replace_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

日期時間

date("Y/m/d")可傳回14/09/22
可透過mktime(hour,minute,second,month,day,year)設定時間

include vs. require

兩者的差別在找不到指定檔案時:require會出錯並停止執行,include只產生警告程式仍繼續執行

檔案處理

readfile(...)可將指定檔案內容全部讀出,細部處理可透過fopen(...)、fclose(...)、feof(...)、fgets(...)等f開頭函式。

Cookie

寫入:setcookie("user", "Mary", time()+3600)
讀取:透過$_COOKIE全域變數存取,或可用print_r($_COOKIE)傾印所有cookie
透過isset()檢查特定cookie是否存在,如:isset($_COOKIE["user"])

Session

在<html>之前呼叫session_start()初始化,接著便可以$_SESSION['key']存取。最後呼叫session_destroy()。

錯誤處理

die("...")可在顯示錯誤訊息後中止執行。或可透過set_error_handler(...)函式指定錯誤處理函式。如下:

//error handler function
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr";
}

//set error handler
set_error_handler("customError");

//trigger error
echo($test);

執行結果:

Error: [8] Undefined variable: test

也有try...catch.

沒有留言:

張貼留言