程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP+jQuery 注冊模塊的改進(三):更新到Smarty3.1

PHP+jQuery 注冊模塊的改進(三):更新到Smarty3.1

編輯:PHP綜合

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved