Saat pengguna merancang dan memelihara situs, sering kali mereka perlu membatasi akses ke file atau informasi penting tertentu. Biasanya, kita dapat menggunakan mekanisme otentikasi pengguna berdasarkan protokol HTTP yang dibangun di server WEB. Ketika pengunjung menelusuri halaman yang dilindungi, browser klien akan memunculkan jendela dialog yang meminta pengguna memasukkan nama pengguna dan kata sandi untuk memverifikasi identitas pengguna guna menentukan apakah pengguna berhak mengakses halaman tersebut. Dua metode digunakan untuk menggambarkan prinsip implementasinya.
1. Gunakan header HTTP untuk mengimplementasikan
header. Header adalah string yang dikirim oleh server sebelum mengirimkan informasi HTML ke browser menggunakan protokol HTTP. HTTP menggunakan model tantangan/respons untuk mengautentikasi pengguna yang mencoba memasuki area yang dilindungi kata sandi. Khususnya, ketika pengguna membuat permintaan ke server WEB untuk mengakses kawasan lindung untuk pertama kalinya, proses tantangan dimulai, dan server mengembalikan header 401 khusus, yang menunjukkan bahwa identitas pengguna belum diverifikasi. Setelah mendeteksi respons di atas, browser klien secara otomatis memunculkan kotak dialog yang meminta pengguna memasukkan nama pengguna dan kata sandi. Setelah pengguna menyelesaikan input dan mengklik OK, informasi identifikasinya dikirim ke server untuk verifikasi. Jika nama pengguna dan kata sandi yang dimasukkan pengguna valid, server WEB akan mengizinkan pengguna memasuki kawasan lindung dan menjaga validitas identitasnya selama proses akses. Sebaliknya, jika nama pengguna atau kata sandi yang dimasukkan oleh pengguna tidak dapat diverifikasi, browser klien akan terus memunculkan jendela masukan yang meminta pengguna untuk mencoba memasukkan kembali informasi yang benar. Seluruh proses akan berlanjut hingga pengguna memasukkan lokasi informasi yang benar. Anda juga dapat mengatur jumlah upaya maksimum yang boleh dilakukan pengguna. Jika terlampaui, permintaan akses pengguna akan ditolak secara otomatis.
Dalam skrip PHP, gunakan fungsi header() untuk langsung mengirim header HTTP ke browser klien, sehingga jendela input nama pengguna dan kata sandi akan otomatis muncul di klien untuk mengimplementasikan fungsi otentikasi identitas kami. Dalam PHP, informasi yang dimasukkan oleh pengguna klien secara otomatis disimpan dalam tiga variabel global $PHP_AUTH_USER, $PHP_AUTH_PW, dan $PHP_AUTH_TYPE setelah dikirimkan ke server. Dengan menggunakan ketiga variabel ini, kita dapat memverifikasi identitas pengguna berdasarkan informasi akun pengguna yang disimpan dalam file data atau database!
Namun, pengguna perlu diingatkan bahwa $PHP_AUTH_USER dan $PHP_AUTH_PW hanya dapat digunakan di PHP yang diinstal sebagai modul. dan tiga variabel $PHP_AUTH_TYPE. Jika pengguna menggunakan PHP dalam mode CGI, fungsi verifikasi tidak dapat diterapkan. Metode instalasi modul PHP terlampir di akhir bagian ini.
Di bawah ini kami menggunakan database Mysql untuk menyimpan identitas pengguna. Kita perlu mengekstrak nama pengguna dan kata sandi setiap akun dari database untuk dibandingkan dengan variabel $PHP_AUTH_USER dan $PHP_AUTH_PW untuk menentukan keaslian pengguna.
Pertama, buat database di MySql untuk menyimpan informasi pengguna.
Nama databasenya adalah XinXiKudan
nama tabelnya adalah pengguna;
ID INT(4) BUKAN NULL AUTO_INCREMENT,
nama VARCHAR(8) BUKAN NULL,
kata sandi CHAR(8) BUKAN NULL,
KUNCI UTAMA (ID)
)
Keterangan:
1. ID adalah nomor seri, yang tidak nol dan bertambah secara otomatis. Ini adalah kunci utama;
2. nama adalah nama pengguna dan tidak boleh kosong
;
berikut ini adalah file login verifikasi pengguna.php
//Tentukan apakah nama pengguna sudah disetel
if(!isset($PHP_AUTH_USER)) {
header("WWW-Otentikasi:Basic realm="Fungsi otentikasi"");
header("HTTP/1.0 401 Tidak Sah");
echo "Otentikasi gagal, Anda tidak mempunyai izin untuk berbagi sumber daya jaringan!";
KELUAR();
}
/*Hubungkan ke basis data*/
$db=mysql_connect("localhost","root","");
//Pilih basis data
mysql_select_db("XinXiKu",$db);
//Periksa apakah pengguna tersebut ada
$result=mysql_query("PILIH * DARI pengguna dengan nama='$PHP_AUTH_USER' dan kata sandi='$PHP_AUTH_PW'",$db);
if ($baris saya = mysql_fetch_row($hasil)) {
//Berikut ini adalah operasi terkait setelah otentikasi berhasil
...
} kalau tidak {
//Otentikasi tidak berhasil, minta pengguna untuk masuk kembali
header("WWW-Otentikasi:Basic realm="Fungsi otentikasi"");
header("HTTP/1.0 401 Tidak Sah");
echo "Otentikasi gagal, Anda tidak mempunyai izin untuk berbagi sumber daya jaringan!";
KELUAR();
}
?>
Deskripsi program:
Pada program, periksa terlebih dahulu apakah variabel $PHP_AUTH_USER telah disetel. Jika tidak disetel, berarti otentikasi diperlukan. Skrip mengirimkan header nomor kesalahan HTTP 401 untuk memberi tahu browser klien bahwa otentikasi diperlukan kata sandi.Setelah input selesai, koneksi Database, periksa apakah nama pengguna dan kata sandi sudah benar. Jika benar, izinkan login untuk melakukan operasi terkait.
Deskripsi fungsi:
1. isset(): digunakan untuk menentukan apakah suatu variabel telah diberi nilai. Bergantung pada apakah nilai variabel ada, kembalikan benar atau salah
2. header(): digunakan untuk mengirim header HTTP tertentu. Perhatikan bahwa saat menggunakan fungsi header(), pastikan untuk memanggilnya sebelum kode HTML atau PHP apa pun yang menghasilkan keluaran sebenarnya.
3. mysql_connect(): Buka koneksi server MySQL.
4. mysql_db_query() : Mengirim string kueri (query) ke database MySQL.
5. mysql_fetch_row(): Mengembalikan setiap bidang dalam satu kolom.
2. Gunakan sesi untuk menerapkan verifikasi server.
Untuk halaman yang memerlukan otentikasi, yang terbaik adalah menggunakan verifikasi server Apache. Namun, antarmuka verifikasi server Apache kurang ramah. Selain itu, PHP dalam mode CGI dan PHP dalam IIS tidak dapat diverifikasi menggunakan server Apache. Dengan cara ini, kita dapat menggunakan sesi tersebut untuk menyimpan identitas pengguna di antara halaman yang berbeda untuk mencapai verifikasi identitas.
Di backend, kami juga menggunakan database Mysql di atas untuk menyimpan informasi pengguna.
Pertama kita tulis antarmuka login pengguna, nama file login.php, kodenya adalah:
____________________________________________________________
<form action="login1.php">
Nama pengguna:<input type="text" name="name"><br>
Kata sandi :<input type="text" name="pass"><br>
<input type="submit" value="Login">
</form>
____________________________________________________________
login1.php memproses form yang dikirimkan, kodenya sebagai berikut:
$ db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
$result=mysql_query("PILIH * DARI pengguna dengan nama='$nama' dan kata sandi='$pass'",$db);
if ($baris saya = mysql_fetch_row($hasil)) {
//Daftarkan pengguna
sesi_mulai();
session_register("pengguna");
$pengguna=$baris saya["pengguna"];
// Verifikasi identitas berhasil, lakukan operasi terkait
...
} kalau tidak {
echo "Otentikasi gagal, Anda tidak mempunyai izin untuk berbagi sumber daya jaringan!";
}
?>
Perlu diperhatikan di sini bahwa pengguna dapat menggunakan **http://domainname/next.php?user=username** dalam operasi selanjutnya untuk melewati autentikasi. Oleh karena itu, operasi selanjutnya harus terlebih dahulu memeriksa apakah variabel tersebut terdaftar: jika sudah terdaftar, lakukan operasi yang sesuai, jika tidak maka akan dianggap sebagai login ilegal. Kode yang relevan adalah sebagai berikut:
sesi_mulai();
if (!session_is_registered("pengguna")){
echo "Otentikasi gagal, login ilegal!";
} kalau tidak {
//Berhasil masuk untuk melakukan operasi terkait
...
}
?>
Lampiran: Cara install PHP pada mode modul
1. Download terlebih dahulu file: mod_php4-4.0.1-pl2. [Jika milik Anda bukan PHP4, tingkatkan sesegera mungkin!]
Setelah di-unzip, ada tiga file: mod_php4.dll, mod_php4.conf, readme.txt
2. Salin file terkait. Salin
mod_php4.dll ke direktori modul direktori instalasi apache.
Copy mod_php4.conf ke direktori conf dari direktori instalasi apache.
Copy file msvcrt.dll ke direktori instalasi apache.
3. Buka file conf/srm.conf dan tambahkan kalimat
Include conf/mod_php4.conf
untuk melakukan ini.Sebelumnya
, harap hapus semua pernyataan pengaturan tentang mode CGI di httpd.conf Anda, yaitu bagian yang mirip dengan berikut!
Aplikasi AddType/x-httpd-php4 .php
Aplikasi AddType/x-httpd-php4 .php3
Aplikasi AddType/x-httpd-php4 .php4
Action application/x-httpd-php4 /php4/php.exe
Jika Anda ingin membuat dukungan PHP lebih banyak sufiks, tidak masalah. File konfigurasi mod_php4.conf yang diberikan sudah mendukung tiga sufiks: php, php3, dan php4. Jika Anda ingin mendukung lebih banyak sufiks, Anda dapat mengubah file ini.
4.
Gunakan <?phpinfo(); Anda akan melihat bahwa nilai Server API adalah apache, bukan cgi, dan ada juga informasi tentang Informasi Header HTTP.