Smarty之三实验(采用MVC构架设计)

 

Smarty之三实验(采用MVC构架设计)
Smarty之三实验题目
采用MVC构架设计
一、 建立网站目录(先设置好DW的编码为UTF-8)
1、复制我提供的实验文件夹中的smartynews文件夹到你的电脑上(如果上节课有完成的同学,
可以拿你上次的实验文件)。Web共享smartynews文件夹。
二、 MVC模式
基本原理:表现层(V)的请求发送到控制器(C),控制器根据请求类型调用业务层(M),最
终调用表现层显示。即请求发送给同一个PHP文件,由该文件来判断执行那些任务。
基本结构图:

表现层<->控制器->业务层->数据层
多个请求发送给同一个控制器(即同一个php文件),因此在请求后面添加一个表示请求类型的
参数act,如:(假设list表示显示新闻列表,show表示显示详细新闻)
index.php?act=list  表示向index.php控制器发送类型为list的请求;
index.php?act=show&id=3 表示向index.php控制器发送类型为show的请求。
3、采用mysql数据库,创建一个数据库nhnews,(注意设置它的编码为utf8_general_ci),然
后导入smartynews/data中的数据表。
三、 MVC模式应用
采用MVC模式改写上次实验中的三层模式,基本思路:
采用index.php文件做为控制器
获取act的值,
如果(act==’list’){
显示新闻列表
}
如果(act==’show’){
显示新闻详细内容
}
即把index.php和news.php合并成同一个文件。
具本过程:
1、 打开index.php文件,获取act的值:
在require_once("init.php");
require_once("class/news.class.php");
下面添加如下的代码:
$act=$_GET[‘act’];
思考:这里为什么采用$_GET?
2、制作显示新闻列表分支:
在上面的代码下面添加如下的代码:
if($act==’list’){
}
然后把显示新闻列表的代码放入上面的判断语句中。即把该判断语句后面的代码放入判断中。
3、 制作显示新闻详细内容分支:
在上面的代码下面添加如下的代码:
if($act==’show’){
}
然后打开news.php文件,把其中关于显示新闻详细内容的代码复制到上面的判断语句。(注意
,不要把上面的两个require_once代码复制过来)。
然后删除news.php文件。
到此,由index.php一个文件就可以处理两种类型的请求了。
4、 修改index.html模板中的新闻列表中的连接地址,如下(红色部分):
{foreach from=$newslist item=news}
<li class="{cycle values="odd,even"}"><a
href="index.php?act=show&nid={$news.nid}">{$news.ntitle}</a></li>
   {/foreach}
理解为什么要修改吗?如果不理解,那就说明你对MVC还不理解。
四、 后台制作
1、 创建台后管理文件夹,以及初始化配置文件
步骤:
找到我提供的实验文件夹中的HTML文件中的admin文件夹,复制到smartynews中。
然后在admin文件夹中创建用于smarty文件夹,即创建templates、compiled、caches文件夹。
在smartynews文件夹中找到init.php文件,复制一个到admin文件夹中,并打开,修改里面的代
码为如下:
require_once("../includes/config.inc.php");
require_once("../includes/smarty/Smarty.class.php");
require_once("../includes/functi****.php");
require_once("../class/mysqlhelper.php");
即在每一个导入的文件中加入..。明白什么意思吧?不明白的请问老师。
其它的不用修改。
2、 创建管理员登录功能
基本流程:

