• 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

  • 相关阅读:
    移动端line-height问题
    Android8 自定义广播接收不到的问题
    vue 使用font-awesome
    在vue中使用highcharts的仪表图等扩展
    android控件RecyclerView中,如何显示自定义分割线以及最后一项去除分割线
    使用RecyclerView设置自定义分割线
    Android-配置文件中设置“android:clickable="false"无效的原因及解决办法
    HDU 4632 Palindrome subsequence (区间DP)
    HDU 2208 唉,可爱的小朋友(DFS)
    HDU 4618 Palindrome Sub-Array
  • 原文地址:https://www.cnblogs.com/dee0912/p/4008211.html
Copyright © 2020-2023  润新知