Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thao tác bit và truy xuất MySQL trong PHP

Bạn đã xem xét việc lưu trữ các quyền của mình dưới dạng số nguyên chưa, với mỗi quyền là một giá trị nhị phân (tức là 1,2,4,8,16) và bạn cộng tất cả các quyền của chúng lại với nhau. Sau đó, bạn có thể kiểm tra xem họ có được cấp phép hay không bằng cách sử dụng toán tử &

Như vậy:

if ($accessLevel & $userPermissions) 

Điều đó mang lại cho bạn một hệ thống hữu dụng hơn nhiều so với việc lưu trữ một số nhị phân

Như được yêu cầu trong phần bình luận, hãy thêm một chút thông tin.

Bạn sẽ thiết lập bảng người dùng của mình để có một trường số nguyên để lưu trữ các quyền của bạn. Mỗi cấp độ quyền của bạn sẽ có một bội số nhị phân (không biết thuật ngữ chính xác ở đây) tương ứng với giá trị của một bit nhị phân. Ví dụ:

Read - 1
Edit - 2
Create - 4
Delete - 8

Và như vậy, bao nhiêu theo yêu cầu. Để tạo cấp quyền người dùng, bạn HOẶC các giá trị cùng nhau. Giả sử các cấp trên được lưu trữ trong một lớp dưới dạng giá trị tĩnh, bạn sẽ tạo nó như vậy:

$newUser->Permissions = Permissions::Read | Permissions::Create;

Điều này cung cấp cho bạn một người dùng có thể đọc và tạo, nhưng không thể chỉnh sửa hoặc xóa.

Để kiểm tra xem người dùng có quyền thực hiện một hành động hay không, bạn sử dụng AND:

if ($newUser->Permissions & Permissions::Read) {
    echo 'You can do this!';
}  else {
    echo 'You can't this!';
}

Điều này cung cấp cho bạn một trường cơ sở dữ liệu đơn giản, có thể mở rộng tùy theo nhu cầu thực tế của bạn, đồng thời dễ sử dụng các kiểm tra và thay đổi. Bạn cũng có thể muốn xem xét việc lưu trữ các mức quyền trong một bảng khác, v.v., tùy thuộc vào mức độ tùy chỉnh mà bạn có thể cần.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chú thích Công thức Hibernate - Các hàm MySql:INTERVAL, DAY

  2. Sự cố với GROUP BY CASE

  3. PlanetScale &Vitess:Tính toàn vẹn tham chiếu với cơ sở dữ liệu được chia nhỏ kế thừa

  4. Sử dụng Tính năng Oracle JDeveloper Nâng cao cho Cơ sở dữ liệu MySQL

  5. chèn tốc độ trong mysql vs cassandra