簡體   English   中英

Codeigniter。 如果在頁腳上,應該在哪里/如何編寫登錄方法

[英]Codeigniter. Where/How should I write the login method if it's on the footer

初學者問題抱歉:我有具有頁眉,導航欄,內容,邊欄和頁腳的模板。 但是我的登錄框位於邊欄上,而我的視圖文件“ footer.php”由邊欄和頁腳組成。 (所以我的登錄框位於footer.php上)我的控制器,每個方法都必須導入header.php視圖,somemodule.php(內容)視圖和footer.php視圖。

問題是當我編寫登錄方法時,它沒有內容視圖,因為loginbox已在頁腳中。 不需要somemodule.php(content)視圖。 (我的登錄表單將數據發布到控制器登錄方法)

這是我的控制器

 public function login()
{
    $this->load->view('header');

    /// login and validation  algorithm here////
    /// not have $this->load->view('some content') ///

    $this->load->view('footer');  ////my loginform is footer

}
 public function register()
{
   $this->load->view('header');
   $this->load->view('register_content');   // so this has a content
   //// algorithm and validation here /////
   $this->load->view('footer');
}

這是我在頁腳視圖中的表單

<?php echo form_open('member/login');?>  //post data to method login controller
                    <h2> Login </h2>
                    <ul id='login'>
                        <li>
                            Username:<br>
                            <input type='text' name='username'>
                        </li>
                        <li>
                            Password:<br>
                            <input type='password' name='password'>
                        </li>
                        <br>
                        <li>
                            <input type='submit' value='Log in'>
                        </li>
                    </ul>   
                </form>

當用戶輸入錯誤的密碼時,我希望網站與錯誤消息顯示在同一頁面上,並且“內容視圖”仍然相同。

您可以使用會話庫中的 flashdata

例如,在您的登錄控制器中:

public function login() {
    // Do your logic... Don't load any views or anything
    if ($error) {
        $this->session->set_flashdata('login_error', TRUE);
    }

    // Load the user agent library
    $this->load->library('user_agent');

    // Load the url help
    $this->load->helper('url');

    // Then redirect to the previous page. You can add more security and check if the previous page is not empty and is from your website.
    redirect($this->agent->referrer());
}

然后在標題視圖中:

<?php if ($this->session->flashdata('login_error')): ?>
    <div class="error">Something went wrong ! Check your username / password.</div>
<?php endif;?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM