Đừng tiếp tục đăng nhập vào bảng quản trị WordPress của bạn nhiều lần. Cài đặt plugin này để duy trì trạng thái đăng nhập vào blog của bạn trong tối đa một năm [trừ khi bạn đăng xuất thủ công]
Cài đặt
- Tải
rk-keep-me-logged-in.php
lên thư mục/wp-content/plugins/
- Kích hoạt plugin thông qua menu ‘Plugin’ trong WordPress
- Đăng xuất và đăng nhập lại để áp dụng thời gian phiên mới
Câu hỏi thường gặp
Tôi có thể tự thay đổi thời gian phiên không?
Trong phiên bản này, không thể thay đổi thời gian phiên thông qua bất kỳ bảng cài đặt nào. Cách duy nhất có thể là chỉnh sửa rk-keep-me-login. php thủ công. Bạn có thể chỉnh sửa số giây bạn muốn phiên của mình kéo dài ở dòng 30
Nhận xét
Không có đánh giá cho plugin này
Cộng tác viên & Nhà phát triển
“WP Keep Me Logged In” là phần mềm mã nguồn mở. Những người sau đây đã đóng góp cho plugin này
Xin chào, tôi hiện đang làm việc trên một trang web lưu trữ hình ảnh. Tôi muốn người dùng có thể đăng nhập để nâng cao một số thứ. Tôi mới viết PHP một chút và tôi đang gặp sự cố
http. // trollin. info/ - nếu bạn cố gắng tạo một tài khoản, bạn sẽ thấy rằng tất cả đều hoạt động nhưng khi bạn đăng nhập và làm mới trang, bạn lại đăng xuất
Đây là mã đăng nhập của tôi trên chỉ mục. php
Tôi đã sử dụng một hướng dẫn cho nó. Tôi cần giúp đỡ với hai điều
Vẫn trực tuyến sau khi làm mới
Một nút đăng xuất
Cảm ơn
Khi người dùng đăng nhập vào một ứng dụng web và sau đó đóng trình duyệt web, cookie phiên được liên kết với thông tin đăng nhập sẽ hết hạn ngay lập tức. Nghĩa là sau này nếu người dùng truy cập ứng dụng web thì cần phải đăng nhập lại
Tính năng ghi nhớ cho phép người dùng lưu thông tin đăng nhập của họ trong một thời gian, ngay cả sau khi đóng trình duyệt web. Để triển khai tính năng ghi nhớ tôi, bạn sẽ sử dụng cookie có thời gian hết hạn trong tương lai
Cách phổ biến nhưng không an toàn
Cách không an toàn để thực hiện ghi nhớ tôi là thêm id người dùng vào cookie với thời gian hết hạn
Code language: PHP [php]
user_id=120
Khi người dùng truy cập ứng dụng web, bạn kiểm tra id người dùng trong cookie có hợp lệ hay không trước khi đăng nhập tự động
Cách tiếp cận ngây thơ này chỉ dựa vào cookie, không an toàn vì những lý do sau
- Đầu tiên, người dùng có thể thay đổi id thành id khác để đăng nhập với tư cách người dùng khác
- Thứ hai, id người dùng có thể tiết lộ số lượng người dùng trong hệ thống
Một cách tiếp cận an toàn hơn
Một cách an toàn hơn để triển khai tính năng ghi nhớ tôi là lưu trữ mã thông báo ngẫu nhiên thay vì id người dùng trong cả cookie và máy chủ cơ sở dữ liệu
Giá trị trong cookie sẽ trông như thế này
Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Và đây là bảng cơ sở dữ liệu lưu trữ các mã thông báo
Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Khi người dùng truy cập ứng dụng web, bạn khớp mã thông báo của cookie với mã thông báo được lưu trữ trong cơ sở dữ liệu. Ngoài ra, bạn có thể kiểm tra thời gian hết hạn của mã thông báo. Nếu mã thông báo khớp và chưa hết hạn, bạn có thể lấy id người dùng được liên kết với mã thông báo và tự động đăng nhập người dùng
Truy vấn khớp mã thông báo sẽ như thế này
Code language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
Cách tiếp cận này giải quyết được hai vấn đề trên
- Đầu tiên, mã thông báo khó đoán hơn
- Thứ hai, mã thông báo không tiết lộ số lượng người dùng
Tuy nhiên, cách tiếp cận này phơi bày một vấn đề bảo mật khác được gọi là tấn công thời gian
Khi cơ sở dữ liệu so sánh mã thông báo của cookie với mã thông báo được lưu trữ trong cơ sở dữ liệu, nó sẽ trả về thời gian so sánh khác nhau tùy theo mức độ giống nhau của hai mã thông báo
Ví dụ: nếu bạn có mã thông báo sau được lưu trữ trong cookie
Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Và mã thông báo sau trong cơ sở dữ liệu
Code language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
Khi so sánh các mã thông báo này, cơ sở dữ liệu sẽ so sánh từng ký tự trong mã thông báo và dừng khớp khi phát hiện thấy không khớp. Trong ví dụ này, cơ sở dữ liệu dừng ở ký tự thứ hai
Tuy nhiên, khi so sánh cặp mã thông báo sau
Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
Cơ sở dữ liệu ngừng khớp sau khi so sánh ký tự cuối cùng thứ hai
Thời gian so sánh trong ví dụ thứ hai sẽ luôn lớn hơn so với ví dụ thứ hai vì cơ sở dữ liệu cần so sánh nhiều ký tự hơn
Bằng cách thử nghiệm các mã thông báo khác nhau, bạn có thể nhận được thời gian phản hồi khác nhau. Nói cách khác, thời gian bị rò rỉ. Để tránh rò rỉ thời gian, hàm so sánh cần trả về thời gian không đổi bất kể mã thông báo
Ngăn chặn các cuộc tấn công thời gian
Sau đây trình bày cách ngăn chặn cuộc tấn công theo thời gian do P đề xuất. I. E. Theo cách tiếp cận này, thay vì lưu trữ một mã thông báo trong cookie, bạn lưu trữ một cặp mã thông báo.
6 vàCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7 với định dạng.Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
8Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
6 dùng để chọnCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7 được lưu trữ trong cơ sở dữ liệu. Trong cơ sở dữ liệu, bạn lưu trữ hàm băm củaCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
6 vàCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Code language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Để băm trình xác thực, bạn sử dụng hàm password_hash[]
Để lấy id người dùng, bạn khớp
6 từ cookie vớiCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
6 từ cơ sở dữ liệuCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Code language: PHP [php]
SELECT id, selector, hashed_validator, user_id, expiry FROM user_tokens WHERE selector = :selector
Nếu truy vấn trả về một hàng, bạn có thể khớp
7 từ cookie vớiCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
6 bằng cách sử dụng hàmCode language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
7Code language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
Nếu trình xác nhận phù hợp, bạn có thể tự động đăng nhập người dùng bằng
8Code language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
Phần sau sẽ cải thiện hệ thống đăng nhập bằng cách thêm tính năng ghi nhớ tôi bằng phương pháp thứ ba
Tạo bảng user_tokens để lưu trữ mã thông báo
Câu lệnh sau đây tạo một bảng
9 lưu trữCode language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
6, hàm bămCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7,Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
2 và id người dùngCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Code language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Thêm hộp kiểm nhớ tôi vào biểu mẫu đăng nhập
Đầu tiên, thêm hộp kiểm nhớ tôi vào biểu mẫu đăng nhập trong tệp
3Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
0Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Thứ hai, thêm mã để xử lý hộp kiểm nhớ tôi vào tệp
4Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
1
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Code language: PHP [php]
Trong
4, hãy thêm hộp kiểm ghi nhớ tôi vào lệnh gọi hàm filter[]Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
2Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Ngoài ra, hãy thêm tham số thứ ba vào hàm login[]
3Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Chúng tôi sẽ quay lại để cải thiện chức năng
6 sauCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Định nghĩa hàm xử lý tính năng ghi nhớ
Đầu tiên, tạo tệp
7 trong thư mụcCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
8Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Thứ hai, xác định các chức năng mới sau đây để xử lý mã thông báo trong tệp
7Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Tạo mã thông báo
Phần sau định nghĩa
0 để tạo cặp mã thông báo ngẫu nhiên được gọi là bộ chọn và trình xác thựcCode language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
4Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Hàm
0 trả về một mảng gồm ba phần tử.Code language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
6,Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
3 vàCode language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
8Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Phân tích cú pháp mã thông báo
Hàm
5 sau đây chia mã thông báo được lưu trữ trong cookie thànhCode language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
6 vàCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
5Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Chèn mã thông báo người dùng mới
Hàm
8 sau đây thêm một hàng mới vào bảngCode language: PHP [php]
6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad
9Code language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
6Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Tìm mã thông báo bằng bộ chọn
Hàm
0 sau đây tìm một hàng trong bảngCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
9 bằng bộ chọn. Nó chỉ trả về bộ chọn khớp nếu mã thông báo chưa hết hạn bằng cách so sánh thời gian hết hạn với thời điểm hiện tạiCode language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
7Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Xóa mã thông báo người dùng
Hàm
2 sau đây xóa tất cả các mã thông báo được liên kết với người dùngCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
8Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Tìm người dùng bằng mã thông báo
Hàm
3 sau đây trả vềCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
8 và
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
Code language: PHP [php]
5 bằng một mã thông báoCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
9Code language: PHP [php]
remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
Kiểm tra xem mã thông báo có hợp lệ không
Hàm
6 sau đây phân tích mã thông báo được lưu trữ trong cookie [Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
8] và trả vềCode language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
8 nếu mã thông báo hợp lệ và chưa hết hạnCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
hàm token_is_valid[chuỗi $token]. bool { // phân tích cú pháp mã thông báo để lấy bộ chọn và trình xác thực [$selector, $validator] = parse_token[$token];
0Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Sửa đổi chức năng trong auth. php
Phần sau đây mô tả các thay đổi đối với các chức năng trong tệp
9Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
Hàm đăng nhập[]
Phần sau thêm tham số thứ ba
0 vào hàmCode language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
6Code language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91
1Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Nếu
0 làCode language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
8, hãy gọi hàmCode language: PHP [php]
6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92
4Code language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Hàm log_user_in[]
Hàm log_user_in[] đăng nhập người dùng
2Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Hàm memory_me[]
Phần sau định nghĩa hàm
4Code language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
3Code language: SQL [Structured Query Language] [sql]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Hàm
4 lưu thông tin đăng nhập cho người dùng trong một số ngày được chỉ định. Theo mặc định, nó nhớ đăng nhập trong 30 ngàyCode language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
Hàm
4 thực hiện như sauCode language: PHP [php]
CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, selector VARCHAR[255] NOT NULL, hashed_validator VARCHAR[255] NOT NULL, user_id INT NOT NULL, expiry DATETIME NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
- Đầu tiên, tạo
6,
Code language: SQL [Structured Query Language] [sql]CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
7 và mã thông báo [
Code language: SQL [Structured Query Language] [sql]CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
8]
Code language: SQL [Structured Query Language] [sql]CREATE TABLE user_tokens [ id INT AUTO_INCREMENT PRIMARY KEY, token VARCHAR[255] NOT NULL, expiry DATETIME NOT NULL, user_id INT NOT NULL, CONSTRAINT fk_user_id FOREIGN KEY [user_id] REFERENCES users [id] ON DELETE CASCADE ];
- Thứ hai, chèn một hàng mới vào bảng
9
Code language: PHP [php]SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
- Thứ ba, đặt cookie với thời gian hết hạn được chỉ định
Hàm đăng xuất []
Nếu người dùng đăng xuất, ngoài việc xóa phiên, bạn cần xóa các bản ghi trong bảng
9 và xóa cookieCode language: PHP [php]
SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW[]
3Code language: PHP [php]
SELECT id, selector, hashed_validator, user_id, expiry FROM user_tokens WHERE selector = :selector