天天看點

php小結,PHP程式設計小結

擴充庫

l通過标記中的src屬性,不但可以調用同一個伺服器上的JS檔案,還可以通過指定路徑來調用其他伺服器上的JS檔案

日期和時間

Ø更改PHP語言中的時區設定有兩種方法:修改php.ini,在[date]下的“;date.timezone=”選項,将其修改為“date.timezone=Asia/Hong_Kong”;2.在應用程式中,在使用時間日期函數之前添加函數date_default_timezone_set(timezone),timezone為PHP可識别的時區名稱。

ØMktime()函數将一個時間轉換成UNIX的時間戳(從1970年到現在的秒數)int mktime(int hour, int minute, int second, int month, int day,

int year, is_dst(是否設定夏令時)

ØDate函數可以将UNIX時間戳轉換為日期和時間

ØTime()擷取目前時間戳

ØDate(string format[, int timestamp])擷取目前日期和時間

ØArray getdate(int timestamp )以數組形式返還日期

ØBool checkdate(int month, int day, int year)檢驗日期的有效期(一年多少天之類)

ØPHP中的時間是不可以直接進行比較的,是以首先要将事件解析為時間戳的格式,然後再進行比較。Strtotime()函數可以完成該操作

Cookie與Session

ØCookie的管理:

nCookie是在HTTP協定下,通過伺服器或腳本語言可以維護客戶浏覽器上資訊的一種方式。

nCookie是一種在客戶浏覽器端粗處資料并以此來跟蹤和識别使用者的機制。Cookie是Web伺服器暫時存儲在使用者硬碟上的一個文本檔案,并随後被Web浏覽器讀取。當使用者再次通路該Web網站時,網站通過讀取Cookie檔案記錄這位訪客的特定資訊。

nCookie文本檔案的指令格式如下:使用者名@網站位址[數字].txt。

nPHP中通過setcookie()函數建立Cookie,bool setcookie(string name[, string value [, int ex[ire[, stringpath[, string domain[. Int secure]]]]]]

uCookie是HTTP頭标的組成部分,而頭标必須在頁面其他内容之前發送,是以它必須最先輸出。若在setcookie()函數前輸出一個HTML标記、echo語句、甚至一個空号都會導緻程式出錯。

uName:cookie的變量名,可以通過$_COOKIE[“cookiename”]調用變量名為cookiename的Cookie

uValue:Cookie變量的值,該值儲存在用戶端

uExpire:Cookie的失效時間,如果未設定Cookie的失效時間,則在關閉浏覽器時自動删除Cookie資料;如果為Cookie設定了失效時間,浏覽器将會記住Cookie資料,即使使用者重新開機計算機,隻要沒到期,再次通路網站是也會獲得資料。

uPath:Cookie在伺服器端的有效路徑,如果該參數設定為”\”,則它将整個domain内有效;如果設定為“/11”,它将在domain下/11目錄及子目錄内有效。

uDomain:Cookie有效的域名,如果要是Cookie在mrbccd.com域名下的所有子域名都有效,應該設定mrbccd.com

uSecure:指明Cookie是否僅通過安全的HTTPS,值為0或1,如果為1,Cookie隻能在HTTPS連接配接上有效;預設為0,Cookie在HTTP和HTTPS連接配接上均有效。

n讀取Cookie

u在PHP中可以直接通過超級全局數組$_COOKIE[]來讀取浏覽器端餓的Cookie值。

n删除Cookie

uSetcookie(“name”,””,time()-1)

nCookie的生命周期

u如果Cookie不設定失效時間,它的生命周期就為浏覽器會話期間,這種Cookie被稱為會話Cookie,一般不儲存在硬碟上,而是儲存在記憶體中。

u浏覽器最多允許存儲300個Cookie檔案,每個Cookie檔案支援最大容量為4KB;每個域名最多支援20個Cookie,如果達到限制時,浏覽器會自動随機删除Cookie檔案。

ØSession

nSession會話檔案中儲存的資料在PHP腳本中是以變量的形式建立的,建立的會話變量在生命周期(20分鐘)中可以被跨頁的請求所引用

nSession會話是存儲在伺服器端的,相對安全,并且不像Cookie那樣有存儲長度的限制。

nSession工作原理:當啟動一個Session時,會生成一個随機且唯一的session_id,也就是Session的檔案名,此時session_id存儲在伺服器的記憶體中。當關閉頁面時此id會自動登出,重新登入此頁面,會再次生成一個随機且唯一的id。

n建立會話

u建立一個會話需要通過以下步驟:啟動會話à注冊會話à使用會話à删除會話

u啟動會話,有兩種方式:1.

Session_start()函數,2.使用session_register()函數為會話建立一個變量來隐含地啟動會話。

lSession_start()函數在頁面開始位置調用,然後會話變量被登入到資料$_SESSION。

l使用session_start()函數之前浏覽器不能有任何輸出。

u注冊會話,會話變量被建立後,全部儲存在數組$_SESSION中。通過數組$_SESSION建立一個會話變量很容易,隻要直接給該數組添加一個元素即可$_SESSION[‘admin”]=xx;

u使用會話:判斷會話變量是否有一個會話ID存在,如果存在,則将這個已建立的會話變量載入以供使用者使用。如!empty($_SESSION[‘session_name’])) $myvalue = $_SESSION[‘session_name’];

u删除會話:删除會話的方法主要有删除單個會話、删除多個會話和結束目前會話3種

l删除單個會話:即删除單個會話變量,unset($_SESSION[‘user’])

l删除多個會話:$_SESSION= array()

l結束目前會話:session_destroy();

nSession設定失效時間

uSession失效時間設定主要有以下兩種方法:

l用戶端沒有禁止Cookie

n(不推薦)使用session_set_cookie_params($time);示例為$time=1*60; session_set_cookie_params($time); session_start();

n使用setcookie()函數可對Session設定失效時間

uSession_start(); $time = 1*60; setcookie(session_name(),session_id(), time()+$time, “/”);

nSession臨時檔案存儲位置,可以由session_save_path($path)完成

nSession緩存:将網頁中的内容臨時存儲到IE用戶端的Temporary Internet Files檔案夾下,并可以設定緩存的時間,session_cache_limiter()函數設定緩存;session_cache_expire()設定緩存時間。Session_cache_limiter()和session_cache_expire()必須在session_start()之前調用。

nSession資料庫存儲bool session_set_save_handler(string open, string close, string

read, string write, string destroy, string gc),其中的參數其實都是函數名

圖像支援

檔案系統

面向對象

Ø類的定義

class SportObject {

function beatBasketball()($name, $height) {

}

}

Ø類的執行個體化:通過關鍵字new來聲明一個對象;然後通過對象名->成員方法來調用要使用的方法

Ø成員變量的格式為:關鍵字成員變量名,關鍵字可以使用public、private、protected、static、final中的任意一個。通路成員變量的方式也是對象名->成員變量

nProtected:指可以在本類及子類中被調用;

nStatic:不需要執行個體化對象,直接可調用,“self::靜态成員“或者”類名::靜态成員”即可通路。可以是靜态變量也可以是靜态方法。靜态方法中隻能調用靜态變量、不能調用普通變量。

nFinal:被final修飾過的類和方法就是“最終的版本”

uFinal class classname {}說明該類不可以再被繼承

uFinal function methodname()說明該方法在子類中不可以進行重寫,也不可以被覆寫。

Ø類常量,定義時使用關鍵字const,如const

PI=3.14159。常量不需要執行個體化對象,直接由“類名::常量名”調用即可。

Ø構造函數:void

__construct([mixed args [,…]]);如果類中沒有構造方法,那麼PHP會自動生成一個。自動生成的構造方法沒有任何參數,沒有任何操作

Ø析構方法:void

__destruct(void)一般情況下是不需要收到建立析構方法的。

Ø繼承:class subClassextends superclass { … }

Ø多态:存在兩種形式:覆寫和重載,覆寫就是子類和父類中的方法名稱及參數完全相同;重載就是方法名稱相同,但是參數個數或類型不同。

Ø子類不僅可以調用自己的變量和方法,也可以調用父類中的變量和方法:

n$this->調用本身的變量或方法,$this隻能在類的内部使用

n“::”可以在沒有聲明任何執行個體的情況下通路類中的成員方法或成員變量。通用格式為“關鍵字::變量名/常量名/方法名”,關鍵字分為三種情況:parent(調用父類中的成員變量、方法和常量)、self(調用目前類中的靜态成員和常量)、類名(調用奔雷中的變量、常量和方法)

Ø抽象類

n僅能作為其他類的父類來使用,不能被執行個體化

nAbstract class abstractName{}

n抽象類中至少要包含一個抽象方法,抽象方法沒有方法體,abstract function abstractName();

Ø接口的使用

nPHP隻支援單繼承,如果想實作多重繼承,就要使用接口

nPHP可以實作多個接口

n接口類通過interface關鍵字來聲明,并且類中隻能包含未實作的方法和一些成員變量,格式為interface InterfaceNmae { function interfaceName1(); }

n不要用public之外的關鍵字來修飾接口中的類成員,對于方法,不寫關鍵字也可以。

n子類是通過implements關鍵字來實作接口的,如果實作多個接口,那麼每個接口之間應使用逗号“,”隔開。接口類中所有未實作的方法需要在子類中全部實作。

uClass SubClass implement InterfaceName1, InterfaceName2 { }

Ø各個類可以實作自己的複制拷貝函數__clone()

n對象可以調用clone,實作對象的複制;PHP5之後,=預設是指引用

n兩個等号“==”是比較兩個對象的内容

n三個等号“===”是比較對象的引用位址

ØInstanceof:objectName instanceof ClassName,檢測目前對象是屬于哪個類

Ø魔術方法__

nPHP中保留了所有以“__”開頭的方法,是以隻能使用PHP中已有的這些方法,不要自己建立

n__set()、__get()

n__call()

n__sleep()和__wakeup()

u__sleep()可以清除對象并傳回一個包含該對象中所有變量的數組

u__wakeup()方法則是恢複在序列号中可能丢失的資料庫連接配接及相關工作。

n__toString()将對象轉化為字元串

n__autoload()避免在一個頁面引入多個類時需要使用include_once()函數或require_once()函數一個個引入,__autoload()方法可以自動執行個體化需要使用的類。PHP5将調用__autoload()方法,在指定的路徑下自動查找和該類名稱相同的檔案,如果找到,程式則繼續執行;否則,報告錯誤。

PHP加密技術

Ø單向加密:String

crypt(string str[, string salt]);支援4種算法:CRYPT_STD_DES、CRYPT_EXT_DES、CRYPT_MD5、CRYPT_BLOWFISH

Ømd5():

Øsha1()

Ø

PHP操作MySQL資料庫

ØMysql_connect()、mysql_select_db()、mysql_query()、mysql_fetch_array()、mysql_fetch_object()、mysql_fetch_row()、mysql_num_rows()、

PHP資料庫抽象層

ØPDO是PHP data object,支援多種資料庫,有了PDO,使用者不必再使用mysql_*函數

ØPDO構造函數__construct(string $dsn[,string $username[,string $password[,array$driver_options]]])

nDsn是data source name的首字母縮寫,包括三個部分:PDO驅動名稱(如mysql、sqlite、pgsql)、冒号和驅動特定的文法。

ØInt PDO:exec(string statement)傳回執行SQL語句後受影響的行數

ØPDOStatement PDO::query(string statment)參數statement是要執行的SQL語句,他傳回的是一個PDOStatement對象

ØPDO事務處理

ØPDO存儲過程

ThinkPHP架構

Smarty模闆技術

PHP與XML技術

PHP與Ajax技術

ØAjax = Asynchronous JavaScript And XML的縮寫

ØAjax在使用者和伺服器之間引入一個中間媒介(Ajax引擎),Web頁面不用打斷互動流程進行重新加載即可動态地更新。

ØAjax利用JS将DOM、XHTML(或HTML)、XML以及CSS等技術綜合起來,并控制它們的行為

ØAjax技術中,最核心的技術就是XMLHttpRequest