热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ZendFramework1.x新手一看就会用的教程-PHP源码

ZendFramework1.x新手一看就会用的教程
1.在project/application/configs/下面新建一个 config.ini文件,添加如下代码

[mysql]
db.adapter = PDO_MYSQL
db.params.host = 127.0.0.1
db.params.username = root
db.params.password =
db.params.dbname = floating_cloud

2.在controllers目录下新建一个Base.php,用于需要数据库的控制器

db);
         
        $db->query('set names utf8');
         
        Zend_Db_Table::setDefaultAdapter($db);
         
        $authAdapter = new Zend_Auth_Adapter_DbTable($db);//用于数据库Auth验证
         
        Zend_Registry::set( 'authAdapter' , $authAdapter);//将Zend_Auth_Adapter_DbTable实例保存在全局,供后面使用
    }
}

3. 通过继承Base类使用父类的init()来使用数据库

4. 这里来新建一个模型,如下代码已经能来操作数据库了

5. 编写一个 可以统计浏览次数的页面

getAdapter(); //获得这个表的适配器 适配器提供了一些方法 可以为我们生成一些SQL语句或者执行语句的方法.
        $db->query("update fc_comment set counter = counter+1 where columnName = 'pageCounter'"); //更新计数字段
         
        $where = $db->quoteInto('columnName = ?' ,'pageCounter'); //生成 where columnName = 'pageCounter'这个字符串 它能帮你自动加上'';
        $orderBy = 'commentId';
         
        $n = $table->fetchAll( $where , $orderBy)->toArray();// 获得查询结果 并转换成数组 
         
        print_r( $n);//测试一下
    }
 
 
}

6. 余下的说明

//zend framework的使用 要注意一些小小的配置 新手最容易遇到 结果导致不能使用 这里zend framework仅表示 zend framework 1.x 并不包括最新发布的zend framework2.0.
 
//安装 zendframework : 下载压缩包 解压 , 在cmd命令行中 输入(我的zf是解压到c:\下面) c:\ZendFramework-1.12.0\bin\zf.bat create project webapp , 来生成工程文件,然后把生成的工程webapp目录复制到apache的www目录下面,把压缩包里的library目录中的 zend目录复制到工程下面的library里面
 
//首先要开启 php的 pdo模块 ,这个在 php.ini配置文件里找到 
//搜索extension=php_pdo_mysql.dll ;如果有 ;extension=php_pdo_mysql.dll 去掉;即可
 
//然后要开启 apache的 rewrite模块 , 在 httpd.conf文件中搜索 LoadModule rewrite_module modules/mod_rewrite.so 如果找到了 并且被注释了  例如 #LoadModule rewrite_module modules/mod_rewrite.so 请去掉#即可
 
//做完了这些 你就可以正常使用 zend framework了.

7.使用Layout布局来装扮我们的视图页面

//(声明 可能这里注释比较多 请耐心的看 希望能把 布局Zend_Layout 讲清楚 其实 布局Zend_Layout 是非常容易用 非常好用的 代码不多 例子比较简单 将就看吧)
 
 
 
// Zend框架的Layput非常强大,可以做出任何你想要做到的排版,要使用Layout布局,我们首先要在 工程目录/application/views/下面新建一个layouts的文件夹
 
//打开 工程目录/public/index.php 文件 在这个入口文件中初始化我们的Layout布局 在/** Zend_Application */ 下面加入以下代码即可
 
require_once 'Zend/Layout.php';
Zend_Layout::startMvc(array('layoutPath'=>APPLICATION_PATH.'/views/layouts'));
//这里初始化layout目录,也就是我刚刚新建的那个目录,布局文件就存放在那里
 
 
//做完这些 Zend的布局就是初始化完成了 打开IndexController.php 在 主控制器的 init方法里添加以下代码来添加布局的页面
 
//(布局的目的 就是为了把重复的页面利用起来 不产生重复的代码 提高开发效率) 比如一个网站的导航跟底部的网站说明Copyright等等,这些都是可以一次写好的,而不需要每个视图页面都添加
。
 
 
        $resp = $this->getResponse();
 
       $resp->insert('header' , $this->view->render('default/header.phtml'));
 
//布局中添加 header 部分
 
        $resp->insert('footer' , $this->view->render('default/footer.phtml'));
 
//同理
 
