Codeigniter的一些优秀特性总结
本文总结了一下Codeigniter的一些优秀特性,算是个人的一些心得分享,推荐给大家。
最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路。用在公众的项目,最好还是按框架规范来,所以还是总结一下,免得以后别人再接手的时候贻笑大方。
1. 首先是 MVC
如果你还不知道 MVC ,应该尽快的学习,你会很快的体会到在 Model 中数据访问,在 Controller 中进行业务逻辑,在 Views 中编写 HTML 代码的价值。如果你之前没有使用过这种模式写过程序,你也许会皱起额头,不过你应该给自己尝试这样做的机会。
一条实践准则是把更少的东西放进 Controller ,记住 DRY 准则:不要重复造轮子。当在超过一个地方编写相同的代码时,应该根据它的类型来尝试编写一个 library, helper,或 model。比如数据库连接类,用得很频繁,就把它做成 model(系统已提供)。
一旦领悟了 MVC 的精髓,这将会成为一种习惯,你会从 MVC 简洁的代码中受益良多。
一个原则就是:复杂的操作都交给Model。Controller更像个建筑师。 Model是苦工。 View 是粉刷工。Controller 只需要把东西丢进Model里就可以了,不需要在意数据是否异常,然后返回一个标志位以及相应的数据。这样MVC 的 架构就体现出来了。
Model其实就像一个电器如:微波炉一样,使用方法越简单越让人喜欢,(把食物放进去 -按启动 -ok,饭熟了。)接口少的好处是,Model升级代码优化的时候,对外界的耦合度不高。即使你内部写得很烂,接口也很干净,用起来也简单。
2. Application 和 System 路径
最好是把 system 和 application 文件夹放在 webroot 以外的地方,如果 index.php 放在 FTP 服务器的 /public_html/ 路径下,应该尝试把 System 放在根目录下 /system ,这样的话,只能通过 index.php 访问你的PHP文件。
不要忘记在index.php文件中修改 $system_folder 和 $application_folder 的值,$system_folder 的值应该是相对于 index.php 文件,而 $application_folder 的值是相对于 system 目录。
3. 错误报告和调试
常常犯的一个错误是忘记关闭 PHP 错误和数据库错误报告,这样做是有风险的。在任何一个公开的站点,error_reporting 应该设置为0 ,最多只能设置为 E_ERROR,数据库设置 db_debug 应该设置为 false,基于其他安全考虑,设置不显示出错信息 ini_set('display_errors', 'Off');
在你编码和调试时,应该把 error_reporting 设置为 E_ALL ,并且在把应用程序发布前解决每一个注意和警告。
一种简易的方法是在 application/config/database.php 文件设置 db_debug 的值为一个常量 MP_DB_DEBUG,当网站在运行中,如下设置:
复制代码 代码如下:
ini_set('display_errors', 'Off');
error_reporting(0);
define('MP_DB_DEBUG', false);
在编码和调试中设置为:
复制代码 代码如下:
ini_set('display_errors', 'On');
error_reporting(E_ALL);
define('MP_DB_DEBUG', true);
4. 安全问题很重要
在接收任何数据到你的程序之前,不管是表单提交的 POST 数据、COOKIE 数据、URI 数据、XML-RPC 数据、还是 SERVER 数组中的数据,我们都推荐你实践下面的三个步骤:
过滤不良数据.
验证数据以确保符合正确的类型, 长度, 大小等. (有时这一步骤也可取代第一步骤)
在提交数据到你的数据库之前将其转换.
关于SQL注入,XSS,以及 CSRF ,你应该先了解它们,再决定是否采用方法来防止它们。可以参考CI手册上的安全指南 以及 输入和安全类。也许最重要的原则是在把数据提交到数据库或文件系统之前检查所有用户的输入。
SQL注入。使用 CI 自带的 Active Record 可以解决这个问题。
XSS (跨站脚本)。通过设置 $config['global_xss_filtering'] = TRUE; 开启自动过滤POST和COOKIE中的跨站脚本攻击,但需要消耗一些资源。也可以在每次处理POST和COOKIE的时候单独使用,把第二个参数设为TRUE,如 $this->input->post('some_data', TRUE); 表单验证类也提供了 XSS 过滤选项,如 $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
CSRF (跨站请求伪造)。CI 2.0 将内置 CSRF 检查,在 Google 上搜索 "CSRF tokens" 学习更多关于在保护表单提交和 URL 链接的知识,在 Ajax 应用方面可以搜索 "double cookie submission" 或 "双提交 cookie"。
SPAM (垃圾留言和恶意注册)。通过保护你的邮件表单,评论表单,以及其他各种免费用户提交的数据来防止垃圾信息,一个简单的方法是只允许一个IP/User客户端在一分钟之内只能提交一次,一个比较好的方式是使用 Captcha ,CI2中内置了一个CAPTCHA的辅助函数。
5. 数据库 和 ORM
CodeIgniter 有一个自带的库 Active Record 能够帮助你在不使用 SQL 语句的情况下写查询语句。这在你不太精通 SQL 语句或不知道怎样防止SQL注入的情况下是一个很好的方法。
当你需要更强大的工具时,你可以考虑使用 Object Relational Mapper ,就是鼎鼎大名的 ORM 了,遗憾的是,CodeIgniter 没有自带 ORM 库,不过也有一些其他很好的选择。
最流行的或许是 DataMapper OverZealous Edition (DMZ),还可以使用 Doctrine (这里有一个教程),另一个选择 RapidDataMapper 是作者自己的作品。
6. 代码实践
编写简洁的代码,并且理解你的代码,不要只是复制粘贴别人的代码,并且不断提高编码能力。手册上的开发规范是一个能学习怎样更好编写代码的地方。
1. DRY。不要总是重复造轮子,把能重用的代码放在它应该在的地方,比如libraries, helpers 或者是 models,而不是controllers,一个经验准则:当你复制代码的时候,也许你已经第二次把它放在了错误的地方。
2. Caching (缓存)。缓存是一个提高性能的很好的方式,尤其是减少数据库的访问。可以参考网页缓存和数据库缓存,或者在论坛上搜索其他的可选方案,比如 MP_Cache 是作者自己的作品。
3. HTTP headers (HTTP头部)。在客户端你能够通过单独发送HTTP头部使浏览器缓存页面来提高性能,当你使用 AJAX 的时候你也需要了解它来禁止浏览器缓存。
一个禁止缓存的例子:
复制代码 代码如下:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











