Smarty程序应用范例:留言簿(Guestbook)第二节
我们将从“index.php”脚本文件开始留言簿程序的编写历程,它将直接被WEB浏览器访问,所以说是我们这个程序的“大门”。
/web/www.example.com/docs/guestbook/index.php
<?php
/**
* Project: Guestbook Sample Smarty Application
* Author: Monte Ohrt <monte [AT] ohrt [DOT] com>
* Date: March 14th, 2005
* File: index.php
* Version: 1.0
*/
// define our application directory
define('GUESTBOOK_DIR', '/web/www.example.com/smarty/guestbook/');
// define smarty lib directory
define('SMARTY_DIR', '/usr/local/lib/php/Smarty/');
// include the setup script
include(GUESTBOOK_DIR . 'libs/guestbook_setup.php');
// create guestbook object
$guestbook =& new Guestbook;
// set the current action
$_action = isset($_REQUEST['action']) ? $_R EQUEST['action'] : 'view';
switch($_action) {
case 'add':
// adding a guestbook entry
$guestbook->displayForm();
break;
case 'submit':
// submitting a guestbook entry
$guestbook->mungeFormData($_POST);
if($guestbook->isValidForm($_POST)) {
$guestbook->addEntry($_POST);
$guestbook->displayBook($guestbook->getEntries());
} else {
$guestbook->displayForm($_POST);
}
break;
case 'view':
default:
// viewing the guestbook
$guestbook->displayBook($guestbook->getEntries());
break;
}
?>
“index.php”扮演着整个程序的控制者这个角色。它掌控着所有来自WEB浏览器的访问请求,并指导程序发生些什么相应的动作。它定义了程序目录,包括程序的安装脚本,以及根据全局变量$_REQUEST所定义的action值,并指导程序做出相应的动作。
这里有三个基本的动作设置(actions):
“添加”当用户往留言簿里写内容时; “提交”当用户写完内容提交时; “浏览”当用户浏览留言簿时。
缺省情况是“浏览”。
/web/www.example.com/smarty/guestbook/libs/guestbook_setup.php
<?php
/**
* Project: Guestbook Sample Smarty Application
* Author: Monte Ohrt <monte [AT] ohrt [DOT] com>
* Date: March 14th, 2005
* File: guestbook_setup.php
* Version: 1.0
*/
require(GUESTBOOK_DIR . 'libs/sql.lib.php');
require(GUESTBOOK_DIR . 'libs/guestbook.lib.php');
require(SMARTY_DIR . 'Smarty.class.php');
require('DB.php'); // PEAR DB
// database configuration
class GuestBook_SQL extends SQL {
function GuestBook_SQL() {
// dbtype://user:pass@host/dbname
$dsn = "mysql://guestbook:foobar@localhost/GUESTBOOK";
$this->connect($dsn);
}
}
// smarty configuration
class Guestbook_Smarty extends Smarty {
function Guestbook_Smarty() {
$this->template_dir = GUESTBOOK_DIR . 'templates';
$this->compile_dir = GUESTBOOK_DIR . 'templates_c';
$this->config_dir = GUESTBOOK_DIR . 'configs';
$this->cache_dir = GUESTBOOK_DIR . 'cache';
}
}
?>
我们通过“guestbook_setup.php”进行一些基本的程序运行环境设置,比如设置程序的后台数据库和模板文件位置。我们使用PEAR的PEAR::DB库,请确认能够通过你的php.ini中的“include_path”设置访问“DB.php”脚本文件,或者干脆使用“DB.php”的绝对路径。我们用MySQL作为程序的后台数据库,在这里书写恰当的“dsn”信息以便使用你自己的MySQL数据库。
注意:如果运行中你得到一个类似“Call to undefined function: query()”样的错误,说明“$dsn”不正确,请检查“$dsn”是否正确,并测试是否数据库已经连接上了。
我们需要安装一个基本的数据库结构。接下来这个命令行脚本会把我们的数据表导入MySQL数据库中。 mysql < guestbook.sql 注意,其中的“GRANT ...”语句修改了数据库的用户权限设置。
guestbook.sql CREATE DATABASE GUESTBOOK;
CONNECT GUESTBOOK;
CREATE TABLE GUESTBOOK ( id int(11) NOT NULL auto_increment, Name varchar(255) NOT NULL default '', EntryDate datetime NOT NULL default '0000-00-00 00:00:00', Comment text NOT NULL, PRIMARY KEY (id), KEY EntryDate (EntryDate) ) TYPE=MyISAM;
GRANT ALL ON GUESTBOOK.* to guestbook@localhost identified by 'foobar';
出处:蓝色理想
责任编辑:moby
上一页 Smarty程序应用范例 [1] 下一页 Smarty程序应用范例 [3]
◎进入论坛网络编程版块参加讨论
|