Giữ cho tôi đăng nhập vào php

Đừ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

  1. Tải rk-keep-me-logged-in.php lên thư mục /wp-content/plugins/
  2. Kích hoạt plugin thông qua menu ‘Plugin’ trong WordPress
  3. Đă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


Login:

Password:


Sign up'; /*simple checking of the data*/ if(isset($_POST['login']) && isset($_POST['pass'])) { /*Connection to database logindb using your login name and password*/ $db=mysql_connect('localhost','loginuser','loginpass') or die(mysql_error()); mysql_select_db('logindb'); /*additional data checking and striping*/ $_POST['login']=mysql_real_escape_string(strip_tags(trim($_POST['login']))); $_POST['pass']=mysql_real_escape_string(strip_tags(trim($_POST['pass']))); $q=mysql_query("SELECT * FROM login WHERE login='{$_POST['login']}' AND pass='{$_POST['pass']}'",$db) or die(mysql_error()); /*If there is a matching row*/ if(mysql_num_rows($q) > 0) { $_SESSION['login'] = $_POST['login']; $login='Welcome back '.$_SESSION['login']; } else { $login= 'Incorrect username or password'; } mysql_close($db); } //you may echo the data anywhere in the file echo $login; ?>

Tôi đã sử dụng một hướng dẫn cho nó. Tôi cần giúp đỡ với hai điều

  1. Vẫn trực tuyến sau khi làm mới

  2. 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

user_id=120

Code language: PHP (php)

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

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)

Và đây là bảng cơ sở dữ liệu lưu trữ các mã thông báo

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: SQL (Structured Query Language) (sql)

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

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)

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

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)

Và mã thông báo sau trong cơ sở dữ liệu

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)

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

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)

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.

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: SQL (Structured Query Language) (sql)
6 và

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: SQL (Structured Query Language) (sql)
7 với định dạng.

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: SQL (Structured Query Language) (sql)
8

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: SQL (Structured Query Language) (sql)
6 dùng để chọn

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: SQL (Structured Query Language) (sql)
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ủa

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: SQL (Structured Query Language) (sql)
6 và

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: SQL (Structured Query Language) (sql)
7

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 );

Code language: PHP (php)

Để 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

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: SQL (Structured Query Language) (sql)
6 từ cookie với

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: SQL (Structured Query Language) (sql)
6 từ cơ sở dữ liệu

SELECT id, selector, hashed_validator, user_id, expiry FROM user_tokens WHERE selector = :selector

Code language: PHP (php)

Nếu truy vấn trả về một hàng, bạn có thể khớp

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: SQL (Structured Query Language) (sql)
7 từ cookie với

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
6 bằng cách sử dụng hàm

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
7

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

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
8

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

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
9 lưu trữ

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: SQL (Structured Query Language) (sql)
6, hàm băm

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: SQL (Structured Query Language) (sql)
7,

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
2 và id người dùng

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 );

Code language: PHP (php)

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

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
3

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
0

Thứ hai, thêm mã để xử lý hộp kiểm nhớ tôi vào tệp

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
4

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
1

Trong

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
4, hãy thêm hộp kiểm ghi nhớ tôi vào lệnh gọi hàm filter()

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
2

Ngoài ra, hãy thêm tham số thứ ba vào hàm login()

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
3

Chúng tôi sẽ quay lại để cải thiện chức năng

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
6 sau

Định nghĩa hàm xử lý tính năng ghi nhớ

Đầu tiên, tạo tệp

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
7 trong thư mục

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
8

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

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
7

Tạo mã thông báo

Phần sau định nghĩa

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)
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ực

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
4

Hàm

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)
0 trả về một mảng gồm ba phần tử.

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: SQL (Structured Query Language) (sql)
6,

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)
3 và

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: SQL (Structured Query Language) (sql)
8

Phân tích cú pháp mã thông báo

Hàm

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)
5 sau đây chia mã thông báo được lưu trữ trong cookie thành

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: SQL (Structured Query Language) (sql)
6 và

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: SQL (Structured Query Language) (sql)
7

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
5

Chèn mã thông báo người dùng mới

Hàm

6f9a1ef3020bb8351456cd65176e1e62ceeefcdca0a750201886a230f8736cad

Code language: PHP (php)
8 sau đây thêm một hàng mới vào bảng

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
9

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
6

Tìm mã thông báo bằng bộ chọn

Hàm

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
0 sau đây tìm một hàng trong bảng

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
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ại

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
7

Xóa mã thông báo người dùng

Hàm

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
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ùng

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
8

Tìm người dùng bằng mã thông báo

Hàm

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
3 sau đây trả về

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
8 và

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
5 bằng một mã thông báo

remember_me=6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
9

Kiểm tra xem mã thông báo có hợp lệ không

Hàm

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
6 sau đây phân tích mã thông báo được lưu trữ trong cookie (

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: SQL (Structured Query Language) (sql)
8) và trả về

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
8 nếu mã thông báo hợp lệ và chưa hết hạn

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);

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: SQL (Structured Query Language) (sql)
0

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

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
9

Hàm đăng nhập()

Phần sau thêm tham số thứ ba

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 );

Code language: PHP (php)
0 vào hàm

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91

Code language: PHP (php)
6

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: SQL (Structured Query Language) (sql)
1

Nếu

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 );

Code language: PHP (php)
0 là

6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91 6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d92

Code language: PHP (php)
8, hãy gọi hàm

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 );

Code language: PHP (php)
4

Hàm log_user_in()

Hàm log_user_in() đăng nhập người dùng

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: SQL (Structured Query Language) (sql)
2

Hàm memory_me()

Phần sau định nghĩa hàm

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 );

Code language: PHP (php)
4

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: SQL (Structured Query Language) (sql)
3

Hàm

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 );

Code language: PHP (php)
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ày

Hàm

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 );

Code language: PHP (php)
4 thực hiện như sau

  • Đầu tiên, tạo

    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: SQL (Structured Query Language) (sql)
    6,

    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: SQL (Structured Query Language) (sql)
    7 và mã thông báo (

    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: SQL (Structured Query Language) (sql)
    8)
  • Thứ hai, chèn một hàng mới vào bảng

    SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

    Code language: PHP (php)
    9
  • 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

SELECT user_id FROM user_tokens WHERE token = '6179f9c66a9d007e689c7809b5d8320a6692787773488f12a4330cd5ffd25d91' and expiry > NOW()

Code language: PHP (php)
9 và xóa cookie

SELECT id, selector, hashed_validator, user_id, expiry FROM user_tokens WHERE selector = :selector

Code language: PHP (php)
3

Làm cách nào để giữ cho tôi đăng nhập bằng PHP?

Do đó, người dùng có thể đăng nhập mà không cần phải nhập lại Tên người dùng và Mật khẩu cho đến khi cookie đó hết hạn. Mã ví dụ được đưa ra dưới đây là cách hộp kiểm nhớ mật khẩu hoạt động thông qua PHP. $name = mysqli_real_escape_string( $connect , $_POST [ "user_name" ]);

Làm thế nào để nhớ đăng nhập PHP?

Tạo cookie để duy trì trạng thái đăng nhập . Vì đây là lỗ hổng bảo mật để lưu trữ mật khẩu đơn giản trong cookie, nên các số ngẫu nhiên được tạo làm khóa xác thực.