PHP - notesHazuya筆記長也

PHP - Composer套件管理入門

Composer - PHP套件管理工具 傳統上編寫PHP程式的時候,當我們需要利用自己編寫的類別或他人提供的套件,就必須使用include()、require()等函式來導入我們要使用的腳本;而近代一點的可能會使用自動載入(autoload)策略,如psr-4之類的自動載入標準。 而composer除了進行套件管理之外,也可以幫你自動載入所安裝的套件,當然也可以自動載入自己寫的腳本。

PHP - PDO資料庫存取

PDO PDO擴充(PHP data objects)是一PHP類別,可以使用單一介面與不同的SQL系統溝通,抽象化資料庫實作。無論使用哪一種資料庫系統,都只要使用單一的類別即可。 但是資料庫查詢語句仍須根據資料庫系統而有所更改。 建立PDO連線 PDO的建構式有三個參數,包含:DSN資訊、資料庫使用者、資料庫密碼 DSN資訊

PHP日期與時間處理

設定時區 在開始之前,應該要設定你所在的時區,你可以在php.ini或程式當中設定。 PHP.INI date.timezone= 'Asia/Taipei'; PHP程式當中 date_default_timezone_set('Asia/Taipei'); 以下的類別從PHP......

PHP—消毒與驗證使用者輸入

本文分享我自己如何實作使用者資料的驗證與消毒,驗證與消毒可以使你的應用程式更安全。但請注意,以下介紹的只是我的作法(或者我知道的作法),並不代表只能這樣做,或者我的作法是好的。 外部資料來源 $_GET、$_POST、$_COOKIE、file_get_contents()、遠端資料庫...... 消毒資料的重要性 不要信任你的使用者,因為隨時有人會刻意或不......

PHP - Password_Hash密碼雜湊API

為何需要雜湊密碼 密碼若以明文的形式儲存在資料庫當中,當應用程式產生漏洞而導致資料庫注入攻擊將可能導致密碼外洩,故以雜湊後的雜湊值儲存是安全的,此外也能避免網站被懷疑洩漏密碼。 從PHP5.5.0開始內建了密碼HASH的API,讓密碼雜湊變得相當容易,新的算法也比MD5、SHA1來得安全。 產生雜湊值:password_hash 這個函式共有三個引......

PHP閉包(匿名函式)與繫結狀態

閉包與匿名函式 閉包是創造時就封裝了內部狀態的函式,即使函式已經結束了,但狀態會一直被保存在閉包中。匿名函式就是沒有名字的函式,匿名函式可以跟其他物件一樣指派給變數。 在PHP中,閉包與匿名函式視為同樣的東西。 建立閉包 $plusone=function ($num){ re......

PHP—產生器的介紹與使用

產生器 產生器是一個簡單的迭代器,只在有需要的時候計算並產生迭代的數值;但是產生器是一個用過即丟的工具,無法利用同一個產生器重複迭代,也不能倒退。 產生器的使用 如果我們要產生介於0並小於$step中間的所有數值,傳統上我們會將所有產生的數值存進一個陣列,並回傳 function make($step){ $......

PHP特徵機制介紹

何謂特徵機制? PHP中的特徵機制是一個類別的局部實作(方法或屬性等),而且可以被多個類別同時使用;而特徵機制具有介面(定義類別可以做什麼)與模組化(不必重複篩寫程式碼)的特性。 從範例了解為何使用特徵機制 當今天我們有兩個較無關係的類別:人與車子,我希望他們都回報所在的地址資訊,我們有幾種做法可以實現: 建立共同類別並且......

PHP物件導向觀念—介面(Interface)

本文討論PHP物件導向當中的介面,應該與其他語言中的物件導向是差不多的。 何謂介面(Interface)? 介面可以做為兩個類別溝通的橋樑,讓一個類別可以知道另外一個類別要做什麼,讓這些類別有了共同的標準;介面中宣告的方法也不會有任何的實作,因為只定義了使用這個介面的類別應該要實作什麼,但不管

PHP輸出緩衝與header函式

此次升級PHP7遇到一個問題,header()函數沒辦法正常運作,被報錯以下訊息: PHP Warning: Cannot modify header information - headers already sent by (output started at /xxx/xxx/xxx.php:3) in /xxx/xxx/xxx.php on line 4 這項錯誤是說header已經發送,無法再更改,為何會這樣?本文在此討論。 PHP的輸出緩衝機......