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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。