您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
使用 CakePHP 快速打造 Web 站点(一)
 
作者 Duane O'Brien ,火龙果软件    发布于 2014-10-11
  3053  次浏览      15
 

简介: CakePHP 是一种用 PHP 构建 Web 站点的辅助工具,它很稳定,可直接用于生产及快速开发。“使用 CakePHP 快速打造 Web 站点” 系列教程向您展示如何使用 CakePHP 构建在线产品目录。第 1 部分主要介绍如何安装并运行 CakePHP,以及如何构建一个简单的应用程序,以允许用户注册帐户并登录到应用程序。

开始之前

编者注:本系列最初发表于 2006 年,在此后为了跟上 CakePHP 的发展进行了多次修订。这次是针对 CakePHP V1.3.4 而修订的。

“使用 CakePHP 快速打造 Web 站点” 系列教程适合希望开始使用 CakePHP 轻松构建应用程序的 PHP 应用程序开发人员学习。通过本系列教程,您将了解如何安装和配置 CakePHP 以及有关 Model-View-Controller(MVC)设计、如何在 CakePHP 中检验用户数据、如何使用 CakePHP helper、如何使用 CakePHP 快速建立并运行应用程序的基本知识。听起来好像有很多东西要学习,但不必担心 —— CakePHP 会替您完成其中的大部分工作。

先决条件

本教程假设您熟悉 PHP 编程语言,基本掌握数据库设计且喜欢实战。您不必完全掌握 MVC 模式,因为本教程将会介绍它的基本原理。最重要的是,您必须愿意学习、愿意投入其中并十分渴望缩短开发时间。

系统需求

开始之前,需要具备一个工作环境。CakePHP 的最低服务器需求为:

支持会话(并且最好支持 mod_rewrite)的 HTTP 服务器。本教程采用的是支持 mod_rewrite 的 Apache V2.2.4。

PHP V4.3.2 或更高版本(包括 PHP V5)。本教程采用的是 PHP V5.2.3。

受支持的数据库引擎。本教程采用的是 MySQL V5.0.4。

还需要准备好一个数据库以供应用程序使用。本教程将提供用 MySQL 创建任何必需的表的语法。

安装

无论您的经验水平如何,CakePHP 都可以使应用程序更易于快速编写和维护,从而简化您的工作。CakePHP 有很多非常酷而且十分有用的特性。CakePHP 可以为您处理 Ajax、数据检验和会话。如果可以编写插件告诉 CakePHP 怎样做,它甚至能提供更多帮助。现在您还不能使用 CakePHP,需要先安装它。

解压和安装

为了达到本教程的目的,应当在 Web 服务器的 Web 根目录内解压整个 CakePHP 安装目录。在清单 1 中,Web 根目录是 /webroot。

清单 1. 解压 CakePHP 安装目录

unzip cakephp-cakephp-1.3.4-0-g703344c.zip
cd cakephp-cakephp-df6ffd4
mv * /webroot

输入 ls -la /webroot 以列出 Web 根目录的内容并检验文件是否已被正确复制。输出应当类似于清单 2。

清单 2. ls 命令的输出

-rw-r--r--    1 YOURUSER  YOURGROUP       139 2010-09-12 00:57 .htaccess
-rw-r--r-- 1 YOURUSER YOURGROUP 1154 2010-09-12 00:57 README
drwxr-xr-x 13 YOURUSER YOURGROUP 4096 2010-09-12 00:57 app
drwxr-xr-x 6 YOURUSER YOURGROUP 4096 2010-09-12 00:57 cake
-rw-r--r-- 1 YOURUSER YOURGROUP 1848 2010-09-12 00:57 index.php
drwxr-xr-x 2 YOURUSER YOURGROUP 4096 2010-09-12 00:57 plugins
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2010-09-12 00:57 vendors

目录 app/tmp 必须是 Web 服务器可写的。通过输入 ls -l app 确认对这个文件夹的权限。输出可能类似于清单 3。

清单 3. 确认文件夹权限

-rw-r--r--    1 YOURUSER  YOURGROUP       141 2010-09-12 00:57 .htaccess
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2010-09-12 00:57 config
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2010-09-12 00:57 controllers
-rw-r--r-- 1 YOURUSER YOURGROUP 685 2010-09-12 00:57 index.php
drwxr-xr-x 2 YOURUSER YOURGROUP 4096 2010-09-12 00:57 libs
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2010-09-12 00:57 locale
drwxr-xr-x 4 YOURUSER YOURGROUP 4096 2010-09-12 00:57 models
drwxr-xr-x 2 YOURUSER YOURGROUP 4096 2010-09-12 00:57 plugins
drwxr-xr-x 5 YOURUSER YOURGROUP 4096 2010-09-12 00:57 tests
drwxr-xr-x 6 YOURUSER YOURGROUP 4096 2010-09-12 00:57 tmp
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2010-09-12 00:57 vendors
drwxr-xr-x 8 YOURUSER YOURGROUP 4096 2010-09-12 00:57 views
drwxr-xr-x 6 YOURUSER YOURGROUP 4096 2010-09-12 00:57 webroot

