2012-02-11 34 views
8

Tôi có thể đặt chức năng "toàn cầu" của tôi ở đâu, sẽ kiểm tra, nếu người dùng đăng nhập?Chức năng toàn cầu CodeIgniter

Vì tôi muốn thực hiện một số việc như: người dùng chỉ có thể duyệt một số trang khi hàm isLogged() trả về TRUE và tôi phải sử dụng nó trong một số chế độ xem, đó là lý do tại sao chức năng "toàn cầu" mà tôi có thể truy cập từ mọi nơi.

Điều đó có khả thi không? Hoặc có bất kỳ giải pháp tốt hơn cho việc này?

Trả lời

10

Bạn có thể đặt nó vào Thư viện và tự động tải thư viện. Khi bạn cần sử dụng cờ "logged_in" trong một khung nhìn, hãy chuyển nó từ bộ điều khiển. Ví dụ:


application/libraries/Auth.php

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 

class Auth 
{ 

    public function is_logged_in() 
    { 
     // Change this to your actual "am I logged in?" logic 
     return $_SESSION['logged_in']; 
    } 

} 

application/config/autoload.php

... 
$autoload['libraries'] = array(
    ... 
    'auth', 
    ... 
} 

'application/controllers/welcome.php

<?php ... 

public function index() 
{ 
    $view_data = array 
    (
     'logged_in' => $this->Auth->logged_in() 
    ); 
    $this->load->view('my_view', $view_data); 
} 

application/views/my_view.php

<? echo $logged_in ? 'Welcome back!' : 'Go login!' ?> 
+0

nên 'Auth' là chữ thường trong '$ this-> Auth-> logged_in()'? – dangel

+0

+1

@SvenB Với hầu hết các khung công tác "cũ" (CI, Kohana 2.x, vv), thư mục web root chứa tất cả các tệp ứng dụng (bộ điều khiển, v.v.), vì vậy về mặt kỹ thuật, chỉ cần truy cập vào '/ application/libraries/Auth .php' và chỉ tải tệp đó. Hằng số 'BASEPATH' được định nghĩa trong tệp' index.php', vì vậy trừ khi yêu cầu của bạn đi qua tệp đó (ví dụ như yêu cầu trang web bình thường), dòng đó sẽ dừng bạn truy cập vào tệp. Xem thêm: http://en.wikipedia.org/wiki/Defence_in_depth – Joe

5

Bạn đang sử dụng một thư viện xác thực? Nếu tôi không đề nghị một. Chúng có các chức năng như thế.

Xe tăng Auth ví dụ: is_logged_in(), thực hiện chính xác những gì bạn muốn!

http://www.konyukhov.com/soft/tank_auth/

Đối với thông tin thêm về những thư viện để sử dụng bạn nên kiểm tra câu trả lời này mà so sánh tất cả các libs: https://stackoverflow.com/a/476902/576223

Nếu bạn không muốn một thư viện xác thực bạn có thể làm theo đề nghị của Joe

+0

Tôi vừa đề xuất ** Tank Auth **, hầu hết mọi người đều cố gắng phát minh lại bánh xe bằng các khung công tác, khi đã có các thư viện tuyệt vời xung quanh. – Jakub

+0

Những gì tôi đề xuất ** là ** thư viện xác thực, chỉ là một thư viện rất gọn gàng để cho anh ta biết cách hoạt động và cách kiểm soát luồng ứng dụng: P – Joe

+0

Tôi biết, tôi vừa viết câu trả lời của tôi đã đưa ra để tôi chỉnh sửa nó. :) – bottleboot

0

bạn có thể sử dụng MY_controller với tất cả chức năng cần thiết trên mọi trang của trang web của bạn. và kế thừa tất cả các bộ điều khiển từ nó. read this oficial wiki

Các vấn đề liên quan