PHP最全筆記(五)(值得收藏,不時翻看一下)

 

// 刪除php

方法1:將其值設置爲空字符串web

   setcookie('user[name]', '');算法

方法2:將目標cookie設爲「已過時」狀態。shell

    //將cookie的生存時間設置爲過時,則生存期限與瀏覽器同樣,當瀏覽器關閉時就會被刪除。數組

   setcookie('usr[name]', '', time()-1);瀏覽器

# 注意:緩存

1. cookie只能保存字符串數據2. $_COOKIE只用於接收cookie數據,不用於設置或管理cookie數據。服務器

    對$_COOKIE進行操做不會影響cookie數據。cookie

    $_COOKIE只會保存瀏覽器在請求時所攜帶的cookie數據。3. cookie生命週期:session

    臨時cookie:瀏覽器關閉時被刪除

    持久cookie:$expire參數爲時間戳,表示失效時間。4. 有效目錄

   cookie只在指定的目錄有效。默認是當前目錄及其子目錄。

    子目錄的cookie在其父目錄或同級目錄不可獲取。5. cookie區分域名

    默認是當前域名及其子域名有效。6. js中經過document.cookie得到,類型爲字符串7. 瀏覽器對COOKIE總數沒有限制,但對每一個域名的COOKIE數量和每一個COOKIE的大小有限,並且不一樣瀏覽器的限制不一樣。

 

/* 【session】 */

1. 開啓session機制

   session_start()

    注意:session_start()函數前不能有輸出!除非開啓ob緩存。2. 操做數據

    對$_SESSION數組進行操做

3. 瀏覽器端保存SessionID,默認爲當前域名下的全部目錄及其子目錄生效。即默認設置cookie的path值爲'/'

4. 服務器保存session數據

    默認保存方式:每一個會話都會生成一個session數據文件,文件名爲:sess_加SessionID5. session能夠存儲除了資源之外的任何類型數據。

    數據被序列化後再保存到文件中。6. $_SESSION的元素下標不能爲整型!

    由於只對元素值進行序列化。

    元素內的數組下標無此要求。7. 生存週期

    默認是瀏覽器關閉

        由於瀏覽器保存的cookie變量SessionID是臨時的

        可是服務器端的session數據文件不必定消失(須要等待session的垃圾回收機制來處理)

    能夠延長cookie中PHPSESSID變量的生命週期。(不推薦)

   php.ini配置session.gc_maxlifetime8. 刪除數據

    $_SESSION變量在腳本結束時依然會消失。開啓session機制時會造出$_SESSION變量。

    $_SESSION與保存session數據的文件是兩個空間。

   unset($_SESSION['key'])只是刪除數組內的該元素,不會當即相應到保存session數據的文件上。

        等到腳本結束,纔會將$_SESSION的數據寫入到該文件中。

   session_destroy()    銷燬保存session數據的文件,也不會對該文件寫入內容。

        並不刪除$_SESSION變量,unset或腳本結束纔會刪除該變量。

    如何徹底刪除一個session?需刪除3部分

       unset($_SESSION);    

            刪除$_SESSION變量後,數據文件並未被改動。若是單獨使用unset,則需先置空$_SESSION = array()

       session_destroy();

       setcookie('PHPSESSID', '', time()-1);//保險作法是將其生命週期失效    整個腳本週期內,只對數據文件讀一次、寫一次。

 

// 重寫session的存儲機制

# session存儲方式

session.save_handler = user|files|memcache

# 因數據文件過多致使的問題,可經過分子目錄保存進行解決

PHP配置文件下session.save_path選項,並需手動建立數據存放目錄。

在該配置選項前加層級。分佈子目錄的原則,利用會話ID的相應字母來分配子目錄。仍需手動建立子目錄。

session.save_path = "2; F:/PHPJob/Temp"

# 多服務器數據共享問題

 

# 數據存儲操做:

    初始化$open、釋放資源$close、讀$read、寫$write、銷燬存儲介質$destroy(調用session_destroy時觸發該操做)、垃圾回收$gc

# 會話ID的長度可變。不一樣的設置方式致使不一樣長度的會話ID。

session.hash_function   容許用戶指定生成會話ID的散列算法。

    '0' 表示MD5(128 位),'1' 表示SHA-1(160 位)。

session.hash_bits_per_character    容許用戶定義將二進制散列數據轉換爲可讀的格式時每一個字符存放多少個比特。

    可能值爲 '4'(0-9,a-f),'5'(0-9,a-v),以及 '6'(0-9,a-z,A-Z,"-",",")。

    總hash長度爲128bit,會話ID長度爲128/可能值,4->32, 5->26, 6->22

# 自定義數據存儲操做方法

 

# 注意:不用關心PHP如何序列化、反序列化、如何獲得數據和寫入數據,只作與數據存儲相關的操做session_set_save_handler    

