Ini merupakan file percobaan untuk mengimplementasi Fungsi password_hash() dan password_verify() pada PHP.
Ini cocok bagi anda yang ingin mengimplementasi nya, dengan cukup mudah. Dan, ini juga cocok bagi anda yang ingin mempelajarinya.
Program ini masih menggunakan Alur Struktural (bukan PDO/PHP Data Object), karena pemula akan bingung jika saya membuatnya dengan menggunakan PDO. Sehingga, di harapkan program ini dapat di pahami oleh Pemula/Orang yang baru terjun ke PHP.
Jika ada kesempatan, maka saya akan membuat versi PDO nya.
Fitur-fitur pada Program yang bisa anda pelajari sebagai berikut:
- Selain bisa login, dan mempunyai halaman Dasbor, Program ini bisa melakukan Daftar Akun.
- Bisa di jalankan/kompatibel pada PHP versi 5.3.7, atau di atasnya. Ini terjadi berkat Perpustakaan (Library) PHP
password_compatyang di buat oleh Usernameircmaxell, sehingga fungsipassword_hash(),password_verify()dan fungsipassword_*lainnya bisa berjalan pada PHP versi lama, yang semula kedua fungsi tersebut hanya dapat di jalankan pada PHP (minimalnya) versi 5.5.0 atau di atasnya. - Algoritma yang bisa anda pilih dan atur opsi nya sesuka anda (dengan opsi yang ada, serta resiko yang anda tanggung sendiri). (Berlaku untuk pengguna PHP 7.2.0 atau di atasnya)
- Penggunaan Algoritma pada saat Daftar akan menyesuaikan dengan versi PHP yang anda gunakan. Misal, jika menggunakan versi PHP di bawah 7.2.0, maka secara otomatis "Algoritma Kata Sandi" akan hilang, namun di gantikan dengan textbox "BCrypt Cost", dan secara otomatis akan menggunakan
Bcryptuntuk Algoritma Kata Sandi nya, hal ini dilakukan agar meminimalisir kesalahan (Error). Dan, ini juga berkat fungsiversion_compare()dari PHP. - Untuk pengguna PHP versi 7.2.0 ke bawah, maka secara otomatis anda akan menggunakan Algoritma
BcryptdaripadaArgon2(dan varian nya).
Fitur-fitur yang rencananya ingin di implementasikan pada program ini:
- Implementasi Algoritma
Argon2idpada PHP (Berlaku hanya untuk PHP 7.3.0 dan diatasnya). - Hak Akses Pengguna.
- Tabel CRUD untuk melihat, mengedit dan menghapus data pengguna berdasarkan hak akses yang dimiliki saat sesi.
- Menghalangi PHP versi yang di bawah dari 5.3.7 untuk menjalankan program ini, dari sisi Belakang (Back-end).
Saya memang membuat program ini. Tapi, saya tidak akan bertanggungjawab atas kerusakan atau apapun yang terjadi karena ulah anda sendiri saat menggunakan program ini, baik pada Komputer anda sendiri maupun orang lain.
Saya membuat program ini dengan menggunakan Fungsi yang ada pada PHP, saya tidak menggunakan Fungsi PHP yang di dapat dari luar/pihak ke-3, kecuali untuk Library password_compat yang di buat oleh ircmaxell agar Program ini bisa berjalan pada PHP 5.3.7 atau di atasnya.
Dengan begitu, harusnya tidak ada Malware yang merusak di dalam software ini, hanya pengaruhnya ke Kinerja yang melambat (Karena menghasilkan Hash membutuhkan sumber daya). Jadi, mohon gunakanlah dengan bijak dan tanggung sendiri resiko nya !
Dan, saya peringatkan sekali lagi, bahwa program ini tidak cocok untuk di Implementasikan ke dalam lingkungan PRODUKSI, melainkan hanya MENGUJI nya saja. Karena, program ini di desain untuk melakukan pengujian dan pembelajaran, bukan ke tahap PRODUKSI.
Meski demikian, anda dapat mempelajari fungsi-fungsi ini, lalu di implementasikan ke dalam program anda/program yang berbeda daripada ini, ke dalam lingkungan Produksi.
Oh, ya, ngomong-ngomong, saya belum pernah menggunakan PHP 5.3.7 atau yang di bawah dari 5.6, jadi saya tidak menjamin bahwa program ini akan berjalan dengan lancar pada PHP 5.6 kebawah. Tapi, setidaknya saya telah mencobanya di PHP 5.6 yang dapat berjalan dengan lancar.
Sebelum menggunakan Software ini, alangkah baik nya untuk memenuhi persyaratan berikut:
- Sebuah Komputer dan Sistem Operasi (Bisa gunakan Windows, Distribusi GNU/Linux atau macOS X)
- Sudah terinstall Web Browser. (Minimal: Web Browser Bawaan)
- Spesifikasi Komputer yang sanggup menjalankan Web Browser sekarang. (Sisakan Memori pada RAM setidaknya minimal sebesar 128 MB atau di atasnya dan sedikit penggunaan CPU untuk proses Hashing)
- Sudah terinstall Webserver Apache2/Nginx, PHP Server, dan MySQL/MariaDB Server. (Contoh: XAMPP pada Windows, LAMP pada GNU/Linux, dll)
- phpMyAdmin untuk mengelola Database, atau bisa anda gunakan perangkat lunak lainnya untuk mengelola Database SQL, seperti Adminer, dll.
- Minimal versi PHP nya adalah 5.3.7 atau saya sarankan agar gunakan versi 5.6 atau di atasnya.
Jika syarat sudah terpenuhi, maka anda telah siap untuk menggunakan program ini dengan mendownloadnya terlebih dahulu.
Saat ini, saya menggunakan Lisensi ISC untuk Repo ini. Silahkan baca dari sini.
Jika anda ingin mendownloadnya, anda bisa langsung klik Clone or Download, lalu klik Button Download ZIP.
Atau, jika anda lebih menyukai nya dengan menggunakan Terminal Emulator, mungkin bisa Anda Clone seluruh Repo ini dengan perintah berikut:
$ git clone https://github.com/FarrelF/php-login-test.gitCara menggunakannya mudah sekali, tapi sebelum itu, anda harus menginstallnya terlebih dahulu:
Buatlah sebuah basis data SQL (disarankan menggunakan MySQL/MariaDB sebagai Perangkat Lunak RDBMS). Lalu, sesuaikan informasi mengenai Login dan Host MySQL/MariaDB beserta Basis data yang di buat dengan file koneksi.php yang berada di config/koneksi.php.
Untuk mengisi basis data tersebut, kamu dapat mengimpor file login_test.sql dengan phpMyAdmin. Sebelum itu, pastikan anda memilih Basis data yang baru anda buat tersebut di dalam phpMyAdmin.
Pastikan bahwa semua file "PHP Login Test" ini sudah tersalin ke dalam direktori kerja anda dengan baik.
Misalnya, kalau anda menggunakan XAMPP pada Windows, anda dapat menyalin folder php-login-test-master ke dalam Folder C:\xampp\htdocs.
Atau, kalau kamu menggunakan LAMP di sistem GNU/Linux (Terutama jika kamu menggunakan Ubuntu, Linux Mint dan Turunannya), kamu dapat menyalin folder tersebut ke dalam /var/www/html.
Jika anda mau, anda bisa merename folder php-login-test-master menjadi php-login-test atau apapun yang anda inginkan, asalkan jangan lupa konsep penempatan web nya.
Sebelum membuka Program nya, pastikan Webserver (Seperti Apache atau nginx) atau Server Basis data (seperti MySQL atau MariaDB) di aktifkan.
Jika anda menggunakan XAMPP, buka terlebih dahulu XAMPP Control Panel, lalu klik pada Button Start di bagian Apache dan MySQL.
Setelah itu, buka Web Browser anda, dan ketikkan URL dengan localhost/php-login-test-master jika folder nya masih bernama php-login-test-master. Akan berbeda URL nya jika nama Foldernya lain.
Voila! Dengan begini, anda bisa menggunakan program ini.
Anda bisa bebas mencoba-coba Program ini, tapi pertama-tama yang harus anda lakukan ialah "Daftar Akun".
Anda bisa melakukan nya dengan membuka Program nya, lalu klik pada Button Daftar Akun, setelah itu, isikan semua yang ada disitu, yakni Nama, Nama Pengguna (Username), Kata Sandi, dan Algoritma Kata Sandi beserta Opsi nya.
Perlu yang anda ingat, bahwa program ini menyesuaikan dengan versi PHP yang anda gunakan.
Jika anda menggunakan PHP versi 7.2.0 atau di atasnya, maka akan muncul pilihan Algoritma Kata Sandi beserta opsinya, sedangkan jika tidak, maka hanya muncul Bcrypt Cost saja, dan secara otomatis akan menggunakan Algoritma Bcrypt.
Setelah anda daftar, anda bisa login dengan menggunakan akun anda. Setelah itu, Voila! muncul selamat datang dengan di sertai nama anda.
Selamat Mencoba ^_^
Anda dapat mengedit nya dengan menggunakan Perangkat Lunak Perubah Teks (Text Editor) atau IDE seperti Atom, Notepad++, Sublime Text (berbayar), Visual Studio Code (Source: Open-source, binary: freeware), Netbeans IDE, Komodo Edit, dll.
Bahkan, anda bisa mengeditnya dengan Notepad jika mau. Tapi, saya sarankan agar anda mengeditnya dengan perubah teks yang memiliki fitur "Syntax Highlighter" dan "Auto-complete" agar mempermudah anda untuk merubah/membuat sebuah Program.
Dari semua Perangkat Lunak yang saya sebut, Sublime Text memang paling populer di gunakan oleh Web Programmer, hanya saja sayang sekali jika Software ini termasuk Proprietary Software, berbayar pula.
Daripada kita melanggar Aturan "Lisensi" dengan 'menggandakannya', maka lebih baik kita menggunakan versi Gratis nya, atau lebih baik jika Software nya bukan 'Freeware' atau hanya Gratis semata, melainkan menggunakan perangkat lunak FLOSS (Free/Libre Open Source Software).
Salah satu nya adalah yang saya sebutkan di atas (Kecuali Visual Studio Code, yang binary nya Freeware), namun Perangkat Lunak Alternatif terbaik dari Sublime Text (menurut saya) yang bisa anda gunakan, adalah Atom.
Jika Anda ingin lebih memilih untuk memakai Visual Studio Code, namun Anda ingin Software tersebut bebas, Anda yang begitu menginginkan FLOSS. Atau, Anda yang ingin terbebas dari Telemetry/"Campur Tangan" Microsoft.
Maka, bisa Anda gunakan VSCodium yang merupakan Fork dari VSCode. Tidak ada perbedaan sama sekali, baik versi yang di gunakan nya sampai fitur-fitur nya. Hanya saja, binary yang ada disitu, tidak ada "campur tangan" dan Lisensi dari Microsoft yang perlu Anda setujui. Semua nya memang murni FLOSS, tidak ada tipuan !
Sebenarnya, Anda dapat melihat secara langsung kode program nya disini, namun anda tidak bisa mengeditnya, karena hanya pemilik Repolah yang bisa (kecuali jika anda ingin mengirimkan Pull Request).
Selamat Belajar ^_^