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 相关文章推荐
php 8小时时间差的解决方法小结
Dec 22 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
PHP逐行输出(ob_flush与flush的组合)
Feb 04 PHP
preg_match_all使用心得分享
Jan 31 PHP
php中动态变量用法实例
Jun 10 PHP
golang与PHP输出excel示例
Jul 22 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP 布尔值的自增与自减的实现方法
May 03 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
yii上传文件或图片实例
2014/04/01 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
JavaScript的Function详细
2006/11/14 Javascript
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
vue实现列表拖拽排序的功能
2020/11/02 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
Python 数据结构之队列的实现
2017/01/22 Python
windows下python连接oracle数据库
2017/06/07 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
详解python中的模块及包导入
2019/08/30 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
逃出克隆岛观后感
2015/06/09 职场文书
仰望星空观后感
2015/06/10 职场文书
办公用品管理制度
2015/08/04 职场文书
Python与C++中梯度方向直方图的实现
2022/03/17 Python