設置用戶自定義的會話數據存儲函數

   bool session_set_save_handler(callable $open, callable $close, callable$read, callable $write, callable $destroy, callable $gc)

執行順序:open, close, read, write, destroy, gc

# 先設置處理器,再開啓會話

 

# 經常使用函數

session_start        開啓或恢復會話機制

session_id            獲取或設置當前會話

IDsession_destroy        銷燬當前會話的全部數據(銷燬數據文件)

session_name        獲取或設置當前會話名稱(cookie變量名,默認爲PHPSESSID)

session_save_path    獲取或設置當前會話數據文件保存路徑

session_set_save_handler    設置用戶自定義的會話數據存儲函數

session_unset        釋放全部會話變量(清空$_SESSION數組元素)

session_encode        將當前會話數據編碼爲一個字符串

session_decode        將字符串解譯爲會話數據

session_write_close    寫入會話數據並關閉會話

session_register_shutdown    關閉會話

session_set_cookie_params    設置會話cookie變量,必須在session_start()前使用。

session_set_cookie_params(0,"/webapp/"); 

//設置session生存時間

session_get_cookie_params    獲取會話cookie變量。返回包含當前會話cookie信息的數組

 

# 配置

php.iniini_set($varname, $newvalue);

    //該函數的配置只對當前腳本生效

    //並不是全部php.ini設置都可用該函數設置ini_get($varname)   //獲取某配置項信息ini_get_all([str $extension])   //返回全部配置項信息的

 

數組

# session擴展配置

session.name    指定會話名以用做cookie的名字。只能由字母數字組成,默認爲PHPSESSID。

session.save_path   定義了傳遞給存儲處理器的參數。

    若是選擇了默認的files文件處理器,則此值是建立文件的路徑。默認爲/tmp。

    可選的N參數來決定會話文件分佈的目錄深度。

    要使用N參數,必須在使用前先建立好這些目錄。在ext/session目錄下有個小的shell腳本名叫mod_files.sh能夠用來作這件事。

    若是使用了N參數而且N大於0,那麼將不會執行自動垃圾回收。

session.save_handler    定義了來存儲和獲取與會話關聯的數據的處理器的名字。默認爲files。

    若是用戶自定義存儲器,則該值改成user。

   ini_set('session.save_handler', 'user');//此設置只針對當前腳本生效。

session.auto_start  指定會話模塊是否在請求開始時自動啓動一個會話。默認爲 0(不啓動)。

session.gc_probability與session.gc_divisor合起來定義了在每一個會話初始化時啓動gc(garbage collection 垃圾回收)進程的機率。此機率用 gc_probability/gc_divisor 計算得來。例如 1/100 意味着在每一個請求中有 1% 的機率啓動gc進程。session.gc_divisor默認爲100。session.gc_probability默認爲1。

 

/* 【圖片生成與處理】 */

GD庫// 畫布生成

# 新建畫布

imagecreate             新建一個基於調色板的圖像

   resource imagecreate(int $x_size, int $y_size)

imagecreatetruecolor    新建一個真彩色圖像

# 基於已有文件或URL建立畫布

imagecreatefromgd2      從GD2文件或URL新建一圖像

imagecreatefromgd2part  從給定的GD2文件或URL中的部分新建一圖像

imagecreatefromgd       從GD文件或URL新建一圖像

imagecreatefromgif      由文件或URL建立一個新圖象

imagecreatefromjpeg     由文件或URL建立一個新圖象

imagecreatefrompng      由文件或URL建立一個新圖象

imagecreatefromstring   從字符串中的圖像流新建一圖像

imagecreatefromwbmp     由文件或URL建立一個新圖象

imagecreatefromxbm      由文件或URL建立一個新圖象

imagecreatefromxpm      由文件或URL建立一個新圖象// 顏色分配imagecolorallocate          爲一幅圖像分配顏色

   int imagecolorallocate(resource $image, int $red, int $green, int $blue)

imagecolorallocatealpha     爲一幅圖像分配顏色 + alpha

imagecolordeallocate        取消圖像顏色的分配

imagecolortransparent       將某個顏色定義爲透明色

imagecolorat            取得某像素的顏色索引值

imagecolorclosest       取得與指定的顏色最接近的顏色的索引值

imagecolorclosestalpha  取得與指定的顏色加透明度最接近的顏色

imagecolorclosesthwb    取得與給定顏色最接近的色度的黑白色的索引

imagecolorexact         取得指定顏色的索引值

imagecolorexactalpha    取得指定的顏色加透明度的索引值

imagecolormatch         使一個圖像中調色板版本的顏色與真彩色版本更能匹配

imagecolorresolve       取得指定顏色的索引值或有可能獲得的最接近的替代值

