首页 > 代码库 > PHP+jQuery 注册模块的改进之三:使用 Smarty3
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
PHP+jQuery 注册模块的改进之三:使用 Smarty3
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。