2011-12-23 40 views
6

Tôi có một trang web CakePHP với hệ thống đăng nhập riêng của mình bằng cách sử dụng thành phần Auth. Tôi muốn biết nếu những điều sau đây có thể:Truy cập phiên cakephp (auth) từ bên ngoài cakephp

Một người dùng đã đăng nhập và đang điều hướng trang web. Tại một thời điểm, anh ta có thể nhấp vào liên kết mở tệp php bên ngoài. Với bên ngoài, tôi có nghĩa là nó có thể nằm trong một thư mục khác của cùng một máy chủ, nhưng bên ngoài thư mục ứng dụng CakePHP.

Điều "khó" (đối với tôi) là chỉ hiển thị nội dung của tệp php đó nếu người dùng đăng nhập (để ngăn người khác không có tài khoản truy cập các nội dung đó). Tôi không thể sử dụng Auth ở đó vì tôi là "bên ngoài" Bánh ... Tôi không biết nếu có thể sử dụng $ _SESSION, nhưng tôi không biết làm thế nào ...

Điều này thậm chí có thể? Và vâng, php phải nằm ngoài hệ thống thư mục ứng dụng CakePHP.

Bất kỳ ý tưởng nào?

+2

var_dump hoặc print_r là các hàm php rất hữu ích. Sử dụng chúng với $ _SESSION và bạn có thể thấy mọi thứ mà CakePHP làm với nó. Nó thực sự thú vị để xem xét. – Vigrond

+0

Tôi đã có câu hỏi tương tự cách đây một thời gian: http://stackoverflow.com/questions/6988156/accessing-cakephp-session-variable-from-a-php-script – AlexBrand

Trả lời

7

Có, bạn có thể truy cập SIDEION bên ngoài thư mục cakephp. thử phiên này biến

$_SESSION['Auth'] 

nếu nó tồn tại sau đó kiểm tra cho người sử dụng ở đây

$_SESSION['Auth']['User'] 
+0

cảm ơn câu trả lời của bạn! Vì vậy, về cơ bản tôi chỉ cần kiểm tra nếu '$ _SESSION ['Auth'] ['User']' tồn tại phải không? Ví dụ, với bánh, tôi thường chỉ làm '$ this-> Session-> check ('Auth.User')' để biết liệu người dùng có đăng nhập ... đó có phải là tương đương không? – Albert

+0

vâng quyền của nó. –

+0

ok tuyệt! Cảm ơn nhiều! – Albert

8

Tôi sẽ thêm bạn cũng cần phải đặt tên phiên tới "CakePHP" sử dụng

session_name('CAKEPHP') 

chỉ trước ứng dụng bên ngoài session_start() nếu không bạn không thể áp dụng giải pháp đề xuất Kashif Khan :)

Chúc mừng,

+0

Cảm ơn! rất nhiều người. Tôi đã tìm kiếm đoạn mã này. –

1

Tính năng này không hoạt động trong Cakephp3. Sau khi gọi

session_name("CAKEPHP"); 
session_start(); 

Phiên ứng dụng sẽ hết hạn.

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