Yii2.0的自带的验证依赖于GD2或者ImageMagick扩展。使用步骤如下:重写yii\web\Controller::actions()方法,用ID"captcha"注册一个CaptchaAction类的action。在表单模型里面添加一个属性,用来保存用户输入的验证码字符串;这个属性的验证器是"captcha"。在视图里面,把yii\captcha\Captcha Widget插入到表单里面。第一步,控制器:在任意controller里面重写方法/**  * @inheritdoc */ public function actions() {     return [          'captcha' => [               'class' => 'yii\captcha\CaptchaAction',               'maxLength' => 5,               'minLength' => 5          ],      ];  }第二步,表单模型:假如是一个登陆表单。这里只给出验证码相关的部分...
 发布日期: 2015-01-13    分类: PHP   浏览量: 12278
其实就是Yii2.0的高级应用模板:Advanced Application Template。我们知道默认的高级应用模板包括三个应用:backend - 应用的后台frontend - 应用的前台console - 应用的控制台应用那么如果我们要在增加应用呢?比如在加一个微信的应用,或者我的后台和前台应用的名字我想改一下。那么现在就来再增加一个名字为weixin的子应用。在frontend同目录新建一个名为weixin文件夹然后呢把frontend目录下面的东西全拷贝到weixin目录里面这一步就是修改路径了,修改web目录index.php的包含路径,还有config/main.php的包含路径修改config/main.php配置项controllerNamespace为weixin\controllers最后就是加一个别名了,例子可以看common/bootstrap.php的写法,这里我们不改这个全句文件,当然在这里改也行,我们改weixin/config/bootstrap.php文件。加上Yii::setAlias('weixin', dirname(dirname(__...
 发布日期: 2014-12-03    分类: PHP   浏览量: 5930
基本代码规范本章节包含应该考虑怎样的代码元素规范来确保共享的PHP代码之间有一个较高水平的技术互操作性。本文出现的关键字 "MUST"(务必), "MUST NOT"(不必), "REQUIRED"(要求), "SHALL"(将要), "SHALL NOT"(不应该), "SHOULD"(应当), "SHOULD NOT"(不应当), "RECOMMENDED"(推荐), "MAY"(可能), 和 "OPTIONAL"(可选)在RFC 2119里面有解释。1、概述  1.1、文件务必(MUST)只使用<?php和<?标签。  1.2、PHP代码文件务必(MUST)只使用utf-8无BOM格式编码。  1.3、文件应该(SHOULD)要么声明符号(类,函数,常量等),要么引起副作用(生成输出,改变.ini设置等),不应该(SHOULD NOT)两件事都做(下面有解释)。  1.4、命名空间和类应该(MUST)遵循PSR-0规范。  1.5、类名必须(MUST)用StudlyCaps风格声明。  1.6、类常量必须(MUST)只用大写字母和下划线声明。  1.7、方法名必须(M...
 发布日期: 2014-10-24    分类: PHP   浏览量: 4069
自动加载规范坚持自动加载的互操作性是以下描述的强制性要求。强制性要求1、一个完整的命名空间(namespace)和类(class)必须有以下结构:\<Vendor Name>\(<Namespace>\)*<Class Name>。2、每一个命名空间必须要有一个顶级的namespace("Vendor Name")。3、每一个命名空间可以有无数个子命名空间。4、当从文件系统载入文件的时候,每一个命名空间的分隔符都将被转换成一个DIRECTORY_SEPARATOR(目录分隔符)。5、CLASS NAME里面的每个_字符都会被转换成DIRECTORY_SEPARATOR,在命名空间里面,_没有什么特殊的含义。6、当从文件系统载入文件时,完整的命名空间和类会加上.php后缀。7、供应商(vender)的名字、命名空间名和类名可以是大写或者小写字母的任意组合。例子1、\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedC...
 发布日期: 2014-10-22    分类: PHP   浏览量: 5252
基于角色的访问控制提供了简单而又功能强大的集中的访问控制。配置RBAC管理器在定义鉴权数据并执行访问检查之前,必须先配置authManager组件。Yii提供了两种鉴权管理器:yii\rbac\PhpManager 和 yii\rbac\DbManager。前者使用一个PHP脚本文件管理鉴权数据,而后者是把数据存储在数据库里面。假如你的应用不需要经常变动的角色和权限管理,你可以考虑前者。下面的代码展示了如何在应用里面配置authManager:return [     // ...     'components' => [         'authManager' => [             'class' => 'yii\rbac\PhpManager', //用文件管理         ],         // ...     ], ];authManager可以通过\Yii::$app->authManager来访问。提示:yii\rbac\PhpManager默认把RBAC数据存储在@app/data/rbac.php文件里面,你可能需要手动...
 发布日期: 2014-10-11    分类: PHP   浏览量: 15522
最近看到那种带箭头的提示框,忽然想看一下到底什么原理,也就去网上搜了一下,现在总结一下实现方法。大概也就三种方法。第一种方法就是纯粹的利用div的边框图中A和B,C和D分别是一对实现向右和向左箭头的前后图。看图A:<div class="arrow-right-a"></div>CSS:.arrow-right-a {     width: 0;     height: 0;     border-left: 20px solid #ccc;     border-top: 10px solid #000;     border-bottom: 10px solid #000;     border-right: 10px solid #ccc; }把div的高和宽都设为0,然后设置这个div的四个边框,边框宽度设置大一点。最终看效果(图A)。我们可以看到四个边框都是三角形的,那么我们是不是可以让其中的任意三个边框透明,只显示一个三角形,是不是就可以得到四个方向的箭头了呢?看图B:<div class="arrow-right-b"></div...
 发布日期: 2014-10-09    分类: HTML/CSS   浏览量: 4442
鉴权就是验证一个用户是否有足够权限去做一件事的过程。Yii提供了两种鉴权方式:Access Control Filter (ACF,访问控制过滤器)和Role-Based Access Control (RBAC,基于角色的访问控制)。访问控制过滤器(ACF)ACF是一种简单的鉴权方式,是用来做一些简单的访问控制的一种好方法。顾名思义,ACF是作为一个行为(behavior)附加在控制器(controller)或者一个模块(module)上的动作过滤器。ACF会检查一组访问规则,以确认当前用户是否有足够的权限访问动作(action)。以下代码展示了如何去使用ACF:use yii\filters\AccessControl; class SiteController extends Controller {     public function behaviors()     {         return [             'access' => [                 'class' => AccessControl::className()...
 发布日期: 2014-09-19    分类: PHP   浏览量: 10187
HTML5的触摸API支持处理单点和多点的触摸事件处理。接口1、TouchEvent:代表了一个触摸事件。主要属性:TouchEvent.changedTouches:一个TouchList对象。代表了所有上一个接触点到当前点状态发生变化的点。TouchEvent.touches:一个TouchList对象。代表的所有当前触摸点,不管目标或者状态是否改变。TouchEvent.type:触摸事件类型。有touchstart、touchend、touchmove、touchenter、touchleave和touchleave。2、Touch:代表一个单独的触摸点。主要属性:Touch.identifier:这个触摸对象的唯一标识。3、TouchList:代表一组触摸点。比如同时有多根手指放在在屏幕上面。4、DocumentTouch:包含创建Touch和TouchList对象的方法。 触摸事件touchstart:触摸的时候发生。touchend:手指从屏幕抬起时发生。手指划出了屏幕也会触发这个事件。touchmove:手指沿着屏幕滑动时触发。touchenter:触摸点进入到一个元素...
 发布日期: 2014-08-20    分类: Javascript   浏览量: 52656
测试过了QQ,126和gmail的SMTP。以下代码含有输出调试信息的代码,如果不要需要自行去除!代码及示例如下:<?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送,带附件(单个或多个附件),支持到服务器的ssl连接 * 需要的php扩展:sockets、Fileinfo和openssl。 * 编码格式是UTF-8,传输编码格式是base64 * @example * $mail = new MySendMail(); * $mail->setServer("smtp@126.com", "XXXXX@126.com", "XXXXX"); //设置smtp服务器,普通连接方式 * $mail->setServer("smtp.gmail.com", "XXXXX@gmail.com", "XXXXX", 465, true); //设置smtp服务器,到服务器的SSL连接 * $mail->setFrom("XXXXX"); //设置发件人 * $mail->setReceiver("XXXX...
 发布日期: 2013-10-16    分类: PHP   浏览量: 6596
话说默认的样式超级难看,而这个东西又比较特殊,input其他的类型都可以自定义的,唯独file不能被改变。起初上网搜索了一下,都说不能改变,无奈。都是用一个text和一个button的input,然后隐藏掉file,再用js控制。也挺简单,看下面代码:<script> function fileup(){ var fileup = document.getElementById("fileupload"); file.click(); } function change(){ var file = document.getElementById("file"), fileup = document.getElementById("fileupload"); fileup.value = file.value; } </script> <input type="text" id="fileupload" /> <input type="button" id="button" value="browse" onclick="fileup()" /&...
 发布日期: 2013-04-25    分类: Javascript   浏览量: 3830