Membuat pengecekan tanggal masa aktif dengan php
Kasus pengecekan tanggal masa aktif sering kita temui pada beberapa aplikasi web dengan php seperti masa pendaftaran siswa baru, masa registrasi ulang, masa aktif berlangganan, masa aktif keanggotaaan, masa berlaku kartu dll. Berikut ini saya akan berbagi tentang bagaimana membuat pengecekan tanggal masa aktif pada kasus waktu pendaftaran online dengan php.
Saya tidak akan bahas tentang bagai mana membuat pendaftaran onlinenya, tapi hanya untuk melakukan pengecekan masa/tanggal diperbolehkan mendaftarnya.
Sedikit ilustrasi kasusnya :
Misal anda ingin membuat sistem pendaftaran online. Aturan mainya adalah : user hanya diperbolehkan mengisi formulir pada tanggal tertentu misal dari tanggal 15 Mei 2013 s/d 20 Mei 2013. Jika user coba mengakses halaman pendaftaran sebelum tanggal tersebut maka kita munculkan pesan pendaftaran belum dibuka, dan jika diakses setelah tanggal itu maka muncul pesan pendaftaran sudah ditutup. Mudahan sudah bisa difahami kasusnya.
Dari segi logika, untuk melakukan pengecekan seperti saya jelaskan diatas, kita hanya membandingkan tanggal sekarang dengan tanggal dibuka dan ditutup pendaftaran. Misal sekarang tanggal 10 Mei 2013, jika dibandingkan dengan tanggal pendaftaran yaitu 15 Mei 2013 maka tanggal sekarang lebih kecil/kurang dari awal pendaftaran.
Jadi input untuk proses yang kita buat terdiri dari 3 variabel yaitu : tanggal_sekarang, tanggal_mulai, dan tanggal_akhir. Untuk input tanggal sekarang bisa kita ambilkan dari tanggal sistem, sedangkan tanggal mulai dan akhir bisa kita simpan dalam database atau dibuat pengaturan secara global pada script php. Untuk kasus ini tanggal awal dan akhir saya deklarasikan dalam script php.
Implementasi dalam script php bisa kita lihat berikut :
<?php $start_date = strtotime('2013-05-15 00:00:00'); $end_date = strtotime(2013-05-20 00:00:00); $todays_date = strtotime(date("Y-m-d H:m:s")); if ($todays_date >= $start_date && $todays_date <= $end_date) { //Pendaftaran dibuka //Anda bisa masukkan proses yang dilakukan jika pendaftaran dibuka } else { if($todays_date < $start_date) { //Pendaftaran Belum dibuka //Anda bisa masukkan pesan atau proses jika belum dibuka } else { //Pendaftaran sudah ditutup //Anda bisa masukkan pesan atau proses jika sudah ditutup } } ?>
Dari script diatas, mungkin anda bisa melihat saya mengubah format tanggal sekarang, tanggal mulai dan tanggal berakhir ke versi timestamp dengan fungsi strtotime. Ini tujuanya mempermudah dan meningkatkan akurasi perbandingan tanggal dan jam. Dari hasil konversi nilai tersebut maka langsung dibandingkan antara jam sekarang, jam mulai dan jam akhirnya dengan operator logika <= dan >=
Dari contoh script diatas kita bisa kembangkan menjadi sebuah fungsi sederhana yang lebih mudah diakses kapanpun dalam bagian program. Penyederhanaanya bisa dilakukan seperti ini :
<?php function CekPendaftaran($todays_date,$start_date,$end_date) { $start_date = strtotime($start_date); $end_date = strtotime($end_date); $todays_date = strtotime($todays_date); if ($todays_date >= $start_date && $todays_date <= $end_date) { return 0;//BUKA } else { if($todays_date < $start_date) { return 1; //BELUM } else { return 2; //LEWAT } } } //Cara memanggilnya $DATE_NOW=date("Y-m-d H:m:s"); $START_DATE='2013-05-15 00:00:00'; $END_DATE='2013-05-20 13:00:00'; $CekStatus=CekPendaftaran($DATE_NOW,$START_DATE,$END_DATE); //Sekarang $CekStatus memiliki nilai array yang terdiri dari 3 (0 atau 1 atau 2) if($CekStatus==1) //1 BELUM BUKA { echo "Belum Buka"; //Tuliskan pesan jika belum dibuka } elseif($CekStatus==2) //2 SUDAH TUTUP { echo "Sudah Tutup"; //Tuliskan pesan jika sudah ditutup } elseif($CekStatus==0) //0 SEDANG BUKA { echo "Sedang Buka"; //Munculkan form jika sedang dibuka } ?>
Jika anda ingin mencobanya, silahkan copy script diatas kedalam sebuah file misal cektanggal.php, kemudian sesuaikan tanggal mulai dan tanggal selesainya agar hasilnya bisa terlihat.
Semoga bermanfaat dan selamat mencoba
Zainal Hakim
** Bebas disunting dengan menyebutkan sumber **