Smarty程序应用范例:留言簿(Guestbook)
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';
- 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
- 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。