Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Memaksa Pengguna untuk Ganti Password Setelah Login Pertama di Aplikasi Web dari PHPMaker
Perbedaan Index Page dan Start Page di Aplikasi Web yang Dihasilkan oleh PHPMaker
Mencegah Pengguna Mengakses URL Master/Detail List di Aplikasi Web dari PHPMaker

Memaksa Pengguna untuk Ganti Password Setelah Login Pertama di Aplikasi Web dari PHPMaker

Sel, 5 Mei 2015 oleh Masino Sinaga 6 Komentar

Aplikasi Web yang dihasilkan oleh PHPMaker memiliki kemampuan untuk memaksa Pengguna mengganti Kata Sandi atau Password jika masa berlakunya sudah habis. Pengertian memaksa di sini adalah, sistem akan mencegah Pengguna membuka menu atau halaman lain setelah berhasil login, sebelum mengganti Password-nya. Jadi, jika Pengguna tetap bandel mengklik menu lainnya setelah login, sistem akan tetap me-redirect Pengguna tersebut ke halaman Change Password.

Pengaturan mengenai hal ini dapat disesuaikan sesuai kebutuhan dengan sangat mudah dari menu Security -> Advanced -> User Login Options -> Password. Pastikan kita sudah mengaktifkan item Enable password expiry dan menentukan lamanya expired dalam satuan hari pada item Password expiry time (days). Pastikan juga kita sudah mengaktifkan item terkait lainnya yang bernama Track failed attempts pada bagian Login di atasnya.

Berdasarkan kemampuan yang sudah disediakan oleh PHPMaker itu, maka kita sebagai Web Developer pun dapat memaksa Pengguna untuk mengganti Password-nya begitu dia pertama kali berhasil login ke Aplikasi Web.

Untuk mendeteksi sudah berapa kali si Pengguna berhasil Login, maka kita perlu sebuah Field penanda di table users (table tempat data Pengguna disimpan untuk memvalidasi proses Login). Katakanlah nama Field itu adalah Jumlah_Login_Sukses. Itu artinya, saat akun Pengguna tersebut terdaftar di sistem (entah itu melalui metode pendaftaran sendiri oleh Pengguna atau metode pendaftaran oleh Admin), maka nilai Field ini mula-mula adalah 0. Setiap kali Pengguna berhasil Login, maka Field ini harus diupdate dengan menambahkan nilai 1 (Satu), demikian seterusnya.

Setelah persiapan di atas kita pastikan sudah oke, maka pertanyaan selanjutnya adalah, bagaimana cara kita untuk membuat sistem memaksa Pengguna mengganti Password-nya setelah berhasil Login pertama kali ke Aplikasi Web yang kita buat dengan PHPMaker tadi? Penasaran, ‘kan? Hehe…

Caranya sangatlah mudah dan cepat. Kita tidak perlu memodifikasi file script yang dihasilkan oleh PHPMaker, kita juga tidak perlu memodifikasi file Template PHPMaker. Cukup hanya dengan menambahkan sedikit kode PHP saja ke dalam server event yang bernama User_LoggedIn yang terdapat di bawah lokasi: Server Events -> Other -> Login Page, sehingga kode selengkapnya kira-kira menjadi seperti ini:

// User Logged In event
function User_LoggedIn($usr) {
	//echo "User Logged In";
	$val = ew_ExecuteScalar("SELECT Jumlah_Login_Sukses FROM ".EW_USER_TABLE." WHERE Username = '".$usr."'");
	if ($val == "0") {
		$_SESSION["Login_Pertama"] = "1";
		$_SESSION[EW_SESSION_STATUS] = "passwordexpired";
	} else {
		ew_Execute("UPDATE " . EW_USER_TABLE . " SET Jumlah_Login_Sukses = Jumlah_Login_Sukses +  1 WHERE Username = '".$usr."'");
	}
}

Dari kode barusan, kita memeriksa terlebih dulu nilai field Jumlah_Login_Sukses di table users melalui konstanta EW_USER_TABLE, berdasarkan data Username Pengguna yang sudah berhasil Login.