完成此任务的最简单方法可能是最常见也是最不安全的:将写权限授予每个人(见清单 4)。

清单 4. 将写权限授予每个人

chmod -R 777 app/tmp
ls -l app

tmp 文件夹的权限应当已经被更新,如清单 5 所示。

清单 5. 更新 tmp 文件夹的权限

drwxrwxrwx    6 YOURUSER  YOURGROUP      2010-09-12 00:57 tmp

通常情况下,不建议将写权限授予每个人。理想情况下,应当将这个文件夹的所有权授予 Web 服务器使用的那个用户,或将 Web 服务器使用的那个用户添加到这个目录的一个组中并添加组的写权限。本教程旨在演示如何使用 CakePHP,并不是有关构建安全应用程序的指南。虽然安全性应当是任何应用程序开发的首要考虑事项,但是全面讨论安全 PHP 实践超出了本教程的范围。

为了执行产品安装,将 Web 服务器的 Web 根目录改为 app/webroot,这样做将把可以通过 Web 浏览器访问的代码量减至最少,有助于增强系统的安全性。

检验 1

在浏览器中,访问与 Web 服务器的 Web 根目录相对应的 URL。例如,如果已将 CakePHP 安装到本地主机的 Web 根目录中,则访问 http://localhost;您应当会看到 CakePHP 默认主页(见图 1)。

图 1. 应当看到的 CakePHP 默认主页

注意:如果默认主页看上去更像图 2,则说明 mod_rewrite 并没有按照 CakePHP 所需的方式运行。第一次使用 CakePHP 的用户有时可能会遇到这个问题。

图 2. 外观不正确的主页

以下是一些需要确认的东西。

.htaccess 文件是否正确?

.htaccess 文件应当已出现在 CakePHP 安装目录中。在大多数 *nix 系统中,此文件都是默认隐藏的。如果没有该文件,请检查下载的源文件或从 CakePHP.org 获得最新更新。通过访问安装目录并运行 cat .htaccess,确认该文件是否存在且有效。这将显示该文件的内容,其内容应当类似于清单 6。

清单 6. 确认 .htaccess 文件是否存在

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

是否为服务器启用了 mod_rewrite?

确保为 Web 服务器启用 mod_rewrite。对于 Apache,httpd.conf 文件中应当会出现两个不同的行。在 LoadModule 列表中,您应当会看到下面一行(或极为类似):LoadModule rewrite_module libexec/mod_rewrite.so。在 AddModule 列表中,您应当会看到这一行(或极为类似):AddModule mod_rewrite.c。
如果您在 httpd.conf 文件中找不到这两行,则 mod_rewrite 未启用。请查阅服务器文档以获得如何解决此问题的详细信息。

服务器是否允许 .htaccess 覆盖?

确保将 Web 服务器配置为允许 .htaccess 覆盖。对于 Apache,每个目录都应在 httpd.conf 文件中定义。这些定义可能因为安装的不同看上去有所不同,但应当仍会在定义中看到 AllowOverride All 一行。定义可能类似于清单 7。

清单 7. httpd.conf 文件中的定义

<Directory "/webroot">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

有关 .htaccess 覆盖的更多信息,请参阅服务器文档。

配置数据库连接

既然已经安装了 CakePHP,并已与 Web 服务器关联了起来,就需要把 CakePHP 引入数据库。本节介绍如何设置数据库配置和检验 CakePHP 是否接受这个数据库。Tor 需要一个位置来保存其用户和产品数据。然后要创建一个 users 表,该表用于构建 Tor 的登录和注册部分。

编辑数据库配置文件

设置数据库配置十分简单,但在开始之前,要确保数据库服务器处于运行状态,确保已经为应用程序创建了数据库,并确保拥有一个用户的用户名和密码(这个用户具有对数据库进行操作的权限)

首先,复制 app/config/database.php.default 文件并将其保存为 app/config/database.php。这样做是为了保留一个原始模板的拷贝。在您喜欢的文本编辑器中打开该文件并查找以下部分(它应当非常接近该文件的底部),如清单 8 所示。

清单 8. app/config/database.php.default 文件

