Kandunga web kebiasaanya dikhaskan untuk dipaparkan secara umum (public view) tanpa sebarang had. Namun, dalam keadaan tertentu, kita memerlukan menghadkan paparan data dan maklumat pada satu-satu halaman menerusi pengesahan nama pengguna dan kata laluan tertentu.

Sebagai contoh, kita cipta satu fail dan namakan sebagai secure.php. Tempatkan fail tersebut di direktori aplikasi localhost anda.

Fail secure.php di atas menggunakan kod asas HTML dalam menghasilkan paparan tersebut. Kod tersebut adalah seperti ini:

<!DOCTYPE html>
<html>
<head>
  <title>Sample Secure Page</title>
</head>
<body>
  <h1>Hello DrupalNote.</h1>
</body>
</html>

Asas pengesahan paparan

Bagi membolehkan laman ini memohon nama pengguna dan kata laluan, kita perlu memasukan baris kod PHP dengan menggunakan teknik Basic Authorization PHP. Masukkan kod PHP ini di bahagian paling atas fail secure.php.

<?php
header("WWW-Authenticate: Basic realm=\"Sila masukan nama pengguna dan kata laluan\"");
header("HTTP\ 1.0 401 Unauthorized");
?>

Simpan fail tersebut dan buka semula di perisian pelayar.

Sistem pelayar secara automatis akan memaparkan popup alert untuk kemasukan nama pengguna dan kata laluan. Setakat ini kita hanya sekadar memanggil fungsi pengesahan daripada PHP untuk dipaparkan seandainya laman ini dibuka.

Walau bagaimanapun, tindakan pengguna sama ada klik pada butang "Log in" atau "Cancel" tidak memberi apa-apa kesan disebabkan tiada syarat ditetapkan untuk setiap tindakan.

Kandungan asal kandungan juga masih dipaparkan sekiranya butang "Cancel" ditekan.

Tindakan penghalang kandungan laman

Sekiranya pengguna tidak memasukan sebarang input atau memilih butang "Cancel", kita mahu ralat paparan ditunjukkan berbanding kandungan atau maklumat sebenar ditunjukan. Oleh itu, tambahan kod perlu dibuat selepas kod panggilan authenticate.

<?php
header("WWW-Authenticate: Basic realm=\"Sila masukan nama pengguna dan kata laluan\"");
header("HTTP\ 1.0 401 Unauthorized");
print "Pengesahan gagal.";
exit;
?>

Baris ketiga print "Pengesahan gagal."; ditulis untuk memaparkan teks sekiranya pengesahan gagal atau butang "Cancel" dipilih. Anda boleh mengubah atau menggunakan kod HTML sekiranya perlu pada bahagian ini.

Manakala baris exit; mengarahkan sistem pelayar untuk menghentikan bacaan baris selepasnya. Ini untuk memastikan kandungan sebenar kandungan tidak dijana dan dipaparkan sekiranya ralat berlaku.

Menetapkan nama dan kata laluan

Jadi sekarang, bagaimana pula untuk kita sahkan identiti pengguna yang betul? Kita memerlukan dua pemboleh ubah diperiksa iaitu nama dan kata laluan yang dihantar sebelum kandungan dipaparkan kepada pengguna.

Maka dalam kes ini, kita perlu tetapkan kedua-dua pemboleh ubah ini menerusi arahan if().

<?php
if ($_SERVER['PHP_AUTH_USER'] !== 'admin' && $_SERVER['PHP_AUTH_PW'] !== 'password') {
  header("WWW-Authenticate: Basic realm=\"Sila masukan nama pengguna dan kata laluan\"");
  header("HTTP\ 1.0 401 Unauthorized");
  print "Pengesahan gagal.";
  exit;
}
?>

Arahan $_SERVER['PHP_AUTH_USER'] dan $_SERVER['PHP_AUTH_PW'] adalah variables global yang disediakan oleh modul PHP. Sekiranya nama dan kata laluan yang diberikan adalah tidak sah, mesej popup akan kekal dipaparkan sehingga maklumat yang betul dimasukkan. Manakala jika butang "Cancel" diklik, maka ralat pengesahan gagal dipaparkan.

Akses yang betul akan kekal sehingga perisian browser ditutup (exit/close). Seandainya anda cuba untuk refresh perisian pelayar setelah pengesahan yang betul, kandungan laman akan dipaparkan terus tanpa sebarang popup mesej. Ini kerana data pengesahan identiti telah disimpan dan hanya dipadamkan setelah tetingkap perisian ditutup sepenuhnya.

Penilaian: 
No votes yet