Sử dụng session trong CakePHP
Trong CakePHP bạn có thể sử dụng session ở cả View và Controller thông qua helper Session và component Session. Trước khi sử dụng helper và component Session, bạn phải khai báo thông qua biến $helpers và $components, mặc nhiên các bạn biết khai báo điều này, nếu không các bạn có thể tham khảo lại các bài trước.
Cho dù là dùng helper (trong view – $session->…) hay component (trong controller – $this->Session->…) thì Session của CakePHP cũng có các hàm như sau:
1. write($name, $value)
- Lưu session có giá trị $value vào tên $name
- $name có thể sử dụng dấu chấm (.) để tạo thành mảng session
Ví dụ:
//lưu thông thường $this->Session->write('eyeColor', 'Green'); //lưu thành mảng session Person $this->Session->write('Person.eyeColor', 'Green'); $this->Session->write('Person.handColor', 'Red'); |
2. read($name)
- Lấy giá trị của session thông qua tên
- Ví dụ:
echo $this->Session->read('Person.eyeColor'); //kết quả Green pr($this->Session->read('Person')); //kết quả Array ( [eyeColor] => Green [handColor] => Red ) |
3. check($name)
- Kiểm tra xem có tồn tại session có tên là $name hay không
- Ví dụ:
$this->Session->check('Person') //kết quả true |
4. delete($name)
- Xóa session thông qua tên
- Ví dụ:
//chỉ xóa eyeColor của Person $this->Session->delete('Person.eyeColor'); //xóa toàn bộ Person $this->Session->delete('Person'); |
5. destroy()
- Xóa toàn bộ cookie và session lưu trong file tạm cũng như toàn bộ session của PHP
$this->Session->destroy() |
6. error()
- Xác định lỗi cuối cùng lên quan tới session
Ghi chú: cách lưu trữ session, thời gian lưu trữ session, các bạn xem thêm trong bài Giải thích một số cấu hình trong file core.php
14 Comments to “Sử dụng session trong CakePHP”
Post comment
Bài viết mới
- CakePHP version 1.3.12
- Tạo chuỗi ngẫu nhiên với 1 dòng code
- Kỹ thuật “bit field” trong phân quyền
- Làm việc với File và Folder
- CakePHP 1.3.8
- CakePHP 1.3.7 Released
- Ajax trong CakePHP
- Tạo và load file config trong CakePHP
- Làm site đa ngôn ngữ với CakePHP (Phần 1)
- CakePHP 1.3.6 and 1.2.9 released
- CakePHP 1.3.5 released
- Type hinting trong PHP
- CakePHP ra phiên bản mới 1.3.4
- Tích hợp Zend framework vào CakePHP
- Tạo virtual host trên local
- Sử dụng Acl trong cakephp – Phần 2
- Sử dụng Acl trong cakephp – Phần 1
- Sinh code tự động với cake console
- Tự động xóa record ở bảng con khi reocord ở bảng cha bị xóa
- Xác thực người dùng với component Auth
Thảo luận mới
- admin on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- hanh on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng Acl trong cakephp – Phần 1
- admin on Sử dụng session trong CakePHP
- Bich Yen on Sử dụng session trong CakePHP
TAG
Calendar
Lưu trữ
- September 2011 (3)
- July 2011 (1)
- March 2011 (1)
- February 2011 (1)
- November 2010 (4)
- October 2010 (1)
- September 2010 (2)
- August 2010 (9)
- July 2010 (9)
- June 2010 (22)
Blogroll
- Bakery
- Biển đảo Việt Nam
- CakePHP
- CakePHP Google Group
- CakePHP Manual
- CakePHP Questions
- Diễn đàn CakePHP VN

admin

Em mới tìm hiêu về cakephp gần đây, cho em hỏi giữa SESSION và COOKIE nên sử dụng cái nào tốt hơn ?
Bạn cần phải phân biệt 1 điểm cơ bản là:
SESSION: Lưu trữ trên server
COOKIE: Lưu trữ trên client, tùy theo từng trình duyệt
Dữ liệu lưu trữ dạng cookie có thể bị đọc bởi user 1 cách dễ dàng
ban ơi cho mình hỏi. minh bị lỗi ở Fatal error: Call to a member function flash() on a non-object in D:\PhanMemLapTrinh\xampp\htdocs\prevoir\cake\libs\view\layouts\default.ctp on line 43. Đọc trên mạng thì mọi người nói là khi dùng cake 1.3 thì không tự động có session mà phải khai báo ở trang app_controller, mình cũng đã khai báo các var $components = array(‘Session’,'Auth’);
var $helpers = array(‘Html’, ‘Form’,'Javascript’,'Ajax’,'Common’); mình đã khai báo trong lớp VnpostController. rồi, nhưng vẫn báo lỗi, và cả ở trang trong của nó nữa vẫn ko được. bạn xem mình bị lỗi gì với. Hi vọng sớm được hồi âm
cái chỗ dòng 43 là Session->flash(); ?>. còn cái VnpostController là lớp mình chạy index. cái này do lỗi trong lib của cake gây ra, mình mới làm quen nên chưa biết sửa thế nào.
Trong controller thì có hàm $this->Session->flash(). Còn ngoài view (.ctp) thì không nhớ có hàm flash không nữa. Nếu có thì dùng $session->flash(). Lỗi của bạn là không có function flash()!
Cho mình hỏi. Mình có 2 Controller , trong Controller thứ 1 mình lưu giá trị vào biến Session, bây giờ qua Controller thứ 2, mình muốn lấy lại giá trị đã lưu vào biến Session đó, và lưu nó vào Database thì phải làm thế nào…Mong được giúp đỡ!!
Giả sử ở controller 1 bạn lưu session:
$this->Session->write(‘key_1′, 123);
thì sang controller 2 bạn dùng hàm read để lấy:
$this->Session->read(‘key_1′);
Cảm ơn bạn đã giúp đỡ, nhưng mình đã làm như vậy nhưng vẫn không được
mình đã thử nhiều lần như cách bạn nói nhưng khi sang controller thu 2 giá trị của session =null. Và khi mình cho session vào views/element thi khi gọi element đó trong controller khác giá trị của session vẫn không lấy được. Mong bạn giúp mình lần nữa.
Ngay trong 1 function của 1 controller, nếu bạn lưu session sau đó lấy session lên thì có giá trị không bạn?
Bạn đang config trong core.php là dùng kiểu lưu session nào: php, cake, database (nếu dùng database thì phải có table cake_session)
Bạn đang dùng cakephp version nào?
Ngay trong 1 function của 1 controller, mình vẫn lấy được giá trị của biến Session, nhưng qua Controller khác giá trị của nó bằng NULL. Mình lưu biến Sesison kiểu php, mong bạn giúp đỡ!
Bạn thử tăng thời gian timeout của session trong core.php lên cao hơn nữa xem sao
Đồng thời, thử dùm mình:
- Chuyển lưu trữ session sang dạng cake, nếu vẫn không được thử chuyển sang dạng database (lưu ý phải import file .sql tạo table cake_session
Chào Admin!
Mình co 2 bảng
Application(id, reccruitings_id,……..)
EduApp(id,Applications_id,…….)
Mình muốn xóa dữ liệu trong bảng EduApp thì đồng thời dữ liệu trong Application cũng được xóa theo mã tương ứng Applications_id thì có thể xóa được không. Mong bạn giúp đỡ, cảm ơn bạn
Bạn xem bài viết này nhé, mình có hướng dẫn rồi
http://cakephpvn.org/index.php/2010/08/13/tu-dong-xoa-record-o-bang-con-khi-record-o-bang-cha-bi-xoa/