Sistem Login Register Part10 – Membuat Hash Token User Pada Register

Febri Hidayan Komentar

Sistem Login Register Part10 – Membuat Hash Token User Pada Register

Sebelumnya kita sudah membahas tentang password_hash() sekarang telah tiba waktunya untuk membuat hash token user, dimana masing masing user memiliki token yang berbeda dan juga sebagai remember me pada user kita diwaktu login. Untuk itu silakan simak penjelasannya dibawah ini.

Membuah Hash Token User Pada Register

Pada suatu website pasti memiliki token tersendiri yang telah mereka terapkan secara pasti dalam pembuatannya. Dimana biasanya saya menggunakan token untuk masalah remember me atau juga hak akses artikel, misalnya website kita memiliki 10 artikel dan memiliki 2 user masing masing mempublics 5 artikel. Jadi sebagai pengingat data kita perlu menyimpan token pada web browser kita baik menggunakan SESSION atau COOKIE. Akan tetapi saya sarankan untuk menggunakan COOKIE dimana ia akan terhapus dengan waktu yang telah ditentukan oleh developernya sendiri setelah kita tidak membuka website tersebut.

Baca juga: Sistem Login Register Part9 – Membuat Password Hash Pada Register

Pemberitahuan: sebelum melanjutkan tutorial yang satu ini, diharapkan untuk mengikuti tutorial sebelumnya pada link diatas. Bukan hanya itu ikuti paling awal tutorial Sistem Login Register ini.

Langka 1 (function php)

Ada beberapa cara untuk membuat hash token tersebut pertama dari function php sendiri dan kedua kita buat sendiri. Pada kesempatan kali ini kita akan membuat cara kita sendiri, mungkin caranya cukup panjang. Sebelumnya kita akan mengenal juga dengan penggunaan function php yaitu base64_encode() dan openssl_random_pseudo_bytes(). Cara penggunaannya cukup mudah yaitu dengan cara menulis base64_encode(openssl_random_pseudo_bytes(10); maka yang dihasilkan menjadi UpDtB7roVET3Ow== hal ini terjadi karena kita memasukan nilainya berupa bytes sebanyak 10 bytes. Jadi apa pun yang kita masukan parameter pada openssl_random_pseudo_bytes() itu berupa bytes. Sebenarnya hasil dari function php tersebut menghasilkan Dn1����n maka yang dihasilkan pun tidak beraturan maka kita menggunakan function php base64_encode().

  • Base64_encode() dimana data yang kita berikan akan dikembalikan sebagai string.
  • Openssl_random_pseudo_bytes() pada nilai bytes kita masukan maka akan dikembalikan sebagai string byte.

Khusu langka ini kita bisa langsung membuat function sendiri lalu gunakan pada token register seperti langka 1 mandiri.

Langka 1 (mandiri)

Selanjutanya kita akan mengenal token yang kita buat sendiri seperti kode dibawah ini dan lihat penjelasannya lewat komentar yang telah ada di atas kode functions sebelumnya.

Kode Function Token()
/*
 * $value untuk menentukan banyak karakter random
 * $keyspace kumpulan angka dan hutuf untuk menentukan karakter random
 * $str untuk menghubungkan antara baris string
 * mb_strlen() function mengecek jumlah length pada string
 * random_int() melakukan pemberikan angka pada karakter random
**/
function token($value)
{
  $keyspace = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $str = '';
  $max = mb_strlen($keyspace, '8bit') - 1;
  for ($i = 0; $i < $value; ++$i) {
    $str .= $keyspace[random_int(0, $max)];
  }
  return $str;
}

Langkah 2

Simpan kode diatas pada folder vendor > functions > file validation.php kemudian tambah baris pemanggilan file tersebut pada file _autoload.php seperti dibawah ini.

Kode Baris _autoload.php
// memanggil file validation.php di folder Functions
require_once 'Functions/validation.php';

selanjutnya kita buka file register.php kemudian ubah array sebelumnya seperti dibawah ini.

Kode $array File Register.php
$array = [
          'nama' => $_POST['nama'],
          'username' => $_POST['username'],
          'password' => password_hash($_POST['password'], PASSWORD_DEFAULT),
          'role' => 2,
          'token' => token(32) // jadikan seperti ini
        ];

Maksud dari token(32) maka akan menghasilkan karakter random sebanyak 32 kali, selanjutnya coba test kembali untuk meregisternya. Maka yang dihasilkan pada isi database kita seperti dibawah ini.

Pada hasil token diatas kemungkinan besar peluang hasil token yang sama cukuplah kecil sekali, jadi jangan kawatir untuk terjadi token yang sama pada user lainnya. Pada khasus yang pernah saya alami, saya menggunakan token sebanyak 64 karakter. Kalau jumlah user member kita lebih dari puluhan juta target yang kita inginkan, maka kita bisa membuat validasi untuk pada tokennya biar tidak terjadi tabrakan token. Kalau penggunaan password_hash ada yang sama kita tidak perlu untuk membuat validasinya, karena yang kita lakukan sebagai pengingat member ialah tokennya bukan password yang dihasilkan. Mungkin itu saja yang bisa saya sampaikan lebih dan kurang saya mohon maaf dan sampai juma ke tutorial selanjutnya.

Baca juga: Sistem Login Register Part11 – Mencegah Username Kembar Pada Register

Category PHPTags Sistem Login Register


Mari Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *