首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

CodeIgniter 會員註冊與登入完整程式碼範例

     編輯:PHP 綜合知識

本文提供一個基於 CodeIgniter 3 的會員註冊/登入實作範例,採用 Active Record 模式操作資料庫,架構簡潔,適合初學者參考。專案結構包含控制器、視圖與資料表結構。

控制器:controllers/Login.php

處理表單驗證、登入驗證、註冊邏輯與 Session 管理。

<?php
class Login extends CI_Controller {
    private $pass = '';

    public function __construct() {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
        $this->load->library('session');
    }

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

    public function formsubmit() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('login');
        } else {
            if (isset($_POST['submit']) && !empty($_POST['submit'])) {
                $data = array(
                    'user' => $_POST['username'],
                    'pass' => md5($_POST['password'])
                );
                $newdata = array(
                    'username' => $data['user'],
                    'userip'   => $_SERVER['REMOTE_ADDR'],
                    'luptime'  => time()
                );

                if ($_POST['submit'] == 'login') {
                    $query = $this->db->get_where('uc_user', array('user' => $data['user']), 1, 0);
                    foreach ($query->result() as $row) {
                        $pass = $row->pass;
                    }
                    if ($pass == $data['pass']) {
                        $this->session->set_userdata($newdata);
                        $this->load->view('usercenter', $data);
                    }
                } elseif ($_POST['submit'] == 'register') {
                    $this->session->set_userdata($newdata);
                    $this->db->insert('uc_user', $data);
                    $this->load->view('usercenter', $data);
                } else {
                    $this->session->sess_destroy();
                    $this->load->view('login');
                }
            }
        }
    }
}

視圖:views/login.php

簡單的登入/註冊表單,使用 CodeIgniter 表單輔助函數輸出。

<html>
<?php echo validation_errors(); ?>
<?php echo form_open('login/formsubmit'); ?>
<table>
<tr>
<td>用戶名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密碼</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="login"></td>
<td><input type="submit" name="submit" value="register"></td>
</tr>
</table>
</form>
</html>

資料表結構:uc_user

CREATE TABLE `uc_user` (
    `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
    `user` varchar(20) NOT NULL,
    `pass` char(32) NOT NULL,
    `role` enum('root','normal') NOT NULL DEFAULT 'root',
    `del` decimal(1,0) NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

安全性提醒

  • 範例使用 md5 加密密碼,實務上請改用 password_hash() 與 password_verify()。
  • 應加入 CSRF 保護、SQL 注入防範(Active Record 已自動轉義)與輸出轉義。
  • 建議將資料庫操作移至 Model 層,遵循 MVC 分離原則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved