Trang 2 / 3 FirstFirst 123 LastLast
Hiển thị kết quả từ 11 đến 20 / 25
  1. #11
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    HELPERS (PHẦN 7)

    Những phần trước các bạn đã làm quen với CodeIgniter, chỉ với những phần trước các bạn đã có thể viết ứng dụng web của mình bằng CodeIgniter rồi. Ở phần này, tôi sẽ giới thiệu về các hàm trợ giúp (Gọi là helper) giúp cho công việc viết code của bạn trở nên đơn giản hơn rất nhiều.

    Helper đó là cách gọi dành cho các hàm đã được CodeIgniter (Hoặc người dùng) định nghĩa sẳn để sử dụng trong ứng dụng của mình một cách nhanh chóng. CodeIgniter đã cung cấp sẳn rất nhiều helper giúp bạn làm việc với CodeIgniter nhanh chóng hơn nhiều, một vài helper được CodeIgniter định nghĩa và theo tôi các helper được sử dụng thường xuyên nhất đó là: url, form, language, captcha, email...

    Việc sử dụng một helper rất đơn giản, trước tiên bạn phải load helper cần sử dụng bằng cú pháp sau:
    Code:
    $this->load->helper('Tên_helper');
    Ví dụ bạn muốn load helper url trong phương thức index của controller blog, bạn sẽ có đoạn code như sau:
    PHP Code:
    public function index()
    {
        
    //Load helper url
        
    $this->load->helper('url');
        
        
    //Gọi một hàm trong helper url
        
    echo site_url();

    Như ví dụ trên, helper url được load bởi câu lệnh $this->load->helper('url') và hàm site_url trong helper url được sử dụng với lời gọi hàm bình thường mà chúng ta vẫn biết trong PHP.

    Các bạn cũng có thể load một lúc nhiều helper bằng cú pháp lệnh như sau:
    Code:
    $this->load->helper(array('Tên_helper_1', 'Tên_helper_2', 'Tên_helper_n'));
    Ví dụ, bạn muốn load các helper url, form, language bạn sẽ có cú pháp như sau:
    PHP Code:
    $this->load->helper(array('url''form''language')); 
    Các bạn lưu ý, tên helper phải được viết hoàn toàn bằng chữ thường.

    Ngoài những helper do CodeIgniter định nghĩa sẳn (Và được lưu trong thư mục system/helpers) thì các bạn cũng có thể tự tạo ra các helper với quy tắc như sau:

    - Tên file helper phải là chữ thường và có phần đuôi (Subfix) là _helper. Ví dụ tôi muốn tạo một helper có tên là blog thì tôi sẽ tạo một file có tên là blog_helper.php và được lưu trong thư mục application/helpers hoặc lưu vào thư mục system/helpers cũng được (Nhưng tôi khuyên bạn không nên can thiệp vào thư mục system của CodeIgniter).
    - Tất cả các hàm bạn định nghĩa trong helper của bạn (ví dụ ở đây là helper blog) phải là duy nhất (không được trùng với các hàm của các helper khác).

    Các bạn có thể truy cập địa chỉ http://www.codeigniter.com/user_guid...ers/index.html để xem danh sách các helper mà CodeIgniter cung cấp sẳn và tìm hiểu thêm về helpers tại địa chỉ http://www.codeigniter.com/user_guid...l/helpers.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  2. #12
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    LIBRARIES (PHẦN 8)

    CodeIgniter tạo ra các lớp chức năng giúp cho bạn làm việc nhanh chóng với ứng dụng được gọi là library (Thư viện). Có thể xem library có vai trò giống với helper.

    Mỗi library là một lớp được định nghĩa sẳn các phương thức tiện ích. Tất cả các library do CodeIgniter định nghịa được đặt trong thư mục system/libraries. Ngoài ra, các bạn cũng có thể tự định nghĩa một library riêng của riêng mình. Những library do các bạn định nghĩa, có thể được lưu trong thư mục system/libraries nhưng tôi khuyên bạn nên đặt trong thư mục application/libraries.

    Việc sử dụng một library tương tự như sử dụng helper với cú pháp như sau:
    Code:
    $this->load->library('Tên_library');
    Ví dụ, CodeIgniter đã định nghĩa sẳn library upload, bây giờ các bạn muốn sử dụng library upload trong phương thức index của controller blog, các bạn sẽ có đoạn code như sau:
    PHP Code:
    public function index()
    {
        
    $this->load->library('upload');

    Tuy nhiên, sử dụng các phương thức của các library này đòi hỏi bạn phải tìm hiểu về library đó. Tài liệu về các libary đã được CodeIgniter trình bày khá rõ ràng, các bạn có thể tham khảo tại địa chỉ http://www.codeigniter.com/user_guid...ies/index.html. Về chi tiết cách sử dụng các library tôi sẽ hướng dẫn ở những phần sau.

    Các bạn cũng có thể load một lúc nhiều library (Giống như helper) với cú pháp như sau:
    Code:
    $this->load->library(array('Tên_library_1', 'Tên_library_2', 'Tên_library_n'));
    Ví dụ, tôi muốn load hai library upload và cart thì tôi sẽ có cú pháp như sau:
    PHP Code:
    $this->load->library(array('upload''cart')); 
    Các bạn cũng có thể tạo các library để thực hiện một việc gì đó với quy tắc sau:

    - Tên file phải trùng với tên của lớp (Kể cả chữ hoa và chữ thường hoặc dấu phân cách...). Ví dụ tôi muốn tạo library payment thì tôi sẽ tạo một file có tên là Payment.php và lưu vào thư mục application/libraries. File Payment.php sẽ chứa lớp có tên là Payment.
    - Tên của library là duy nhất (Không trùng với các library khác). Trường hợp bạn override các library có sẳn của CodeIgniter thì bạn cần thêm tiền tố (Prefix) MY_ trước tên file và tên lớp library. Tiền tố MY_ được khai báo trong file application/config/config.php tại dòng lệnh:
    PHP Code:
    $config***91;'subclass_prefix'***93; = 'MY_'
    Các bạn có thể khai báo tiền tố này theo ý của các bạn.

    Để sử dụng các phương thức trong library đã được load, các bạn sử dụng theo cú pháp sau:
    Code:
    $this->Tên_library->Tên_phương_thức();
    Lưu ý, "Tên_library" phải được viết hoàn toàn bằng chữ thường.

    Ví dụ tôi gọi phương thức do_upload của library upload như sau:
    PHP Code:
    $this->upload->do_upload(); 
    Các bạn tìm hiểu thêm về libraries tại địa chỉ http://www.codeigniter.com/user_guid...libraries.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  3. #13
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    URI ROUTING (PHẦN 9)

    Thông thường thì CodeIgniter tạo ra một mối quan hệ 1 - 1 giữa URL với controller và phương thức theo kiểu class/method. Cách phân đoạn của CodeIgniter có thể biểu diễn bởi ví dụ sau:

    http://localhost/class/method/id

    Với ví dụ trên thì chúng ta đang gọi tới controller tên là class với phương thức được gọi là method và biến id của method.

    Đấy là cách gọi mặc định của CodeIgniter. Các bạn cũng đã biết, CodeIgniter cung cấp nhiều tiện ích giúp cho chúng ta có thể tự do tùy biến ứng dụng của mình và trường hợp này CodeIgniter cũng cung cấp một chức năng đó là routing (Định tuyến) giúp cho chúng ta có thể tùy biến URL một cách dễ dàng mà không nhất thiết phải theo khuông mẫu như ví dụ trên.

    Ví dụ, nếu các bạn có controller blog và phương thức là index thì URL mà các bạn truy cập sẽ phải là:

    http://localhost/blog/index

    Nhưng bây giờ tôi muốn đổi URL trên thành:

    http://localhost/ca-nhan/danh-sach

    Với URL mới này tôi cũng truy cập vào controller blog và gọi phương thức index thì sao? Tất nhiên, các bạn có thể làm điều đó với routing. Với ví dụ trên thì các bạn sẽ có routing như sau:
    PHP Code:
    $route***91;'ca-nhan/danh-sach'***93; = 'blog/index'
    Để thiết kế routing này, CodeIgniter đã cung cấp một file application/config/routes.php. Bạn chỉ việc mở file này lên và thêm vào mẫu routing trên.

    Nội dung file routes.php mặc định bạn chỉ cần quan tâm tới hai dòng lệnh sau:
    PHP Code:
    $route***91;'default_controller'***93; = 'welcome';
    $route***91;'404_override'***93; = ''
    Dòng lệnh $route['default_controller'] = 'welcome'; là dòng lệnh định nghĩa controller mặc định khi truy cập website. Ở đây, mặc định là controller welcome sẽ được gọi với phương thức là index (Nếu là phương thức index được gọi thì các bạn có thể không cần thiết khai báo).

    Dòng lệnh $route['404_override'] = ''; là dòng lệnh gọi tới trang lỗi 404. Nếu để rỗng thì CodeIgniter sẽ gọi tới trang 404 mặc định.

    Như vậy, với ví dụ trên thì file application/config/routes.php sẽ có nội dung như sau:
    PHP Code:
    $route***91;'default_controller'***93; = 'welcome';
    $route***91;'404_override'***93; = '';
    $route***91;'ca-nhan/danh-sach'***93; = 'blog/index'
    Như vậy, với controller blog và file routes.php trên thì các bạn có thể truy cập controller blog bằng một trong hai cách sau:

    http://localhost/blog/index

    Hoặc

    http://localhost/ca-nhan/danh-sach

    Routing của CodeIgniter cho phép bạn sử dụng các regular expressions của PHP. Ngoài ra, CodeIgniter cũng cung cấp hai regular expressions mặc định đó là:

    :num Chỉ chấp nhận số.
    :any Chấp nhận tất cả các ký tự ngoại trừ dấu gạch chéo "/".

    Các bạn tìm hiểu thêm về URI routing tại địa chỉ http://www.codeigniter.com/user_guid...l/routing.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  4. #14
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    DATABASE (PHẦN 10)

    CodeIgniter cung cấp rất nhiều phương thức hỗ trợ lập trình viên tương tác với DB nhanh chóng. Việc sử dụng các phương thức tương tác với DB cũng được chia làm hai nhóm chính:

    - Nhóm thực thi câu SQL thuần.
    - Nhóm sử dụng query builder.

    Tôi sẽ trình bày theo cách truy vấn SQL thuần trước để các bạn dễ nắm bắt vấn đề.

    Để thực thi một câu lệnh SQL các bạn thực hiện như sau:
    Code:
    $this->db->query('Nội_dung_SQL');
    CodeIgniter cung cấp sẳn cho các bạn việc khai báo các bảng dữ liệu có prefix (Tiền tố) và khi sử dụng các bạn có thể dễ dàng thay đổi prefix của bảng dữ liệu mà không cần thiết phải chỉnh sửa lại code của mình.

    Nếu các bạn có sử dụng prefix cho bảng dữ liệu, các bạn sẽ phải dùng câu lệnh sau để lấy tên bảng theo prefix đó như sau:
    Code:
    $this->db->dbprefix('Tên_bảng_dữ_liệu');
    Ví dụ các bạn có bảng dữ liệu tên là tbl_blog (Với prefix là tbl_) thì khi sử dụng các bạn chỉ việc gọi như sau:
    PHP Code:
    $this->db->dbprefix('blog'); 
    Cậu lệnh trên sẽ tự động hiểu ngầm là các bạn đang dùng tới bản tbl_blog.

    Nhược điểm của việc thực thi SQL theo kiểu này đó là khả năng bị tấn công SQL injection nên các bạn cần phải sử dụng thêm các phương thức sau để lọc dữ liệu đầu vào như sau:

    1. $this->db->escape():

    Phương thức này sẽ lọc các ký tự có thể gây ra lỗi SQL như dấu ` ' " ...

    Khi sử dụng phương thức này thì sẽ tự động chèn dấu nháy đơn ở 2 đầu của chuổi nên bạn không cần phải làm điều này.

    Ví dụ:
    PHP Code:
    $sql "INSERT INTO tbl_blog (title) VALUES(" $this->db->escape($title) . ")"
    2. $this->db->escape_str():

    Phương thức này tương tự như phương thức $this->db->escape() chỉ khác là phương thức này sẽ không tự động thêm dấu nháy đơn '.

    Ví dụ:
    PHP Code:
    $sql "INSERT INTO tbl_blog (title) VALUES('" $this->db->escape_str($title) . "')"
    Các bạn để ý thật kỹ hai ví dụ trên các bạn sẽ thấy được sự khác biệt về việc sử dụng dấu nháy đơn '.

    3. $this->db->escape_like_str():

    Phương thức này cũng có chức năng tương tự như hai phương thức trên nhưng nó được sử dụng cho trường hợp LIKE.

    Và vấn đề cuối cùng cho cách sử dụng này là sử dụng theo kiểu binding như sau:

    Các bạn xem hai dòng lệnh dưới đây:
    PHP Code:
    $sql "SELECT * FROM tbl_blog WHERE id = ? AND status = ? AND author = ?";

    $this->db->query($sql, array(1'active''filiallion')); 
    Ở đây, tôi không gán trực tiếp id = 1 hay status = active mà sẽ thay giá trị bằng dấu hỏi "?" và sẽ gán nó ở tham số thứ hai của $this->db->query() bằng một mãng giá trị và sắp xếp theo đúng thứ tự. Tức là câu SQL trên sẽ được dịch lại thành:
    Code:
    SELECT * FROM tbl_blog WHERE id = 1 AND status = 'active' AND author = 'filiallion'
    Với cách sử dụng này thì các bạn sẽ không cần phải sử dụng các hàm an toàn ở trên vì CodeIgniter đã xử lý giúp các bạn.

    Ngoài cách sử dụng theo SQL thuần như trên thì CodeIgniter còn cung cấp rất nhiều phương thức giúp việc truy vấn SQL trở nên nhanh chóng và an toàn hơn gọi là query builder. Sau đây tôi sẽ trình bày với các bạn một số phương thức theo kiểu query builder để cập nhật dữ liệu như sau:

    1. Insert:

    CodeIgniter sẽ tự động tạo ra một chuỗi truy vấn để insert dữ liệu vào DB thông qua một mãng dữ liệu đầu vào theo ví dụ:
    PHP Code:
    $data = array(
        
    'title' => 'title' ,
        
    'status' => 'active',
        
    'author' => 'filiallion'
    );

    $this->db->insert('tbl_blog'$data); 
    Khối lệnh trên tương ứng với câu lệnh SQL sau:
    Code:
    INSERT INTO tbl_blog (title, status, author) VALUES ('title', 'active', 'filiallion')
    Dữ liệu insert có thể là một mãng hoặc một đối tượng đều được.

    Nếu các bạn muốn thực hiện insert nhiều dòng dữ liệu cùng lúc, các bạn có thể tìm hiểu thêm phương thức $this->db->insert_batch().

    2. Update:

    Các bạn xét ví dụ sau:
    PHP Code:
    $data = array(
        
    'title' => 'New title' ,
        
    'status' => 'inactive',
        
    'author' => 'Lê Trung Hiếu'
    );

    $this->db->where('id'1);
    $this->db->update('tbl_blog'$data); 
    Khối lệnh trên tương ứng với câu lệnh SQL sau:
    PHP Code:
    UPDATE tbl_blog SET title 'New title'status 'inactive'author 'Lê Trung Hiếu' WHERE id 
    Về điều kiện update, các bạn khai báo trong phương thức $this->db->where().

    Dữ liệu update có thể là một mãng hoặc một đối tượng đều được.

    3. Delete:

    Các bạn xét ví dụ sau:
    PHP Code:
    $this->db->delete('tbl_blog', array('id' => 1)); 
    Câu lệnh trên tương ứng với câu SQL sau:
    Code:
    DELETE FROM tbl_blog WHERE id = 1
    Ngoài cách truyền điều kiện xóa vào tham số thứ hai, các bạn còn có thể thực hiện điều kiện xóa bằng phương thức $this->db->where() như ví dụ sau:
    PHP Code:
    $this->db->where('id'1);
    $this->db->delete('tbl_blog'); 
    Các bạn tìm hiểu thêm về database tại địa chỉ http://www.codeigniter.com/user_guid...ase/index.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  5. #15
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    SESSION (PHẦN 11)

    Về cơ bản, CodeIgniter lưu thông tin session lên cookie của trình duyệt web nhưng đó là cấu hình mặc định của CodeIgniter, CodeIgniter cũng cho phép các bạn lưu session vào DB.

    Session được lưu trong DB sẽ giúp ứng dụng an toàn hơn bởi CodeIgniter chỉ lưu session ID trên cookie và sẽ so sánh ID này giữa cookie và trong DB để đảm bảo hợp lệ cho người dùng.

    Các bạn cần lưu ý rằng, khi sử dụng session của CodeIgniter các bạn phải khai báo chuổi mã hóa trong file application/config/config.php như sau:
    Code:
    $config['encryption_key'] = 'Key_mã_hóa';
    Để sử dụng session các bạn phải load thư viện session bằng câu lệnh:
    PHP Code:
    $this->load->library('session'); 
    Sau khi load thư viện session, các bạn sử dụng session thông qua các phương thức sau:

    1. $this->session->set_userdata():

    Phương thức này để tạo session với cú pháp:
    Code:
    $this->session->set_userdata('Tên_session', 'Giá_trị_session');
    Phương thức này cũng cho phép các bạn tạo cùng lúc nhiều session thông qua một mãng dữ liệu như ví dụ sau:
    PHP Code:
    $data = array(
      
    'username' => 'filiallion',
      
    'email' => 'filiallion@gmail.com',
      
    'logged_in' => TRUE
    ); 
    $this->session->set_userdata($data);

    Với khối lệnh trên, các bạn đã tạo ra ba session là username, email và logged_in với các giá trị tương ứng như trên.

    2. $this->session->userdata():

    Phương thức này dùng để lấy session đã tạo ở phương thức $this->session->set_userdata() với cú pháp:
    Code:
    $this->session->userdata('Tên_session');
    Hoặc
    Code:
    $this->session->Tên_session;
    Ví dụ:
    PHP Code:
    $this->session->userdata('username'); 
    Ngoài ra, các bạn cũng có thể lấy toàn bộ session đã được tạo bằng phương thức $this->session->all_userdata().

    3. $this->session->unset_userdata():

    Phương thức này dùng để xóa session với cú pháp:
    Code:
    $this->session->unset_userdata('Tên_session');
    Ví dụ:
    PHP Code:
    $this->session->unset_userdata('username'); 
    4. $this->session->set_flashdata():

    CodeIgniter cung cấp thêm kiểu session thứ hai đó là flash session, tức là session chỉ tồn tại một lần sau khi tải lại trang và sẽ tự động mất đi mà không cần phải unset.

    Flash session thường được dùng để lưu các câu thông báo thao tác thành công, thất bại chẳng hạn...

    Ví dụ:
    PHP Code:
    $this->session->set_flashdata('item''value'); 
    5. $this->session->flashdata():

    Phương thức này dùng để lấy flash session các bạn đã tạo theo phương thức $this->session->set_flashdata().

    Ví dụ:
    PHP Code:
    $this->session->flashdata('item'); 
    6. $this->session->sess_destroy():

    Phương thức này dùng để hủy toàn bộ session các bạn đã tạo.

    Các phương thức trên sẽ giúp các bạn thao tác dễ dàng và tiện lợi với session trong CodeIgniter. Như tôi đã nói ở trên là session của CodeIgniter mặt định được lưu trong cookie nhưng nếu các bạn muốn an toàn hơn các bạn sẽ phải lưu session vào DB.

    Để lưu session vào DB, các bạn cần tạo một bảng dữ liệu lưu session theo cấu trúc được CodeIgniter cung cấp với khối lệnh SQL sau:
    Code:
    CREATE TABLE IF NOT EXISTS `ci_sessions` (
      `id` varchar(40) NOT NULL,
      `ip_address` varchar(45) NOT NULL,
      `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
      `data` blob NOT NULL,
      PRIMARY KEY (id),
      KEY `ci_sessions_timestamp` (`timestamp`)
    );
    Như vậy, các bạn sẽ tạo một bảng dữ liệu tên là ci_sessions trong DB của các bạn với các trường dữ liệu như trên.

    Bước tiếp theo là cấu hình lại file application/config/config.php để CodeIgniter biết đang sử dụng session lưu trong DB như sau:
    PHP Code:
    $config***91;'sess_driver'***93; = 'database';
    $config***91;'sess_save_path'***93; = 'ci_sessions'
    Các bạn tìm hiểu thêm về session tại địa chỉ http://www.codeigniter.com/user_guid.../sessions.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  6. #16
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    EMAIL CLASS (PHẦN 12)

    Các phần trước tôi đã hướng dẫn các bạn hầu hết các thành phần cần thiết để lập trình một website bằng CodeIgniter. Từ phần này, tôi sẽ hướng dẫn bổ sung một số thư viện thường dùng khi lập trình một website và trong số đó là lớp thư viện email.

    Để sử dụng thư viện email, các bạn cần phải load thư viện email bằng câu lệnh:
    PHP Code:
    $this->load->library('email'); 
    Và khai báo một số thông tin cần thiết như:

    - Người gửi.
    - Người nhận.
    - Tiêu đề.
    - Nội dung.
    - Và một số thông tin mở rộng khác.

    Các bạn xem ví dụ sau:
    PHP Code:
    $this->load->library('email');

    $this->email->from('sender@example.com','Sender Name');
    $this->email->to('recipient@example.com');
    $this->email->subject('Email subject');
    $this->email->message('Email message');

    $this->email->send(); 
    Với khối lệnh trên, các bạn đã gửi đi một email bằng cách đơn giản nhất.

    Tuy nhiên, trên thực tế các bạn gửi như vậy có thể sẽ không thành công và phần lớn email sẽ vào spam. Hiện nay, các lập trình viên thường sử dụng giao thức SMTP để gửi email trong các website và CodeIgniter cũng cung cấp cho các bạn giao thức gửi email bằng SMTP phổ biến này.

    Trước khi khai báo các thông tin để gửi email như ví dụ trên, các bạn cần phải khai báo một số thông tin cấu hình SMTP như sau:
    PHP Code:
    $config***91;'protocol'***93; = 'smtp';
    $config***91;'smtp_host'***93; = 'Tên_server_mail';
    $config***91;'smtp_user'***93; = 'Tài_khoản_SMTP';
    $config***91;'smtp_pass'***93; = 'Mật_khẩu_SMTP';
    $config***91;'smtp_port'***93; = 'Cổng_SMTP';
    $config***91;'smtp_crypto'***93; = 'Kiểu_mã_hóa_SMTP';

    $this->email->initialize($config); 
    Sau khi khai báo các thông tin cấu hình SMTP như trên, các bạn có thể viết các câu lệnh gửi email.

    Ví dụ để gửi email bằng giao thức SMTP như sau:
    PHP Code:
    $this->load->library('email');

    $config***91;'protocol'***93; = 'smtp';
    $config***91;'smtp_host'***93; = 'smtp.gmail.com';
    $config***91;'smtp_user'***93; = 'sender@gmail.com';
    $config***91;'smtp_pass'***93; = '1234567890';
    $config***91;'smtp_port'***93; = '465';
    $config***91;'smtp_crypto'***93; = 'ssl';

    $this->email->initialize($config);

    $this->email->from('sender@gmail.com','Sender Name');
    $this->email->to('recipient@gmail.com');
    $this->email->subject('Email subject');
    $this->email->message('Email message');

    $this->email->send(); 
    Các bạn tìm hiểu thêm về email class tại địa chỉ http://www.codeigniter.com/user_guid...ies/email.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  7. #17
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    FILE UPLOADING CLASS (PHẦN 13)

    Để sử dụng thư viện file uploading, các bạn trước tiên khai báo các thông tin cấu hình upload như sau:
    Code:
    $config['upload_path'] = 'Đường_dẫn_lưu_file_upload';
    $config['allowed_types'] = 'Phần_mở_rộng_được_phép_upload';
    $config['max_size'] = Dung_lượng_file_tối_đa_được_phép_upload;
    Sau đó, các bạn load thư viện file uploading và nạp cấu hình ở trên như sau:
    PHP Code:
    $this->load->library('upload'$config); 
    Thực hiện upload và lấy dữ liệu trả về khi upload thành công hoặc thông báo lỗi nếu thất bại:
    PHP Code:
    if($this->upload->do_upload())
    {
        
    $data $this->upload->data();
    }
    else
    {
        
    $error $this->upload->display_errors();

    Bây giờ, tôi sẽ hướng dẫn các bạn tạo một trang upload hoàn chỉnh với các bước dưới đây:

    1. Tạo controller upload:
    PHP Code:
    <?php
    class Upload extends CI_Controller
    {
        public function 
    index()
        {
            
    $this->load->view('upload');
        }
        
        public function 
    do_upload()
        {
            
    $config***91;'upload_path'***93; = './userfile/';
            
    $config***91;'allowed_types'***93; = 'gif|jpg|png';
            
    $config***91;'max_size'***93; = 1024;
            
            
    $this->load->library('upload'$config);
            
            if(
    $this->upload->do_upload('userfile'))
            {
                
    $data = array('data' => $this->upload->data());
                
                
    $this->load->view('upload'$data);
            }
            else
            {
                
    $data = array('error' => $this->upload->display_errors());
                
                
    $this->load->view('upload'$data);
            }
        }
    }
    2. Tạo view với form HTML để upload:
    PHP Code:
    <?php
    if(isset($data))
    {
        foreach(
    $data as $key=>$value)
        {
            echo 
    '<p>' $key ': ' $value '</p>';
        }
    }
    elseif(isset(
    $error))
    {
        echo 
    $error;
    }
    ?>

    <form name="upload" method="post" enctype="multipart/form-data" action="upload/do_upload">
        <p>
            <input type="file" name="userfile">
        </p>
        <p>
            <input type="submit" value="Upload">
        </p>
    </form>
    3. Tạo thư mục tên là userfile ở thư mục gốc của website (Cùng cấp với file index.php) để chứa file upload.

    Các bạn truy cập địa chỉ http://localhost/upload để kiểm tra.

    Các bạn tìm hiểu thêm về file uploading class tại địa chỉ http://www.codeigniter.com/user_guid...uploading.html.
    Lê Trung Hiếu - Lập Trình Web & Di Động

  8. #18
    Tham gia
    14-09-2012
    Bài viết
    9
    Like
    0
    Thanked 1 Time in 1 Post
    Em thấy khó hiểu quá hihi
    Công Ty Đá Mỹ Nghệ Ninh Bình chuyên đá ốp lát

  9. #19
    Tham gia
    04-12-2004
    Location
    TP.HCM
    Bài viết
    5,139
    Like
    20
    Thanked 862 Times in 541 Posts
    Bạn filiallion ơi, bài bạn viết rất tuyệt, chất lượng cao nhưng có lẽ cần liên hệ với một người khác để bố trí lại tốt hơn. Cuối mỗi bài học thấy bạn có upload file lên để người xem download về, khá ổn.

    Để tốt hơn, mình gợi ý với bạn là nên làm một trang demo, những bài bạn làm xong, đưa code lên đó, chia thành thư mục hoặc bố trí sao đó để có thể click vào xem hình hài, kích thích người học. Chứ hiện tại, người học download code về mới chạy được, thì những người sắp sửa muốn học chưa cảm thấy hấp dẫn để bắt tay. Có demo sẽ tuyệt vời.

    Chúc bạn có thêm những bài viết hay!
    SuperThinLabs.com <- 18+ cùng nhau đập đá

  10. #20
    Tham gia
    22-10-2014
    Bài viết
    100
    Like
    0
    Thanked 12 Times in 11 Posts
    Quote Được gửi bởi superthin View Post
    Bạn filiallion ơi, bài bạn viết rất tuyệt, chất lượng cao nhưng có lẽ cần liên hệ với một người khác để bố trí lại tốt hơn. Cuối mỗi bài học thấy bạn có upload file lên để người xem download về, khá ổn.

    Để tốt hơn, mình gợi ý với bạn là nên làm một trang demo, những bài bạn làm xong, đưa code lên đó, chia thành thư mục hoặc bố trí sao đó để có thể click vào xem hình hài, kích thích người học. Chứ hiện tại, người học download code về mới chạy được, thì những người sắp sửa muốn học chưa cảm thấy hấp dẫn để bắt tay. Có demo sẽ tuyệt vời.

    Chúc bạn có thêm những bài viết hay!
    Cảm ơn bạn đã góp ý!
    Lê Trung Hiếu - Lập Trình Web & Di Động

Trang 2 / 3 FirstFirst 123 LastLast

Tags for this Thread

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •