PHP+jQuery 注册模块的改进之三:使用 Smarty3

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:

 1 <?php
 2 /**
 3     file:init.inc.php Smarty对象的实例化及初始化文件
 4 */
 5
 6 /* *********************Smarty设置*********************** */
 7 //根目录路径方式,用于Smarty设置
 8 define("ROOT",str_replace("\\","/",dirname(__FILE__))."/");
 9
10 require ROOT.‘libs/Smarty.class.php‘;
11 $smarty = new Smarty();
12
13 //Smarty3设置默认路径
14 $smarty ->setTemplateDir(ROOT.‘templates/‘)
15         ->setCompileDir(ROOT.‘templates_c/‘)
16         ->setPluginsDir(ROOT.‘plugins/‘)
17         ->setCacheDir(ROOT.‘cache/‘)
18         ->setConfigDir(ROOT.‘configs‘);
19
20 $smarty->caching = false;
21 $smarty->cache_lifetime = 60*60*24; //模版缓存有效时间为1天
22 $smarty->left_delimiter = ‘<{‘;
23 $smarty->right_delimiter = ‘}>‘;
24
25 /***********************************************************/
26
27 //根目录url方式
28 $PHP_SELF=$_SERVER[‘PHP_SELF‘];
29 $ROOT_URL=‘http://‘.$_SERVER[‘HTTP_HOST‘].substr($PHP_SELF,0,strrpos($PHP_SELF,‘/‘)+1);
30 define(ROOT_URL,$ROOT_URL);
31
32 //模版目录url方式
33 define("Template_Dir",$ROOT_URL.‘templates‘);

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

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

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

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <title>注册页面</title>
 6 <link href="<{$Template_Dir}>/css/common.css"  rel="stylesheet" type="text/css">
 7 <link href="<{$Template_Dir}>/css/register.css"  rel="stylesheet" type="text/css">
 8
 9 <script src="<{$Template_Dir}>/js/jquery-1.8.3.min.js"></script>
10 <script src="<{$Template_Dir}>/js/register.js"></script>
11 <!--邮箱下拉-->
12 <script src="<{$Template_Dir}>/js/emailup.js"></script>
13 </head>
14
15 <body>
16 <{*导入header.html*}>
17 <{include file="header.html"}>
18
19 <!-- 内容区 -->
20 <div id="container">
21
22     <!--注册区-->
23     <div id="register">
24
25         <!-- 注册表单 -->
26         <form id="register-form" action="register_chk.php" method="post">
27
28             <!-- 用户名 -->
29             <!-- placeholder HTML5的属性,提供提示信息。输入字段为空时显示,并会在字段获得焦点时消失 -->
30             <div class="ipt fipt">
31                 <input type="text" name="uname" id="uname" value="" placeholder="输入用户名"  autocomplete="off" />
32                 <!--提示文字-->
33                 <span id="unamechk"></span>
34             </div>
35
36             <!-- email -->
37             <div class="ipt">
38                 <input type="text" name="uemail" id="uemail" value="" placeholder="常用邮箱地址" autocomplete="off" /><span id="uemailchk"></span><ul class="autoul"></ul>
39             </div>
40
41             <!-- 密码 -->
42             <div class="ipt">
43                 <input type="password" name="upwd" id="upwd" value="" placeholder="设置密码" /><div class="upwdpic"><span id="upwdchk"></span><img id="pictie" /></div>
44             </div>
45
46             <!-- 重复密码 -->
47             <div class="ipt">
48                 <input type="password" name="rupwd" id="rupwd" value="" placeholder="确认密码" /><span id="rupwdchk"></span>
49             </div>
50
51             <!--验证码-->
52             <div class="ipt iptend">
53                 <input type=‘text‘ id=‘yzm‘ name=‘yzm‘ placeholder="验证码" autocomplete="off" />
54                 <img id=‘yzmpic‘ src=‘valcode.php?num=<{showval}>‘ style="cursor:pointer" alt="验证码" title="验证码">
55                 <a style="cursor:pointer" id=‘changea‘>
56                     <img id="refpic" src="<{$Template_Dir}>/images/ref.jpg" alt="刷新验证码">
57                 </a>
58                 <span id=‘yzmchk‘></span>
59             </div>
60
61             <!-- 提交 -->
62             <button type="button" id="sub">立即注册</button>
63
64             <!-- 服务条款 -->
65             <span class="fuwu">
66                 <input type="checkbox" name="agree" id="agree" checked="checked">
67                 <label for="agree">我同意  <a href="#">" 服务条款  "</a> 和  <a href="#">" 网络游戏用户隐私权保护和个人信息利用政策 "</a>
68                 </label>
69             </span>
70
71         </form>
72
73     </div>
74
75 </div>
76 </body>
77 </html>

register.php:

 1 <?php
 2
 3 session_start();
 4
 5 require_once ‘init.inc.php‘;
 6
 7 //设置模版目录,用于模版页头部引用CSS、JS、Images
 8 $smarty->assign("Template_Dir",Template_Dir);
 9
