:::

8. 增加註冊機制

一、註冊表單

  1. 為了日後管理方便,我們把會員改成資料庫版
  2. 為了簡化登入機制,帳號以Email來取代
  3. 註冊表單可以拿登入表單來修改,並另存為 templates\regist_form.tpl,例如:
    <div class="panel panel-success">
      <div class="panel-heading">註冊</div>
      <div class="panel-body">
        <form class="form-horizontal" action="index.php" method="post" role="form">
          <div class="form-group">
            <label class="col-md-4 control-label" for="email">Email:</label>
            <div class="col-md-8">
              <input type="text" name="email" id="email" placeholder="請輸入Email" class="form-control">
            </div>
          </div>
          <div class="form-group">
            <label class="col-md-4 control-label" for="pass">密碼:</label>
            <div class="col-md-8">
              <input type="text" name="pass" id="pass" placeholder="請設定密碼" class="form-control">
            </div>
          </div>
          <div class="form-group">
            <label class="col-md-4 control-label" for="name">姓名:</label>
            <div class="col-md-8">
              <input type="text" name="name" id="name" placeholder="請輸入中文姓名" class="form-control">
            </div>
          </div>
          <div class="text-center">
            <button type="submit" name="op" value="save_regist" class="btn btn-primary">確定註冊</button>
          </div>
        </form>
      </div>
    </div>
    
  4. 其中,密碼改為明碼,避免使用者輸入錯誤。或者也可以改成輸入兩次密碼,然後進行比對亦可(只是比較麻煩)。

  5. 另外,記得設定 op,以便告訴程式下一步要做什麼。

  6. 當然原本的登入表單 templates\side_login.tpl 也要改一下帳號部份,另外,還得加上註冊的連結:

    <div class="panel panel-primary">
      <div class="panel-heading">登入</div>
      <div class="panel-body">
        <form class="form-horizontal" action="index.php" method="post" role="form">
          <div class="form-group">
            <label class="col-md-4 control-label" for="email">Email:</label>
            <div class="col-md-8">
              <input type="text" name="email" id="email" placeholder="請輸入Email" class="form-control">
            </div>
          </div>
          <div class="form-group">
            <label class="col-md-4 control-label" for="pass">密碼:</label>
            <div class="col-md-8">
              <input type="password" name="pass" id="pass" placeholder="請輸入密碼" class="form-control">
            </div>
          </div>
          <div class="text-center">
            <input type="hidden" name="op" value="login">
            <a href="index.php?op=regist" class="btn btn-success">註冊</a>
            <button type="submit" name="button" class="btn btn-primary">登入</button>
          </div>
        </form>
      </div>
    </div>
    
  7. 由於有多設了一組 op,所以,在 switch 中要多一組對應流程(即便沒有任何內容也沒關係)
    case 'regist':
         break;

     

二、如何點擊註冊就換成註冊表單?

  1. 側邊欄的切換是在 templates\index.tpl 中設定,所以,我們只要讓 index.tpl 知道何時該出現註冊的樣板即可。
  2. 由於按下註冊按鈕會傳出一個 $op=regist 的變數,所以,我們利用它來讓系統判斷即可。
    {if $op=='regist'}
      {include file='regist_form.tpl'}
    {else}
      {$content}
    {/if}
  3. 問題是,index.tpl如何取得 $op 變數?當然得由index.php傳給他!所以,修改 index.php,多傳一個 $smarty->assign('op', $op); 到樣板。

    require_once 'smarty/libs/Smarty.class.php';
    $smarty = new Smarty;
    $smarty->assign('name', $name);
    $smarty->assign('group', $group);
    $smarty->assign('content', $content);
    $smarty->assign('op', $op); 
    $smarty->assign('page_title', '活動報名系統');
    $smarty->display('index.tpl');

     


:::

書籍目錄

展開 | 闔起

快速登入


https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D721%26tbsn%3D27

計數器

今天: 4723472347234723
昨天: 2489248924892489
總計: 8026705802670580267058026705802670580267058026705