其中admin.php为控制器,专门管理跟管理员有关的操作,如:登录、注销、添加管理员、删除
管理员、修改密码等,都将由该控制器负责。
详细步骤:
(1)、显示登录界面
新建一个命名为admin.php的文件,并保存到smartynews/admin文件夹中。删除自动生成的代码
,然后加入如下的代码:
<?php
require_once("init.php");
if($_GET['act']=='login'){
$smarty->display('login.html');
}
?>
然后把login.html文件放入到admin/templates文件夹中,然后在IE中输入
http://localhost/smartynews/admin/admin.php?act=login
看是否有显示结果,如果不行,请向老师请求。
(2)、加入验证码功能
打开admin/templates文件夹中的login.html文件,找到下面的代码:
<img src="#" alt="验证码" width="30"/>
修改成:
<img src="checkno.php" alt="验证码"/>
然后找到我给的实验文件夹中提供的checkno.php文件复制到admin文件夹中。
在C:/windows文件夹中找到php.ini,打开并找到里面的extension=php_gd2.dll,把该代码前
面的;去掉,然后保存,并重新启动IIS,测试,看是否能显示出验证码。
(3)、验证登录功能
基本步骤:
接收数据
判断验证码是否一致
调用业务层进行账号和密码验证:
如果成功:创建cookie并跳转;
如果失败:提示账号或密码不对。
详细过程:
1)修改login.html文件,使得采用post提交数据到admin.php中,并带有隐藏项act=checkadmin
,如下 :
修改<form>标签为:<form action="admin.php" method="post">
在表单里面插入一个隐藏控件,命名为act,值为checkadmin,代码如下:<input name="act"
type="hidden"  value="checkadmin"/>
并给账号、密码、验证码等文本输入框命名。
2)在控制器中添加验证分支。在
if($_GET['act']=='login'){
$smarty->display('login.html');
}的下面添加:
if($_GET['act']==checkadmin){

}
然后在上面的判断语句中加入如下的代码:
$aname=$_POST['adminname'];
$apwd=$_POST['adminpwd'];
$checkno=$_POST['checkno'];

if($checkno!=$_SESSION['randcode']){
  alert_back("验证码不对!");
}
在<?php的下面添加启动session的函数:
session_start();
然后测试验证码是否有问题。
3)编写业务类admin.class.php
新建一个admin.class.php(注意名称),保存到smartynews/class文件夹中(类都放这个文件
夹中)
删除自动生成的代码,并编写admin类如下:
<?php
class Admin{
function getAdminByNameAndPwd($aname,$apwd){
  $selectSQL="select aid,aname from admin where aname='$aname' and
apwd=sha1('$apwd')";
  $db=new DB_MySQL;
  $result=$db->fetch_one_array($selectSQL);
  $db->close();
  return $result;
}
}
?>
理解上面的代码。
在控制器中调用该业务类:
在admin.php文件中导入admin.class.php文件,如下:
require_once("../class/admin.class.php");
然后在
if($checkno!=$_SESSION['randcode']){
  alert_back("验证码不对!");
}
的后面添加如下的代码:
$admin=new Admin;
$admininfo=$admin->getAdminByNameAndPwd($aname,$apwd);
if($admininfo['aid']>0){
  setcookie("ckaid",$admininfo['aid']);
  setcookie("ckaname",$admininfo['aname']);
  header("location:index.php");
}
else{
alert_back("账号或密码不对!");
}
最后测试登录功能。账号/密码(admin/123123)
认真理解本实验的MVC的原理和过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Smarty是一个流行的PHP模板引擎,用于将业务逻辑与展示逻辑分离,提高代码的可维护性和可读性。在使用Smarty进行打包时,可以按照以下步骤进行。 首先,需要将Smarty模板引擎的文件和相关依赖文件下载到本地或服务器上。可以从官方网站或GitHub等地方获取到最新的Smarty版本。 然后,将Smarty的文件和目录组织好,包含Smarty类文件、编译目录、缓存目录和自定义插件目录等。可以根据自己的项目需求进行设置。 接下来,配置Smarty的相关选项,包括设置模板目录和编译目录的路径、设置缓存目录和自定义插件目录的路径等。这些配置信息可以存放在一个配置文件中,也可以在代码中直接设置。 之后,将需要使用Smarty的PHP文件引入Smarty的核心类文件,创建一个Smarty对象。利用这个对象可以调用各种Smarty的方法,如assign方法来为模板设置变量值,display方法来渲染模板文件等。 最后,将整个项目打包成一个可以独立运行的应用程序。可以使用压缩工具将相关文件和目录打包成一个压缩文件,或者使用构建工具(如Composer)来构建可执行文件。 总之,使用Smarty进行打包主要包括下载和组织Smarty文件、配置Smarty选项、引入Smarty类文件、创建Smarty对象并使用相关方法,最后将整个项目打包成可执行文件。这样,我们就可以方便地将Smarty集成到我们的PHP应用程序中,并进行打包发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值