清单 8. app/config/database.php.default 文件
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => ''
);

根据自己的情况修改以下信息:

driver

此字段可以是 mysql、mysqli、postgres、sqlite、mssql、db2, oracle、adodb 或 pear-drivername。本教程假定它是 mysql。

persistent

此字段告诉 CakePHP 是否应当使用持久的数据库连接。有效值是 true 或 false。本教程假定它是 false。

host

这是数据库服务器的主机名,比如 localhost 或 mysql.yourdomain。

login

这是用于数据库登录的用户名,比如 dbuser。

password

这是用于数据库登录的密码,比如 secretsecret。

database

这是希望使用的数据库的名称,比如 cakedev。

prefix

前缀是一个字符串,比如 cp_,它是 CakePHP 执行的任何数据库调用的表名前缀。如果数据库由多个应用程序共享,而又要保证在两个或多个应用程序需要使用具有相同名称的表时(比如 users)表不会相互覆盖,那么就有必要使用前缀。

请不要忘记保存文件。

可以在 database.php 中指定任意数目的数据库配置,只要这些数据库配置具有不同的名称。可以指定应用程序应当在模型中使用哪个数据库配置。

关于数据库和 CakePHP 的一些注意事项:

表必须具有名为 id 的主键。

如果表中包含 created 或 modified 列,CakePHP 就会在适当的时候自动填充字段。

表名应该为复数(users、products、eggs、sodas、winners、losers)。其相应的模型将具有单数的名称(user、product、egg、soda、winner、loser)。
如果要将表关联起来,外键应当采用 table_id 格式,且使用单数的表名。例如,user_id、product_id、egg_id、soda_id、winner_id 和 loser_id 是表的 user、product、egg、soda、winner 和 loser 的外键。

检验 2

返回到用于检验初始安装的 URL。应当会看到 CakePHP 默认主页已经改为显示数据库配置的状态(见图 3)。

图 3. CakePHP 默认主页改为显示数据库配置的状态

CakePHP 默认主页改为显示数据库配置的状态

如果默认主页指出数据库配置文件不存在,则您可能将其放在了错误的位置或者其名称不正确。确保数据库配置文件为 app/config/database.php。如果默认主页指出 CakePHP 无法连接数据库,那么确认输入的连接信息是否有效,然后重试。

创建应用程序表

现在,CakePHP、Web 服务器和数据库都关联到一起了。开始动手实践吧!Tor 需要一个 users 表。

这个表将包含识别用户和与用户交互所需的基本信息。简单的用户名和密码字段可能就够了,但其他信息也可能有用,例如电子邮件地址(用于发送密码重置请求)、名字和姓氏(用于个性化服务)以及最后一次登录的日期(用于帮助跟踪不活动的帐户)。您可能希望用户名和电子邮件字段是唯一的。另外,不要忘记主键 ID 字段。创建表的 SQL 可能类似于清单 9。

清单 9. 创建表的 SQL

CREATE TABLE 'users' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'username' VARCHAR( 40 ) NOT NULL ,
'password' VARCHAR( 40 ) NOT NULL ,
'email' VARCHAR( 255 ) NOT NULL ,
'first_name' VARCHAR( 40 ) NOT NULL ,
'last_name' VARCHAR( 40 ) NOT NULL ,
UNIQUE (
'username' ,,
'email'
)
) TYPE = MYISAM ;

注意,username、password、first_name 和 last_name 字段最多包含 40 个字符。在 user 模型中将强制要求不超过这个字符长度。在本例中,40 个字符的最大长度完全是任意设定的。

   
3053 次浏览       15
相关文章 相关文档 相关课程



深度解析:清理烂代码
如何编写出拥抱变化的代码
重构-使代码更简洁优美
团队项目开发"编码规范"系列文章
重构-改善既有代码的设计
软件重构v2
代码整洁之道
高质量编程规范
基于HTML5客户端、Web端的应用开发
HTML 5+CSS 开发
嵌入式C高质量编程
C++高级编程
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

Android手机开发(一)
理解Javascript
非典型ajax实践
彻底的Ajax
javascript 使用Cookies
使用 jQuery 简化 Ajax 开发
更多...   


Struts+Spring+Hibernate
基于J2EE的Web 2.0应用开发
J2EE设计模式和性能调优
Java EE 5企业级架构设计
Java单元测试方法与技术
Java编程方法与技术


某航空公司IT部 JavaScript实践
某电视软件 HTML5和JavaScript
中航信 JavaScript高级应用开发
大庆油田 web界面Ajax开发技术
和利时 使用AJAX进行WEB应用开发
更多...