Joomla(5)登錄、註銷、註冊和更新的Demo

一、登錄模塊:

    <form action="<?php echo JRoute::_('index.php?option=com_users&task=user.login'); ?>" method="post" class="form-validate form-horizontal well">

        <div>用戶名:<input name="username" type="text" /></div>
        <div>密碼:<input name="password" type="password" /></div>

        <div>密碼:<input type="submit" value="提交"/></div>
        <?php echo JHtml::_('form.token'); ?>
    </form>


二、註銷模塊:

    <form action="<?= JRoute::_('index.php?option=com_users'); ?>" method="post" id="login-form" class="form-vertical"> 
        <div class="login-greeting"> 登錄用戶的角色</div> 
        <div class="logout-button">
            <input type="submit" name="Submit" class="btn btn-primary" value="退出">
            <input type="hidden" name="option" value="com_users">
            <input type="hidden" name="task" value="user.logout">
            <input type="hidden" name="return" value="<?= base64_encode(註銷後返回的鏈接地址[注:此處需要base64轉碼]); ?>">
            <?php echo JHtml::_('form.token'); ?>
    </form>

三、註冊模塊:

    <form id="member-profile" action="<?php echo JRoute::_('index.php?option=com_users&task=profile.save'); ?>" method="post" class="form-validate form-horizontal well" enctype="multipart/form-data">
        <fieldset>
            <legend>編輯您的用戶資料</legend>
            <input type="hidden" name="jform[id]" id="jform_id" value="">
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_name-lbl" for="jform_name" class="hasTooltip required">姓名:</label> </div>
                <div class="controls">
                    <input type="text" name="jform[name]" id="jform_name">
                </div>
            </div>
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_username-lbl" for="jform_username" class="hasTooltip">用戶名:</label>
                </div>
                <div class="controls">
                    <input type="text" name="jform[username]" id="jform_username">
                </div>
            </div>
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_password1-lbl" for="jform_password1" class="hasTooltip">密碼:</label>
                </div>
                <div class="controls">
                    <input type="password" name="jform[password1]" id="jform_password1">
                </div>
            </div>
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_password2-lbl" for="jform_password2" class="hasTooltip">驗證密碼:</label>
                </div>
                <div class="controls">
                    <input type="password" name="jform[password2]" id="jform_password2">
                </div>
            </div>
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_email1-lbl" for="jform_email1" class="hasTooltip required">E郵箱地址:</label>
                </div>
                <div class="controls">
                    <input type="email" name="jform[email1]" class="validate-email required" id="jform_email1">
                </div>
            </div>
            <div class="control-group">
                <div class="control-label">
                    <label id="jform_email2-lbl" for="jform_email2" class="hasTooltip required">重填郵箱地址:</label>
                </div>
                <div class="controls">
                    <input type="email" name="jform[email2]" class="validate-email required" id="jform_email2">
                </div>
            </div>
        </fieldset>
        <div class="control-group">
            <div class="controls">
                <button type="submit" class="btn btn-primary validate"><span>提交</span></button>
                <input type="hidden" name="option" value="com_users" />
                <input type="hidden" name="task" value="profile.save" />
            </div>
        </div>
        <?php echo JHtml::_('form.token'); ?>
    </form>

    注:
    1、components\com_users\controllers\profile.php中的‘save函數’需要修改:
  // Unset the username if it should not be overwritten
  $username = $data['username'];
  $isUsernameCompliant = $this->getState('user.username.compliant');
        //在刪除username時,需要增加判斷此操作是否爲添加

  if ($userId && !JComponentHelper::getParams('com_users')->get('change_login_name') && $isUsernameCompliant)
  {
   unset($data['username']);
  }

2、前臺註冊的用戶需要後臺爲其添加默認用戶組:編寫‘addUserOfGroup($user_id)’函數(該函數在前端註冊新用戶時執行)
    public function addUserOfGroup($user_id,$group_id = null){
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->insert('#__user_usergroup_map')
            ->columns(array('user_id','group_id'));
        $values = array();
        $values[] = $user_id;
        $values[] = empty($group_id) ? 2 : $group_id;
        $query->values(implode(',',$values));
        try {
            $db->setQuery($query);
            $db->execute();
            return true;
        } catch(EXception $e){
            return false;
        }
    }


四、更新模塊:

    更新與註冊類似。











    
發佈了56 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章