Jika nilai yang dikembalikan field tersebut masih nol (0), maka itu artinya si Pengguna baru pertama kali berhasil Login. Segera perbarui nilai variabel session EW_SESSION_STATUS dengan string passwordexpired. Kita juga perlu memberi penanda untuk membedakan bahwa event ini di-trigger oleh kejadian Login Pertama, melalui variabel session yang bernama Login_Pertama (supaya lebih bermakna).

Sedangkan jika nilai yang dikembalikan oleh field Jumlah_Login_Sukses tidak sama dengan nol, maka itu artinya si Pengguna sudah pernah berhasil Login ke Aplikasi Web. Kita tidak perlu lagi memaksa Pengguna mengganti Password-nya. Dalam hal ini, maka kita cukup memperbarui nilai Field Jumlah_Login_Sukses dengan menambahkan nilai satu.

Di sinilah keuntungan yang dapat kita optimalkan dari fitur Password Expired di Aplikasi Web yang dihasilkan oleh PHPMaker. Karena nilai variabel session yang terkait dengan kejadian Password Expired (EW_SESSION_STATUS) tadi kita perbarui, maka sistem akan menampilkan halaman/form Change Password, dan sistem akan memaksa Pengguna untuk mengganti Password-nya. Jika Pengguna masih bandel juga dengan mencoba-coba mengakses menu lain, maka sistem akan tetap me-redirect Pengguna ke halaman Change Password tadi.

Sampai di sini kita sudah berhasil membuat supaya sistem memaksa Pengguna mengganti Password-nya saat berhasil Login pertama kali. Eit, jangan puas dulu! Mengapa? Karena masih ada kode terkait yang harus kita tambahkan di server event lain. Fungsinya untuk membersihkan nilai variabel session EW_SESSION_STATUS yang akan di-trigger oleh kejadian saat Pengguna berhasil mengganti Password-nya.

Oleh karena itu, pastikan kita juga sudah menambahkan kode PHP ke dalam server event User_ChangePassword yang terdapat di bawah lokasi Server Events -> Other -> Change Password Page, sehingga kode selengkapnya menjadi seperti ini:

// User ChangePassword event
function User_ChangePassword(&$rs, $usr, $oldpwd, &$newpwd) {
	// Return FALSE to abort
	if ($_SESSION["Login_Pertama"] == "1") {
		ew_Execute("UPDATE " . EW_USER_TABLE . " SET Jumlah_Login_Sukses = Jumlah_Login_Sukses +  1 WHERE Username = '".$usr."'");
		$_SESSION[EW_SESSION_STATUS] = "login";
	}
	return TRUE;
}

Arti dari kode ini, kita memastikan pada saat Pengguna berhasil mengganti Password-nya, maka sistem memeriksa jika nilai variabel session Login_Pertama bernilai 1 (yang dihasilkan dari server event User_LoggedIn), maka perbarui field Jumlah_Login_Sukses dengan menambahkan nilai satu. Terakhir, jangan lupa untuk memutahirkan nilai variabel session EW_SESSION_STATUS menjadi login yang artinya ketika dia berhasil mengganti Password, maka dia akan melihat menu sama seperti jika berhasil login.

Jika hal ini tidak ditangani pada server event User_ChangePassword tadi, maka kita akan terjebak dengan kondisi sistem yang akan terus menampilkan halaman/form Change Password. Tentu kita tidak menginginkan hal tersebut terjadi.

Bagaimana? Betapa mudah dan cepatnya bukan? PHPMaker, gitu lho! 😀

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, kata sandi, password, PHPMaker Indonesia, Security Settings, Server Events, Tutorial PHPMaker, User_ChangePassword, User_LoggedIn

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com, ilovephpmaker.com, dan phpmakerprojects.com.

Perbedaan Index Page dan Start Page di Aplikasi Web yang Dihasilkan oleh PHPMaker
Mencegah Pengguna Mengakses URL Master/Detail List di Aplikasi Web dari PHPMaker

