CodeIgniter 整合 UCenter 1.6 實現雙向同步登入與通訊
將 CodeIgniter 開發的子站點與既有論壇(如 Discuz!)透過 UCenter 實現用戶同步登入、註冊、登出等雙向通訊,是常見的整合需求。本文記錄
PHP 自動偵測字串編碼並轉換為 UTF-8 的實用函數
在處理外部輸入(如 API 回傳、檔案讀取、使用者提交)時,字串編碼往往不確定,直接處理易產生亂碼。利用 mb_detect_encoding() 搭配 mb_
PHP 錯誤「Cannot use object of type stdClass as array」原因與解決方案
開發者在處理資料庫查詢結果時,常遇到 Fatal error: Cannot use object of type stdClass as array 錯誤。這
CodeIgniter 整合 Tank Auth 權限庫完整教學:安裝、配置與核心功能解析
在眾多 CodeIgniter 認證類庫中,Tank Auth 以配置簡單、功能完整、作者持續維護(最新版 1.0.9,1.0.8 起支援 CI 2.0)脫穎而
新浪 SAE 雲平台上配置 CodeIgniter 資料庫連線完整指南
在新浪 SAE(Sina App Engine)雲平台上部署 CodeIgniter 專案時,由於平台對檔案系統權限的嚴格限制,快取目錄無法正常寫入,導致原版
PHP 面向對象進階學習筆記(五):命名空間完整指南——定義、導入、別名與解析規則
命名空間解決什麼問題? 用戶代碼與內部/第三方類、函數、常量名稱沖突。 為過長標識符創建別名,提升可讀性。 定義命名空間 namespace MyProj
CodeIgniter 實現登錄後自動跳轉回原請求頁面:MY_Controller 攔截與攜帶 redirect 參數
核心思路 基礎控制器 MY_Controller 構造函數檢查登錄狀態。 未登錄且非登錄頁面時,將當前完整 URI(含查詢字符串)作為 redirect 參數
CodeIgniter 整合 SWFUpload 最佳實踐:解決 MIME 識別與 Session 丟失兩大核心難題
難題一:SWFUpload 文件 MIME 均為 application/octet-stream 導致 CI 驗證失敗 解決方案 視圖引入 SWFUploa
CodeIgniter 多文件上傳並自動生成多尺寸縮略圖完整實現
功能清單 單次上傳 5 張圖片(可通過循環數調整)。 自動生成兩種尺寸縮略圖:170×170、600×600(保持比例)。 原圖與縮略圖分目錄存儲,信息入庫。
CodeIgniter ellipsize() 修改支持中文截斷:將 substr/strlen 替換為 mb_substr/mb_strlen
問題 CI Text Helper ellipsize() 內部使用 substr/strlen 按字節截取,中文 UTF-8 導致亂碼。 修改文件 syst
CodeIgniter 過濾 HTML 危險代碼(XSS 防護)三種方案對比
方案一:原生 htmlspecialchars $safe = htmlspecialchars($input, ENT_QUOTES, UTF-8); 最輕量
CodeIgniter 文件上傳報錯「You did not select a file to upload」兩大原因及解決方案
原因一:文件域 name 不匹配 CI 默認尋找 name=userfile 的文件域。 <input type=file name=userfile s
PHP 合並壓縮多個 JS/CSS 文件輸出:減少 HTTP 請求提升頁面加載速度
前端調用方式 <link rel=stylesheet href=cssmin.php?get=base,style1,style2,global&
Smarty truncate 修飾符 UTF-8 中文截取亂碼終極解決方案:自定義 truncate2 插件
問題根源 Smarty 內建 truncate 按字節截取,UTF-8 中文佔 3 字節,直接截斷導致半個字符產生亂碼。 解決方案:基於字符而非字節的截取插件
PHP 多維數組 foreach 遍歷實戰:三維數組輸出 HTML 表格完整示例
數據結構 array( array(1, 2468246, salkh@bbs.com), array(2, 34368164
PHP 生成 RFC 1123 格式 GMT 時間的安全方案:拒絕 setlocale 陷阱,推薦 gmdate
需求背景 REST API 簽名驗證要求 HTTP Header 包含 RFC 1123 格式日期,如 Tue, 01 Apr 2014 16:16:07 GM
PHP empty() 函數版本差異陷阱:5.5 前僅支持變量,5.5+ 支持任意表達式
血淋淋的教訓 if (strlen($passwd) < 6 || empty(preg_replace(/\d/, , $passwd))) { //