Time of Update: 2016-07-13
項目中有時我們需要使用PHP將特定的資訊進行加密,也就是通過密碼編譯演算法產生一個加密字串,這個加密後的字串可以通過解密演算法進行解密,便於程式對解密後的資訊進行處理。最常見的應用在使用者登入以及一些API資料交換的情境。筆者收錄了一些比較經典的PHP加密解密函數代碼,分享給大家。加密解密原理一般都是通過一定的加密解密演算法,將密鑰加入到演算法中,最終得到加密解密結果。1、非常給力的authcode加密函數,Discuz!經典代碼(帶詳解):複製代碼 代碼如下:function
Time of Update: 2016-07-13
背景在項目中很多人喜歡在設定檔使用數組來配置各個配置項,如等級的配置level.config.php:複製代碼 代碼如下:$g_levelConfig = array( '1'=>'新手', '2'=>'進階', );因為項目不同模組經常會相互調用方法,會出現重複包含一個檔案的情況,為了避免錯誤,大家一般都會用require_one,而且經常會在函數裡包含檔案,如:複製代碼 代碼如下:
Time of Update: 2016-07-13
當我們要將一個龐大的資料進行編號時,而編號有位元限制,比如5位的車牌號、10位的某證件號碼、訂單流水號、短網址等等,我們可以使用36進位計算出符合位元的不重複的編號。我們將0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分別代表數值0-35,如字母Z代表35。這樣的話我要得到一個5位的編號,最大資訊量就是36的5次方了,36^5 =
Time of Update: 2016-07-13
對於用過smarty做過php開發的朋友來說,應該都知道在smarty模板裡面判斷foreach迴圈是否是最後一個可以用$smarty.foreach.name.last來判斷迴圈是否到了最後一條記錄,在thinkphp的模板中常見的迴圈是volist,但是volist的各種屬性中並沒有直接判斷最後一條記錄的屬性,那麼在thinkphp中如何判斷呢?下面的代碼可以實現ThinkPHP中volist斷最後一條記錄。舉例代碼如下,讀者可以自己去體會。class="last">指令碼之家以上程式碼片段
Time of Update: 2016-07-13
ThinkPHP支援多種php模板引擎,可以根據個人需要加以配置。下面我們以Smarty模板引擎為例,給大家說說具體的操作流程!首先去Smarty官網上下載一個Smarty。本站下載地址:http://www.jb51.net/codes/16086.html。接下來解壓壓縮包,會有兩個檔案夾:demo和libs。開啟libs檔案夾,複製所有內容。接下來,開啟你網站根目錄
Time of Update: 2016-07-13
ThinkPHP模板中的switch標籤用於在模板中根據不同情況輸出不同的值。ThinkPHP模板引擎支援switch判斷,可根據不同條件輸出不同的結果,使用格式如下:輸出內容1輸出內容2預設情況用法舉例如下:管理員遊客此處注意:name屬性可以使用函數以及系統變數,其屬性值為變數名稱,沒有$符號,而value值使用變數時需要帶$符號,如上面的例子所示。而value的值在使用變數方式的情況下,不再支援多個條件的同時判斷,如下面多條件判斷。多條件判斷:case 的 value
Time of Update: 2016-07-13
PHP代碼如下:複製代碼 代碼如下:$php_var = 1; 對應C的代碼是:複製代碼 代碼如下:zval* c_var; //定義PHP變數指標 MAKE_STD_ZVAL(c_var); //初始化PHP變數 ZVAL_LONG(c_var,1) ;//賦值 ZEND_SET_SYMBL( EG(active_symbol_table), " php_var ", c_var);//註冊到全域變數符號表一.首先看第一行: zval* c_var;//申明一個zval指標c_
Time of Update: 2016-07-13
ThinkPHP實現串連多個資料的時候,如果資料庫在同一個伺服器裡的話只需要這樣定義模型:class MembersModel extends Model{protected $trueTableName = 'members.members';
Time of Update: 2016-07-13
ThinkPHP實現大量刪除資料原理很簡單,只需在模板頁面裡面寫上這樣傳過來就是一個數組,action的刪除函數del()如下:/****刪除函數支援刪除多條和一個**/function del(){ //dump($_GET['id']); //$name = strtolower($_GET['_URL_'][0]); //擷取當前模組名 $name = $this->getActionName(); $model = D($name);//擷取當期模組的操作對象 $id = $_
Time of Update: 2016-07-13
在電腦科學中,Regex用來描述或者匹配一系列符合某個句法規則的字串的單個字串。在WEB開發中,Regex通常用來檢測、尋找替換某些符合規則的字串,如檢測使用者輸入E-mai格式是否正確,採集符合規則的頁面內容等等。今天我們分別用PHP和Javscript向大家介紹WEB開發中最常用最實用的Regex及其用法,Regex是一門學科,不可能使用一篇文章來講解完,理論的東西網上很多,有興趣的同學可以搜一大把。不過你也許沒必要去埋頭學習琢磨不透的Regex,看本文和執行個體給您呈現常用、實用的Rege
Time of Update: 2016-07-13
資料分頁可能是web編程裡最常用到的功能之一。ThinkPHP實現分頁功能十分簡潔。只需要定義幾個參數就可以實現。並且擴充也十分方便。下面讓我們從零開始實現ThinkPHP的分頁程式吧。1.首先,我們得建立一個用於分頁測試的資料庫 test.sql代碼如下。CREATE TABLE `test` (`id` int(10) unsigned NOT NULL auto_increment,`name` char(100) NOT NULL,`content` varchar(300) NOT
Time of Update: 2016-07-13
下面附上import的幾個用法介紹1、用法一import('@.Test.Translate');@,表示項目根目錄。假定根目錄是:App/匯入類庫的路徑是:App/Lib/Test/Translate.class.php結論:import('@')是相對於項目目錄的Lib目錄而言2、用法二import('Think.Test.Translate');Think,表示系統根目錄。既是:./ThinkPHP/匯入類庫的路徑是:./ThinkPHP/Lib/Test/Translate.class.
Time of Update: 2016-07-13
隨著科技的進步,二維碼應用領域越來越廣泛,本站之前已有文章介紹通過使用jQuery外掛程式來產生二維碼,今天我給大家分享下如何使用PHP產生二維碼,以及如何產生中間帶LOGO映像的二維碼。利用Google API產生二維碼Google提供了較為完善的二維碼產生介面,調用API介面很簡單,以下是調用代碼:複製代碼 代碼如下:$urlToEncode="http://www.jb51.net"; generateQRfromGoogle($urlToEncode); /** * google
Time of Update: 2016-07-13
ThinkPHP的session跨域問題很多開發人員都遇到過!其實不管是ThinkPHP還是php本身,在解決session跨域問題的時候都需要設定session.cookie_domain。在ThinkPHP裡,需要修改設定檔conf/config.php在第一行加上:ini_set('session.cookie_domain',
Time of Update: 2016-07-13
ThinkPHP3.1.3在啟用路由的情況下,其分頁地址不是路由的地址,由於thinkphp3.2.1的代碼也沒有修複,很多人都遇到了這一問題,本文採納olcms的修改方法解決這一問題,特別感謝phper jack對此做出的貢獻,具體解決辦法是修改ThinkPHP的functions.php的U方法,在287行左右: if(!empty($vars)) { // 添加參數 foreach ($vars as $var => $val){ if('' !== trim($val)) $url .
Time of Update: 2016-07-13
ThinkPHP架構的模板中調用session資料的方法有很多,可以很據情況靈活運用,常見的有以下幾類:1.在模板中直接調用{$Think.session}擷取session;2.在標籤直接編寫php代碼來調用$_SESSION資料;3.在模板中寫,然後在裡面直接編寫php代碼來調用$_SESSION;4.在Action中將$_SESSION變數通過assign()方法賦值給模板;5.在自訂函數庫中,建立一個函數用來返回$_SESSION變數,然後在模板檔案中使用{$變數命 |
Time of Update: 2016-07-13
最近在開發過程中需要擷取某個類方法的參數數量、名稱及參數順序,好根據參數的名稱來從$_GET裡取值。如方法原型為test($uid,$score), 那麼我就知道需要需要從$_GET取複製代碼 代碼如下:$uid = $_GET['uid'];$score = $_GET['score'];然後調用方法$obj->test($uid,$score)當然前提是約定好了參數名稱和get方法傳值變數名一致。採用PHP的反射API,獲得函數參數名稱和參數預設值的方法如下:複製代碼 代碼如下:class
Time of Update: 2016-07-13
cURL 是一個功能強大的PHP庫,使用PHP的cURL庫可以簡單和有效地抓取網頁並採集內容,設定cookie完成類比登入網頁,curl提供了豐富的函數,開發人員可以從PHP手冊中擷取更多關於cURL資訊。本文以類比登入開源中國(oschina)為例,和大家分享cURL的使用。PHP的curl()在抓取網頁的效率方面是比較高的,而且支援多線程,而file_get_contents()效率就要稍低些,當然,使用curl時需要開啟下curl擴充。代碼實戰先來看登入部分的代碼:複製代碼 代碼如下://
Time of Update: 2016-07-13
近期做一個網站的投票時,遇到ThinkPHP中的cookie和session衝突導致Cookie不能使用的情況。 該網站採用的是ThinkPHP架構製作,有一頁面上面展示很多圖片,要求每個圖片下面有對應的投票,通過限制ip地址來,限制遊客在一定時間範圍內,能對多個圖片投票,但是每個圖片只能投票一次,開始使用ip儲存在資料庫解決,後來改進為使用session儲存,ip在服務檔案裡,不過要把產生的sessionid儲存在本地的cookie中,按照ThinkPHP手冊說明操作session一切順利,
Time of Update: 2016-07-13
前言遇到一道面試題,題目大概意思如下:使用兩個普通棧實現一個特殊棧,使得pop、push、min三個函數的都是複雜度為O(1)的操作,min函數是獲得當前棧的最小值。初步想法1.要實現min函數為(1)操作,當時第一想法是事先需要算好當前最小值,於是會想到用一個值來儲存當前棧中最小值元素,然後push和pop操作的時候維護這個值。這樣min,push都是O(1)了,但pop可不是,如果當前彈出的是最小值,需要從新尋找當前元素的最小值,這個就不是o(1)了。2.而且上面方法沒有用到另外一個棧,於是