10 $smarty->display(‘register.html‘);

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

 1 <?php
 2
 3 //生成验证码
 4 function smarty_function_showval($params,$smarty){
 5
 6     $num = "";
 7     for($i=0;$i<4;$i++){
 8
 9         $tmp = rand(1,15);
10         if ($tmp > 9) {
11             switch ($tmp) {
12                 case(10):
13                     $num .= ‘a‘;
14                     break;
15                 case(11):
16                     $num .= ‘b‘;
17                     break;
18                 case(12):
19                     $num .= ‘c‘;
20                     break;
21                 case(13):
22                     $num .= ‘d‘;
23                     break;
24                 case(14):
25                     $num .= ‘e‘;
26                     break;
27                 case(15):
28                     $num .= ‘f‘;
29                     break;
30             }
31         } else {
32             $num .= $tmp;
33         }
34     }
35
36     $mdnum = md5($num);
37     $_SESSION[‘num‘] = $num;
38     $_SESSION[‘mdnum‘] = $mdnum;
39
40     //写在session之后
41     return $mdnum;
42 }
43
44 $_SESSION[‘num‘] = smarty_function_showval($params,$smarty);
45 $_SESSION[‘mdnum‘] = md5(smarty_function_showval($params,$smarty));

注意插件的命名:

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

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

时间: 2024-08-07 06:56:11

PHP+jQuery 注册模块的改进之三:使用 Smarty3的相关文章

PHP+jQuery 注册模块的改进之二

接<PHP+jQuery 注册模块的改进之一>继续修改: ①在注册成功后返回登录邮件页面( maillogin.php ),在页面中用户可以点击链接跳转到自己注册邮箱的登录页面,可以再次发送激活链接: ②给激活链接设置有效期,过了有效期点击激活连接,会跳转页面让用户选择再次发送邮件或者返回注册页:再次发送邮件后,进邮箱点击链接激活: ③点击重新发送激活连接,不跳转页面,在当前页无刷新弹出通知:已重新发送链接,几秒钟之后通知消失: ④点击更换收件邮箱,跳转至注册页 1.点击邮箱链接跳转至相应邮箱

PHP+jQuery 注册模块的改进之一

/* ******* Date:2014-09-28 ******* Author:小dee ******* Blog:http://www.cnblogs.com/dee0912/*/ 对上一篇博文模块的改进之处包括: ①把验证码写入SESSION而不是把验证码的文字返回客户端的隐藏域,否则验证码的意义就不复存在啦 ( 以下几点在后面的博文里写 ) ②验证码在一段时间内没有发出请求的情况下自行更换 ②给激活链接设置失效时间 ③每个链接只能激活一次,激活失败时给出明确的原因 ④在注册成功后返回登

PHP+jQuery 简单注册模块

/* ******* 环境: Apache2.2.8 + PHP5.2.6 + MySQL5.0.51b + jQuery-1.8.3.min.js ************** 其他组件:Zend_mail( Zend_framework 1.11.11 )******* Date:2014-09-25******* Author:小dee******* Blog:http://www.cnblogs.com/dee0912/*/ 写了一个简单的PHP+jQuery注册模块,需要填写的栏目包括

php+jquery注册实例

写了一个简单的PHP+jQuery注册模块,需要填写的栏目包括用户名.邮箱.密码.重复密码和验证码,其中每个栏目需要具备的功能和要求如下图: 在做这个模块的时候,很大程度上借鉴了网易注册( http://reg.163.com/reg/reg.jsp?product=urs ) 的功能和样式.但网易对于每个栏目的判断的做法是:在输入文字时,并不给出任何实时的检测结果,而在这个栏目失去焦点时,才把检测的结果展示出来,这种做 法我认为会使用户在输入时视觉上比较统一,看到的是关于该栏目要求的提示,不会

jQuery源代码学习之九—jQuery事件模块

jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 jQuery.event={ global:{}, add:function(elem,types,handle,data,selector){}, remove:function(elem,types,handler,selector,mapppedTypes){}, trigger:functio

JQuery日记 6.3 JQuery遍历模块

jQuery.extend({ // 返回elem延DOM树某个方向访问的所有节点,直到遇到until条件 dir: function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate &&am

登录及注册模块设置与流程图

原文地址:http://www.cocoachina.com/design/20170320/18918.html 一.登录/注册模块流程图 1.电商&O2O类产品下单注册逻辑 2.类似于简书&知乎等内容型社区产品 二.关于注册流程 1.同一页面中完成注册 较适合填写信息较少(往往不包含关于用户个人信息的设置),注册流程简洁的产品,这类产品的注册所需的信息往往只包含:手机号.验证码.密码等最简单的信息. 在同一页面中完成注册,能够能够让用户对整个注册流程有个心理预期,对填写的信息能够进行预

百思不得姐之立即登录注册模块(五)

一 功能图和实现思路 具体功能图: 实现思路: --> 1 关注控制器模块搭建(xib) --> 2 登录和注册界面的总体模块数量(三个模块),可以用三个view来装各自的子控件 --> 2.2 先做上面的view->中间的view->底部的view(顺序自定) --> 2.3 创建两个xib,用同一个类来管理两个xib --> 2.4 将中间的view的宽度改为屏幕的两倍 --> 2.5 用拖线的方式修改约束,达到app的整体效果 二 关注控制器模块搭建

WinForm应用程序之注册模块的设计与实现

Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好最近做了一个关于应用程序注册的小demo(这里只是一个思路),在这里和大家分享一下. 项目的要求是这样的: 1. 能获取主机硬盘序列号.网卡MAC地址.CPU编号,并按照一定的算法由此生成机器码 2. 能根据机器码按照一定的算法生成注册码 3. 未注册时,不能使用会员管理功能 好的废话不多说,马上进