Komentar

  1. esen mengatakan

    Kam, 21 Juni 2018 pada 11:07 am

    selamat pagi Bang Masino .
    Saya sudah mencoba hal diatas, sesuai petunjuk ,tp belum berhasil.
    yang terjadi: halaman login menolak , selalu redireck ke halaman login walaupun username dan password sudah benar

    Php maker yang saya gunakan v2017.0.7,

    apa kah di versi ini $_SESSION[EW_SESSION_STATUS] sudah diganti nama variable nya (hanya dugaan saja saja).
    atau adahal lain yang belum saya pahami. terimkash , mohon petunjuk.

    Balas
    • Masino Sinaga mengatakan

      Kam, 21 Juni 2018 pada 11:44 am

      Tidak ada perubahan nama variable $_SESSION[EW_SESSION_STATUS] sejak versi 2017 sampai dengan versi 2018. Jadi, masih sama.

      Balas
      • esen mengatakan

        Kam, 21 Juni 2018 pada 1:32 pm

        Kalau begitu , Kira kira solusinya apa ya Bang Masino
        Kode diatas sudah saya praktekan semua (Hasilnya masih belum bisa berhasil menampilkan halaman ganti password),

        saya mencoba hilangkan baris kode ini :
        $_SESSION[EW_SESSION_STATUS] = “passwordexpired”; saya bisa login,

        apabila kode tsb di tambahkan , yang terjadi gagal login lalu redireck ke login page terus

        mohon pencerahan dan bimbingan untuk solusinya Bang Masino, Terimkash

        Balas
        • Masino Sinaga mengatakan

          Sel, 26 Juni 2018 pada 9:19 am

          Seharusnya tidak ada masalah, karena saya sudah mencobanya dan berhasil. Cek ulang lagi semua persyaratan di atas.

          Balas
          • esen mengatakan

            Sel, 26 Juni 2018 pada 1:34 pm

            Puji Tuhan, akhir nya ketemu permasalahannya Bang,
            salah satu nilai array yang dihasilkan Profile Field (pada user login option)
            yaitu LastPasswordChangedDate selalu menghasilnya nilai tanggal ketika user tsb register .
            langkah yang saya lakukan :
            – menunggu password expiry time nya habis,
            atau
            – merubah nilai LastPasswordChangedDate lewat database

            apabila langkah diatas saya lakukan , maka user bisa login , dan ketika pertama login harus ubah passwd dulu.

            tapi saya kurang puas , karena user harus menunggu sampai exp habis, atau merubah nilai di db langsung. Ada saran kah bang untuk mengatasi hal tsb?

            yang kedua
            Bisakah apabila pertama kali login selain ganti passwod , user harus mengisi data lain pula di laiin table ,

            misalnya setelah selesai ganti password, user harus dipaksa kembali untuk melengkapi data identitas diri secara lengkap.

            apa yg harus sya lakukan kepada variable $_SESSION[EW_SESSION_STATUS] , atau mungkin ada cara lain Bang ? terimkash

            Balas
            • Masino Sinaga mengatakan

              Sel, 26 Juni 2018 pada 2:40 pm


              tapi saya kurang puas , karena user harus menunggu sampai exp habis, atau merubah nilai di db langsung. Ada saran kah bang untuk mengatasi hal tsb?

              Ada, Anda bisa mengaktifkan 4 pilihan dari Advanced Security -> User Login Options -> User Table List Page Options, lalu generate ulang semua file script. Setelah itu, dari aplikasi web, masuk ke menu Users List, lalu pilih menu Set password expired.


              misalnya setelah selesai ganti password, user harus dipaksa kembali untuk melengkapi data identitas diri secara lengkap.

              Tinggal redirect aja user ke halaman User Profile-nya.

              Balas

Tinggalkan Balasan Batalkan balasan

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

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Pos-pos Terbaru

  • ReadOnly vs Disabled, Sebaiknya Pilih yang Mana?
  • Mudahnya Menghilangkan Search Operator pada Extended dan Advanced Search di PHPMaker 2024
  • Masino Extensions untuk PHPMaker 2024 Sudah Dirilis, Silahkan Download!
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Review PHPMaker 2024

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Auto Fill yang Fleksibel di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021
  • achmad pada Auto Fill yang Fleksibel di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021
  • Masino Sinaga pada Menyisipkan Kode Saat Baris Record Ditampilkan di Aplikasi Web dari PHPMaker
  • Shandy pada Menyisipkan Kode Saat Baris Record Ditampilkan di Aplikasi Web dari PHPMaker
  • Masino Sinaga pada Menyisipkan Kode Saat Baris Record Ditampilkan di Aplikasi Web dari PHPMaker

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2023 | WordPress | Catat masuk | Kembali ke atas