imagecolorresolvealpha  取得指定顏色 + alpha 的索引值或有可能獲得的最接近的替代值

imagecolorset           給指定調色板索引設定顏色

imagecolorsforindex     取得某索引的顏色

imagecolorstotal        取得一幅圖像的調色板中顏色的數目// 區域填充imagefill   區域填充

   bool imagefill(resource $image, int $x, int $y, int $color)

imagefilledarc          畫一橢圓弧且填充

imagefilledellipse      畫一橢圓並填充

imagefilledpolygon      畫一多邊形並填充

imagefilledrectangle    畫一矩形並填充

imagefilltoborder       區域填充到指定顏色的邊界爲止

imagesettile    設定用於填充的貼圖// 圖形建立imagearc        畫橢圓弧

imagechar       水平地畫一個字符

imagecharup     垂直地畫一個字符

imagedashedline 畫一虛線

imageellipse    畫一個橢圓

imageline       畫一條線段

imagepolygon    畫一個多邊形

imagerectangle  畫一個矩形

imagesetpixel   畫一個單一像素

imagesx         取得圖像寬度

imagesy         取得圖像高度// 畫筆設置imagesetbrush   設定畫線用的畫筆圖像

imagesetstyle   設定畫線的風格

imagesetthickness   設定畫線的寬度// 圖形拷貝imagecopy           拷貝圖像的一部分

imagecopymerge      拷貝併合並圖像的一部分

imagecopymergegray  用灰度拷貝併合並圖像的一部分

imagecopyresampled  重採樣拷貝部分圖像並調整大小

imagecopyresized    拷貝部分圖像並調整大小// 字符建立imagestring         水平地畫一行字符串

imagestringup       垂直地畫一行字符串

imagepsslantfont    傾斜某字體

imagefontheight     取得字體高度

imagefontwidth      取得字體寬度

imagettfbbox        取得使用 TrueType 字體的文本的範圍

imageloadfont       載入一新字體

imagepsencodefont   改變字體中的字符編碼矢量

imagepsextendfont   擴充或精簡字體// 導出畫布爲圖片imagegif    以GIF格式將圖像輸出到瀏覽器或文件

imagepng    以PNG格式將圖像輸出到瀏覽器或文件

imagejpeg   以JPEG格式將圖像輸出到瀏覽器或文件

imagewbmp   以WBMP格式將圖像輸出到瀏覽器或文件

經過header()發送 "Content-type: image/圖片格式" 可使PHP腳本直接輸出圖像。

   header("Content-type: image/gif"); imagegif($im);

imagegd     將 GD 圖像輸出到瀏覽器或文件

imagegd2    將 GD2 圖像輸出到瀏覽器或文件// 釋放畫布資源

imagedestroy    銷燬圖像// 圖像信息

image_type_to_extension     取得圖像類型的文件後綴getimagesize                取得圖像大小

imagesx                     取得圖像寬度

imagesy                     取得圖像高度

imageistruecolor            檢查圖像是否爲真彩色圖像

imagetypes                  返回當前 PHP 版本所支持的圖像類型// 圖像設置

imagerotate         用給定角度旋轉圖像

imagealphablending  設定圖像的混色模式

imageantialias      是否使用抗鋸齒(antialias)功能

imagefilter         對圖像使用過濾器

imagegammacorrect   對 GD 圖像應用 gamma 修正

imageinterlace      激活或禁止隔行掃描

 

/* 【縮略圖】【水印】 */

imagecopyresampled  重採樣拷貝部分圖像並調整大小

   bool imagecopyresampled ( resource $dst_image , resource $src_image , int$dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int$src_w , int $src_h )

imagecopymerge      拷貝併合並圖像的一部分

   bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int$pct )getimagesize        取得圖像大小

   array getimagesize ( string $filename [, array &$imageinfo ] )

 

/* 【URL函數】 */

get_headers — 取得服務器響應一個 HTTP 請求所發送的全部標頭get_meta_tags — 從一個文件中提取全部的 meta 標籤 content 屬性,返回一個數組http_build_query — 生成 URL-encode以後的請求字符串urldecode — 解碼已編碼的URL字符串urlencode — 編碼URL字符串parse_url — 解析URL,返回其組成部分

    'http://username:password@hostname/path?arg=value#anchor'

   scheme(如http), host, port, user, pass, path, query(在問號?以後), fragment(在散列符號#以後)

 

 /編碼可用於交換多個變量

$a = '中國';$b = '四川';$a = urlencode($a);$b = urlencode($b);$a =$a.'&'.$b;$b = explode('&', $a);$a = urldecode($b[1]);$b =urldecode($b[0]);echo $a, $b;//list()函數用於交換變量list($a, $b) = array($b,$a);

相關文章
相關標籤/搜索