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中使用Sockets 从Usenet中获取文件
Jan 10 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 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缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
python实现批量修改文件名代码
2017/09/10 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python实现简易淘宝购物
2019/11/22 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
python判断正负数方式
2020/06/03 Python
python 6种方法实现单例模式
2020/12/15 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
什么是继承
2013/12/07 面试题
中学生自我评价范文
2014/02/08 职场文书
产品质量保证书
2014/04/29 职场文书
慰问信格式规范
2015/03/23 职场文书
南京大屠杀观后感
2015/06/02 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