//我们在 视图目录中新建一个 default文件夹 来存放我们做好的 导航 header.phtml 和 底部fooeter.phtml
 
//现在在 视图目录下 layouts/目录下新建一个 layout.phtml(因为布局文件默认是layout.phtml 后面你可以设置自己的布局文件)
 
//在布局文件 layout.phtml里 你可以这样写
 
 

layout()->header?>

layout()->content;?>

//这里的 $this->layout()->header 即是我们在 $resp->insert('header' , $this->view->render('default/header.phtml')); 这行代码中添加的 header.phtml页面 , 同理 footer //而要说的是 这里的 $this->layout()->content 这个显示的是我们 IndexAction 对应的 index.phtml视图文件 //同理 如果访问的 是其它的动作 例如 viewAction ,显示的就是对应的视图文件 也就是 view.phtml //到这里 你就能随心所欲的控制页面的布局了,同时能完成更复杂的 例如带 类似 页面小widget插件的应用出来。

8. 为我们的登陆页面编写验证代码

//翻看一下前面 Base.php 文件的 $authAdapter = new Zend_Auth_Adapter_DbTable($db); 这行代码 ,就是这章要说道的 登陆验证中常用的 数据库验证 废话不多 直接上代码
 
        if ($this->_request->isPost ()) {
 
                $u = $this->_request->getParams ();
                $fil = new Zend_Filter_StripTags ();
                $user = array ();
                $user ['userName'] = strtolower ( $fil->filter ( $u ['username'] ) );
                $user ['userPass'] = $fil->filter ( $u ['userpass'] );
//************************************************************
                $auth = Zend_Registry::get ( 'authAdapter' );
                 
                $auth->setTablename ( 'note_user' )
                     ->setIdentityColumn ( 'userName' )
                     ->setCredentialColumn ( 'userPass' )
                     ->setIdentity ( $user ['userName'] )
                     ->setCredential ( md5(md5($user ['userPass'])) )
                     ->authenticate ();
//************************************************************
                $signup = $auth->getResultRowObject ();
                if (is_object ( $signup )) {
                    echo $signup->userName;
                 
                }
             
        }
//星号之间的部分就是验证用到的代码 此前代码为了获得登陆表单传递来的参数 
 
//这里 $auth 是一个 Zend_Auth_Adapter_DbTable 的实例,Zend_Auth_Adapter_DbTable里提供了五个setXXXX的方法用于设置验证数据库表的参数
 
//setTablename() 方法 设置验证字段所在的表名 例如我们新建一个 user 表 ,表里包含 userId userName userPassword字段,这里即填写 'user'
 
//setIdentityColumn() 设置 身份字段 例如 我们的用户名userName字段
//setCredentialColumn() 设置 验证信息字段 例如 我们的用户密码userPassword字段
 
//setIdentity() 设置我们从表单获取的身份的值 例如 用户名table['username']
//setCredential() 设置我们从表单获取的认证信息的值 例如 密码table['userpassword']
 
//authenticate () 返回认证对象 这个对象包含一个 返回 认证结果的方法 getResultRowObject()
如果认证成功 则返回 一个包含 表中这一行所有字段 的对象 ,认证失败 , 则返回 null
到这里 就可以完成一个简单的登陆页面了 。 这应该算是比较方便了, 当然 这些也可以在模型中实现,这里 zend已经为我们实现了一个简单的数据库认证功能。

9.表单文件上传的安全效验过程

这里文件上传 Zend提供了一个 Zend_File_Transfer_Http 类 来实现表单文件的处理 
还有一个Zend_File_Transfer来效验文件的信息 比如大小 格式 等等 几乎包含了文件所有的信息,都可以用它来筛选
直接看代码吧
 
            if (isset ( $_FILES ['photo'] )) {
                $upload = new Zend_File_Transfer ();
                $upload->addValidator ( 'IsImage', false ); // 图片格式效验
                if ($upload->isValid ()) { // 合法上传
                     
                    $adapter = new Zend_File_Transfer_Adapter_Http ();
                    $adapter->setDestination ( ROOT . '/upload/' );//设置文件存放的目录 
                    if ($adapter->receive ()) { //是否成功保存
                        print_r ( $adapter->getFileInfo () );
                    }
                }
            }
到此 就能实现简单的文件过滤保存

推荐阅读
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
author-avatar
秋夜里的寂寞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有