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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
PHP脚本的10个技巧(1)
Oct 09 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
php中各种定义变量的方法小结
Oct 18 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Sanic框架流式传输操作示例
2018/07/18 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python中过滤字符串列表的方法
2020/12/22 Python
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
学校党员对照检查材料
2014/08/28 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
布达拉宫导游词
2015/02/02 职场文书
支教个人总结
2015/03/04 职场文书
综合素质评价自我评价
2015/03/06 职场文书
感恩父母主题班会
2015/08/12 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android