Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Manipulasi Bit dan Pengambilan MySQL di PHP

Pernahkah Anda mempertimbangkan untuk menyimpan izin Anda sebagai bilangan bulat, dengan setiap izin nilai biner (yaitu, 1, 2,4,8,16), dan Anda menambahkan semua izin mereka. Anda kemudian dapat memeriksa apakah mereka memiliki izin yang diberikan menggunakan &operator

Seperti ini:

if ($accessLevel & $userPermissions) 

Itu memberi Anda sistem yang jauh lebih bermanfaat daripada menyimpan angka biner

Seperti yang diminta dalam komentar, sedikit lebih banyak informasi.

Anda akan mengatur tabel pengguna Anda untuk memiliki bidang bilangan bulat untuk menyimpan izin Anda. Setiap tingkat izin Anda akan memiliki kelipatan biner (tidak tahu istilah yang benar di sini) yang sesuai dengan nilai bit biner. Misalnya:

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

Dan seterusnya, sebanyak yang dibutuhkan. Untuk membuat tingkat izin pengguna, Anda ATAU nilainya bersama-sama. Mari kita asumsikan level di atas disimpan di kelas sebagai nilai statis, Anda akan membuatnya seperti ini:

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

Yang memberi Anda pengguna yang dapat membaca dan membuat, tetapi tidak mengedit atau menghapus.

Untuk memeriksa apakah pengguna memiliki izin untuk melakukan suatu tindakan, Anda menggunakan DAN:

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

Ini memberi Anda satu bidang basis data sederhana, yang dapat diperluas seperti yang Anda butuhkan secara realistis, dan pemeriksaan dan perubahan yang mudah digunakan. Anda mungkin juga ingin mempertimbangkan untuk menyimpan tingkat izin di tabel lain, dll, tergantung pada tingkat penyesuaian yang mungkin Anda perlukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendeteksi Karakter Cina di MySQL?

  2. mysqld:Tidak dapat mengubah dir menjadi data. Server tidak dimulai

  3. MySQL menambahkan kolom NOT NULL

  4. Bagaimana cara menghindari tanda kutip (') di MySql?

  5. Rails 3 SQL query pilih dengan joins