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

來源:互聯網
上載者:User

標籤:版本   尾碼   gis   到期   lod   掃描   影響   將不   art   

 

// 刪除

方法1:將其值設定為空白字串

   setcookie(‘user[name]‘, ‘‘);

方法2:將目標cookie設為“已到期”狀態。

    //將cookie的存留時間設定為到期,則生存期限與瀏覽器一樣,當瀏覽器關閉時就會被刪除。

   setcookie(‘usr[name]‘, ‘‘, time()-1);

# 注意:

1. cookie只能儲存字串資料2. $_COOKIE只用於接收cookie資料,不用於設定或管理cookie資料。

    對$_COOKIE進行操作不會影響cookie資料。

    $_COOKIE只會儲存瀏覽器在請求時所攜帶的cookie資料。3. cookie生命週期:

    臨時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:[email protected]/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);

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.