PHP+jQuery 注册模块的改进(三):更新到Smarty3.1


Posted in PHP onOctober 14, 2014

Smarty3.1X( 最新版本 3.1.19) 比起Smarty2.x修改了不少特性。我把这个模块使用Smarty3.1.18 ( 下载地址http://www.smarty.net/files/Smarty-3.1.18.zip )重新修改了一遍,是项目文件和目录看起来更干净更有调理。

把Smarty压缩包中的libs文件夹拷贝至模块根目录下,然后根目录创建init.inc.php:

<?php

/**

    file:init.inc.php Smarty对象的实例化及初始化文件

*/
/* *********************Smarty设置*********************** */

//根目录路径方式,用于Smarty设置

define("ROOT",str_replace("\\","/",dirname(__FILE__))."/");
require ROOT.'libs/Smarty.class.php';

$smarty = new Smarty();
//Smarty3设置默认路径

$smarty ->setTemplateDir(ROOT.'templates/')

        ->setCompileDir(ROOT.'templates_c/')

        ->setPluginsDir(ROOT.'plugins/')

        ->setCacheDir(ROOT.'cache/')

        ->setConfigDir(ROOT.'configs');
$smarty->caching = false;

$smarty->cache_lifetime = 60*60*24; //模版缓存有效时间为1天

$smarty->left_delimiter = '<{';

$smarty->right_delimiter = '}>';
/***********************************************************/
//根目录url方式

$PHP_SELF=$_SERVER['PHP_SELF'];

$ROOT_URL='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);

define(ROOT_URL,$ROOT_URL);
//模版目录url方式

define("Template_Dir",$ROOT_URL.'templates');

创建初始化文件中出现的templates,templates_c,plugins,cache,configs文件夹。

修改的文件都比较相似,而且也非常easy,这里列出register.html和register.php文件的修改。

register.html是注册的前台页面,路径是/templates/register.html

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>注册页面</title>

<link href="<{$Template_Dir}>/css/common.css"  rel="stylesheet" type="text/css">

<link href="<{$Template_Dir}>/css/register.css"  rel="stylesheet" type="text/css">
<script src="<{$Template_Dir}>/js/jquery-1.8.3.min.js"></script>

<script src="<{$Template_Dir}>/js/register.js"></script>

<!--邮箱下拉-->

<script src="<{$Template_Dir}>/js/emailup.js"></script>

</head>
<body>

<{*导入header.html*}>

<{include file="header.html"}>
<!-- 内容区 -->

<div id="container">
    <!--注册区-->

    <div id="register">
        <!-- 注册表单 -->

        <form id="register-form" action="register_chk.php" method="post">

            

            <!-- 用户名 -->        

            <!-- placeholder HTML5的属性,提供提示信息。输入字段为空时显示,并会在字段获得焦点时消失 -->

            <div class="ipt fipt">

                <input type="text" name="uname" id="uname" value="" placeholder="输入用户名"  autocomplete="off" />

                <!--提示文字-->

                <span id="unamechk"></span>

            </div>
            <!-- email -->            

            <div class="ipt">

                <input type="text" name="uemail" id="uemail" value="" placeholder="常用邮箱地址" autocomplete="off" /><span id="uemailchk"></span><ul class="autoul"></ul>

            </div>
            <!-- 密码 -->

            <div class="ipt">

                <input type="password" name="upwd" id="upwd" value="" placeholder="设置密码" /><div class="upwdpic"><span id="upwdchk"></span><img id="pictie" /></div>

            </div>

            

            <!-- 重复密码 -->

            <div class="ipt">

                <input type="password" name="rupwd" id="rupwd" value="" placeholder="确认密码" /><span id="rupwdchk"></span>

            </div>
            <!--验证码-->

            <div class="ipt iptend">

                <input type='text' id='yzm' name='yzm' placeholder="验证码" autocomplete="off" />

                <img id='yzmpic' src='valcode.php?num=<{showval}>' style="cursor:pointer" alt="验证码" title="验证码">

                <a style="cursor:pointer" id='changea'>

                    <img id="refpic" src="<{$Template_Dir}>/images/ref.jpg" alt="刷新验证码">

                </a>

                <span id='yzmchk'></span>

            </div>
            <!-- 提交 -->

            <button type="button" id="sub">立即注册</button>
            <!-- 服务条款 -->

            <span class="fuwu">

                <input type="checkbox" name="agree" id="agree" checked="checked">

                <label for="agree">我同意  <a href="#">" 服务条款  "</a> 和  <a href="#">" 网络游戏用户隐私权保护和个人信息利用政策 "</a>

                </label>

            </span>
        </form>
    </div>
</div>

</body>

</html>

register.php:

<?php
session_start();
require_once 'init.inc.php';
//设置模版目录,用于模版页头部引用CSS、JS、Images

$smarty->assign("Template_Dir",Template_Dir);
$smarty->display('register.html');

同时扩充了生成验证码插件,路径是/plugins/function.showval.php

<?php
//生成验证码

function smarty_function_showval($params,$smarty){
    $num = "";

    for($i=0;$i<4;$i++){
        $tmp = rand(1,15);

        if ($tmp > 9) {

            switch ($tmp) {

                case(10):

                    $num .= 'a';

                    break;

                case(11):

                    $num .= 'b';

                    break;

                case(12):

                    $num .= 'c';

                    break;

                case(13):

                    $num .= 'd';

                    break;

                case(14):

                    $num .= 'e';

                    break;

                case(15):

                    $num .= 'f';

                    break;

            }

        } else {

            $num .= $tmp;

        }    

    }
    $mdnum = md5($num);

    $_SESSION['num'] = $num;

    $_SESSION['mdnum'] = $mdnum;
    //写在session之后

    return $mdnum;

}
$_SESSION['num'] = smarty_function_showval($params,$smarty);

$_SESSION['mdnum'] = md5(smarty_function_showval($params,$smarty));

注意插件的命名:

文件名要放在根目录的plugins目录下,命名规则是 function.函数名.php,文件中函数的命名规则是 smarty_function_函数名($params,$smarty),其中第一个参数是传递给模板的关联数组,第二个参数是接收自动传入的smarty对象,函数要有返回值。

更多代码见:https://github.com/dee0912/myGit

PHP 相关文章推荐
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
php无限遍历目录示例
Feb 21 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
通过PHP实现获取访问用户IP
May 09 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 #PHP
PHP+jQuery 注册模块开发详解
Oct 14 #PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 #PHP
php中动态修改ini配置
Oct 14 #PHP
php中的ini配置原理详解
Oct 14 #PHP
9段PHP实用功能的代码推荐
Oct 14 #PHP
五款PHP代码重构工具推荐
Oct 14 #PHP
You might like
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
小程序实现分类页
2019/07/12 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python列表计数及插入实例
2014/12/17 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python打印输出数组中全部元素
2018/03/13 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python返回数组的索引实例
2019/11/28 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
荟萃全球保健品:维他购
2018/05/09 全球购物
竞选卫生委员演讲稿
2014/04/28 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
消防隐患整改通知书
2015/04/22 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书