CodeIgniter でカスタム ミドルウェアを実装する方法 はじめに: 最新の Web 開発では、ミドルウェアがアプリケーションで重要な役割を果たします。これらは、リクエストがコントローラーに到達する前または後に、共有処理ロジックを実行するために使用できます。 CodeIgniter は、人気のある PHP フレームワークとして、ミドルウェアの使用もサポートしています。この記事では、CodeIgniter でカスタム ミドルウェアを実装する方法を紹介し、簡単なコード例を示します。ミドルウェアの概要: ミドルウェアは一種のリクエストです

CodeIgniter ミドルウェア: アプリケーションの応答性とページ レンダリングの高速化 概要: Web アプリケーションの複雑さと対話性が増大し続ける中、開発者はアプリケーションのパフォーマンスと応答性を向上させるために、より効率的でスケーラブルなソリューションを使用する必要があります。 CodeIgniter (CI) は、多くの便利な機能を提供する軽量の PHP ベースのフレームワークであり、その 1 つがミドルウェアです。ミドルウェアは、リクエストがコントローラーに到達する前または後に実行される一連のタスクです。この記事では使い方を紹介します

CodeIgniter フレームワークでデータベース クエリ ビルダー (QueryBuilder) を使用する方法の紹介: CodeIgniter は、開発者が Web アプリケーション開発を容易にするための強力なツールとライブラリを多数提供する軽量の PHP フレームワークです。最も印象的な機能の 1 つは、データベース クエリ ビルダー (QueryBuilder) です。これは、データベース クエリ ステートメントを構築および実行するための簡潔かつ強力な方法を提供します。この記事ではCoの使い方を紹介します。

Web アプリケーションは進化し続けるため、アプリケーションをより迅速かつ効率的に開発することが重要です。また、RESTful API は Web アプリケーションで広く使用されているため、開発者は RESTful API の作成および実装方法を理解する必要があります。この記事では、CodeIgniter フレームワークを使用して MVC パターンと RESTful API を実装する方法について説明します。 MVC パターン MVC (Model-Vie) の概要

CodeIgniter は、MVC アーキテクチャを使用して迅速な開発をサポートし、一般的なタスクを簡素化する軽量の PHP フレームワークです。 CodeIgniter5 はフレームワークの最新バージョンであり、多くの新機能と改善点が提供されています。この記事では、CodeIgniter5 フレームワークを使用して簡単な Web アプリケーションを構築する方法を紹介します。ステップ 1: CodeIgniter5 をインストールする CodeIgniter5 のダウンロードとインストールは非常に簡単で、次の手順に従うだけです。 最新バージョンをダウンロードします。

CodeIgniter ミドルウェア: 安全なファイルのアップロードおよびダウンロード機能を提供します はじめに: Web アプリケーション開発のプロセスにおいて、ファイルのアップロードとダウンロードは非常に一般的な機能です。ただし、セキュリティ上の理由から、ファイルのアップロードとダウンロードの処理には追加のセキュリティ対策が必要になることがよくあります。 CodeIgniter は、開発者による安全で信頼性の高い Web アプリケーションの構築をサポートする豊富なツールとライブラリを提供する人気の PHP フレームワークです。この記事では、CodeIgniter ミドルウェアを使用して安全なファイルを実装する方法を紹介します。

今日のインターネット時代において、ユーザーに愛される Web サイトには、シンプルかつ明確なフロントエンド インターフェイスと強力なバックエンド管理システムが必要です。PHP フレームワーク CodeIgniter は、開発者がバックエンドを迅速に構築できる優れたフレームワークです。マネジメントシステム。 CodeIgniter は軽量、高効率、拡張が容易という特徴を持っており、本記事では初心者向けにこのフレームワークでバックエンド管理システムを短期間で構築する方法を詳しく解説します。 1. インストールと設定 PHPCodeIgniter のインストールは PHP ベースです。

モバイル インターネットの発展に伴い、インスタント メッセージングの重要性と人気がますます高まっています。多くの企業にとって、ライブ チャットはコミュニケーション サービスに似ており、ビジネス上の問題を迅速かつ効果的に解決できる便利なコミュニケーション手段を提供します。これを踏まえて、この記事ではPHPフレームワークCodeIgniterを使ってリアルタイムチャットアプリケーションを開発する方法を紹介します。 CodeIgniter フレームワークを理解する CodeIgniter は、開発者を迅速に支援する一連のシンプルなツールとライブラリを提供する軽量の PHP フレームワークです。
