Time of Update: 2017-02-17
User Language Class 擷取/設定使用者訪問的頁面語言,如果使用者沒有設定訪問語言,則讀取Accept-Language。根據使用者選擇的語言顯示對應的頁面(英文,簡體中文,繁體中文)UserLang.class.php<?php/** User Language Class 擷取/設定使用者訪問的頁面語言,如果使用者沒有設定訪問語言,則讀取Accept-Language* Date: 2014-05-26* Author: fdipzone* Ver:
Time of Update: 2017-02-16
網路應用程式的效能受很多因素的影響。資料庫存取,檔案系統操作,網路頻寬等都是潛在的影響因素。 Yii 已在各個方面減少架構帶來的效能影響。但是在使用者的應用中仍有很多地方可以被改善來提高效能。1. 開啟 APC 擴充啟用 PHP APC 擴充 可能是改善一個應用整體效能的最簡單方式。此擴充緩衝和最佳化 PHP 中間代碼並避免時間花費再為每個新來的請求解析PHP指令碼。2. 禁用偵錯模式禁用偵錯模式是另一個改善效能的容易方式。若常量 YII_DEBUG 被定以為 true,這個 Yii
Time of Update: 2017-02-16
1. 跨站指令碼攻擊的防範跨站指令碼攻擊(簡稱 XSS),即web應用從使用者收集使用者資料。 攻擊者常常向易受攻擊的web應用注入JavaScript,VBScript,ActiveX,HTML或 Flash來迷惑訪問者以收集訪問者的資訊。 舉個例子,一個未經良好設計的論壇系統可能不經檢查就顯示使用者所輸入的內容。 攻擊者可以在文章內容中注入一段惡意的JavaScript代碼。
Time of Update: 2017-02-16
控制台應用主要用於實現線上Web應用所需要的離線操作,例如代碼產生, 搜尋索引編譯, 郵件發送等等. Yii架構以物件導向的方式提供了一個編寫控制台應用的架構. 它允許控制台應用訪問線上Web應用所使用的資源 (例如資料庫連接資訊) .1. 概覽Yii可以以命令列的方式運行每一個控制台任務,控制台命令是一個繼承自CConsoleCommand的類。當我們使用 yiic webapp 工具建立一個初始化的Yii應用骨架的時候, 我們可以在protected檔案夾下看到如下兩個檔案:yiic:
Time of Update: 2017-02-16
國際化 (譯者註:即 Internationalization,因為這個單詞 I 和 n 之間有18個字母,因此常縮寫為I18N) 是指設計一種應用軟體的過程,這種軟體無需做大的工程改變就能適應不同的語言和地區的需要。 對 Web 應用程式來說,國際化尤為重要,因為潛在的使用者可能來自世界的各個角落。Yii 在若干方面提供了對 I18N 的支援它為每種可能的語言和變數提供了本地化資料。它提了供資訊和檔案的翻譯服務。它提供了基於本地化的日期和時間格式。它提供了基於本地話的數字格式。在下面的小節中,
Time of Update: 2017-02-16
Web service 是一個軟體系統,設計來支援電腦之間跨網路相互訪問。在Web應用程式,它通常用一套API,可以被互連網訪問和執行在遠端系統主機上的被請求服務。系統主機所要求的服務。例如,以Flex為基礎的用戶端可能會援引函數實現在伺服器端運行PHP的Web應用程式。 Web service依賴SOAP作為通訊協定棧的基礎層。Yii提供CWebService和CWebServiceAction簡化了在Web應用程式實現Web service。這些API以類形式實現,被稱為service
Time of Update: 2017-02-16
Yii提供了一個完整的,基於PHP5異常處理的錯誤處理機制。當一個應用開始運行,進行使用者請求的處理的時候,會註冊handleError方法來處理PHP warnings和notices資訊;同時也註冊加handleException方法來處理未被捕獲的PHP異常。因此,如果在應用運行期間出現一個PHP warning/notice 或者一個未捕獲的PHP異常,錯誤處理器就會接過控制權來運行必要的處理機制。提示:
Time of Update: 2017-02-16
Yii 提供了一個靈活可擴充的日誌功能。記錄的日誌 可以通過記錄層級和資訊分類進行歸類。通過使用 層級和分類過濾器,所選的資訊還可以進一步路由到 不同的目的地,例如一個檔案,Email,瀏覽器視窗等。1. 資訊記錄資訊可以通過 Yii::log 或 Yii::trace 記錄。其區別是後者只在當應用程式運行在偵錯模式(debug mode) 中時才會記錄資訊。Yii::log($message, $level, $category);Yii::trace($message, $category)
Time of Update: 2017-02-16
Theming是一個在Web應用程式裡定製網頁外觀的系統方式。通過採用一個新的主題,網頁應用程式的整體外觀可以立即和戲劇性的改變。在Yii,每個主題由一個目錄代表,包含view檔案,layout檔案和相關的資源檔,片, CSS檔案, JavaScript檔案等。主題的名字就是他的目錄名字。全部主題都放在在同一目錄WebRoot/themes下
Time of Update: 2017-02-16
Web應用程式完整的URL管理組件括兩個方面。首先, 當使用者請求約定的URL,應用程式需要解析 它變成可以理解的參數。第二,應用程式需求提供一種創造URL的方法,以便建立的URL應用程式可以理解的。對於Yii應用程式,這些通過CUrlManager輔助完成。1. Creating
Time of Update: 2017-02-16
對於需要限制某些使用者訪問的網頁,我們需要使用驗證(Authentication)和授權(Authorization)。 驗證是指核查一個人是否真的是他自己所聲稱的那個人。這通常需要一個使用者名稱和密碼, 但也包括任何其他可以表明身份的方式,例如一個智慧卡,指紋等等。 授權則是找出已通過驗證的使用者是否允許操作特定的資源。 這一般是通過查詢此使用者是否屬於一個有權訪問該資源的角色來判斷的。Yii 有一個內建的驗證/授權(auth)架構,用起來很方便,還能對其進行自訂,使其符合特殊的需求。Yii
Time of Update: 2017-02-16
自版本 1.1.2 起, Yii 裝備了基於 Web 介面的代碼產生工具Gii。 它取代了之前的命令列端的代碼產生工具 yiic shell。 在這部分,我們將講解如何使用 Gii 以及如何擴充 Gii 以增加我們的開發成果。1. 使用 GiiGii 是以模組的方式實現的,它必須在一個已存在的 Yii 應用程式中使用。要使用 Gii,我們首先更改應用程式的配置如下:return array( ...... 'modules'=>array(
Time of Update: 2017-02-25
本文執行個體講述了php根據年月擷取當月天數及日期數組的方法。分享給大家供大家參考,具體如下:function get_day( $date ) { $tem = explode('-' , $date); //切割日期 得到年份和月份 $year = $tem['0']; $month = $tem['1']; if( in_array($month , array( 1 , 3 , 5 , 7 , 8 , 01 , 0
Time of Update: 2017-02-15
在PHP的無限級分類中,用到的很多方法都是遞迴,但是我們對遞迴的理解還很模糊,我們接下來就深入理解下遞迴的優缺點,讓大家能有個全面的認識。什麼是遞迴?定義遞迴(英語:Recursion),又譯為遞迴,在數學與電腦科學中,是指在函數的定義中使用函數自身的方法。英文的Recursion從詞源上分析只是"re- (again)" + "curs- (come, happen)" 也就是重複發生,再次重現的意思。 而對應的中文翻譯 ”遞迴“ 卻表達了兩個意思:”
Time of Update: 2017-02-15
因為Yii測試架構基於PHPUnit構建,所以推薦你在理解如何寫一個單元測試之前先通讀一遍PHPUnit文檔。下面我們簡要概括一下在Yii中寫一個單元測試的基本原則:一個單元測試以繼承自CTestCase或者CDbTestCase的XyzTest類的形式編寫, 其中Xyz代表要被測試的類. 例如, 想要測試Post類,我們會相應地將測試類別命名為PostTest. 基類CTestCase是通用單元測試類, 而CDbTestCase只適用於測試AR模型類. 由於PHPUnit_Framework_
Time of Update: 2017-02-15
自動化的測試需要被執行很多次.為了確保測試過程是可以重複的, 我們很想要在一些可知的狀態下進行測試, 這個狀態我們稱之為 特定狀態. 舉個例子,在一個部落格應用中測試文章建立特性, 每次當我們進行測試時, 與文章相關的表(例如. Post 表 , Comment 表)應該被恢複到一個特定的狀態下. PHPUnit 文檔 已經很好的描述了一般的特定狀態的構建. 而本節主要介紹怎樣像剛才描述的例子那樣構建資料庫特定狀態.設定構建資料庫的特定狀態,這恐怕是測試以資料庫為後端支援的應用最耗時的部分之一.
Time of Update: 2017-02-15
測試是軟體開發中必不可少的環節.無論我們是否意識到,在開發Web應用的時候,我們始終都是在測試的.例如, 當我們用PHP寫了一個類時, 我們可能會用到一些注入 echo 或者 die 語句來顯示我們是否正確地實現了某個方法;當我們實現了包含一套複雜的HTML表單的web頁面時, 我們可能會試著輸入一些測試資料來確認頁面是否是按照我們的預期來互動的.更進階的開發人員則會寫一些代碼來自動完成這個測試過程, 這樣一來每當我們需要測試一些東西的時候, 我們只需要調用代碼, 剩下來的就交給電腦了.
Time of Update: 2017-02-15
由於擴充意味著是第三方開發人員使用,需要一些額外的努力去建立它。以下是一些一般性的指導原則:*擴充最好是自己自足。也就是說,其外部的依賴應是最少的。如果使用者的擴充需要安裝額外的軟體包,類或資源檔案,這將是一個頭疼的問題。 *檔案屬於同一個擴充的,應組織在同一目錄下,目錄名用副檔名稱。 *擴充裡面的類應使用一些單詞字母首碼,以避免與其他擴充命名衝突。 *擴充應該提供詳細的安裝和API文檔。這將減少其他開發員使用擴充時花費的時間和精力。
Time of Update: 2017-02-15
頁面緩衝指的是緩衝整個頁面的內容。頁面緩衝可以發生在不同的地方。 例如,通過選擇適當的頁面頭,用戶端的瀏覽器可能會緩衝網頁瀏覽有限時間。 Web應用程式本身也可以在緩衝中儲存網頁內容。 在本節中,我們側重於後一種辦法。頁面緩衝可以被看作是 片段快取一個特殊情況 。 由於網頁內容是往往通過應用布局來產生,如果我們只是簡單的在布局中調用beginCache() 和endCache(),將無法正常工作。
Time of Update: 2017-02-18
需求:現在常用的表單驗證碼大部分都是要使用者輸入為主,但這樣對手機使用者會不方便。如果手機使用者訪問,可以不用輸入,而是click某一位置便可確認驗證碼,這樣就會方便很多。原理:1.使用PHP imagecreate建立PNG圖象,在圖中畫N個圓弧,其中一個是完整的圓(驗證用),將圓心座標及半徑記錄入session。2.在瀏覽器,當使用者在驗證碼圖片上點擊時,記錄點擊的位置。3.將使用者點擊的座標與session記錄的圓心座標、半徑比較,判斷是否在圓中,如是則驗證通過。ClickCaptcha.