Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Cara Menerapkan Verifikasi Email untuk Anggota Baru

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Pernahkah Anda membuat akun dengan situs web, dan diminta untuk memeriksa email Anda dan mengklik melalui tautan verifikasi yang dikirim oleh perusahaan untuk mengaktifkannya? Melakukan hal tersebut sangat mengurangi jumlah akun spam. Dalam pelajaran ini, kita akan belajar bagaimana melakukan hal yang sama!


Apa yang Akan Kita Bangun?

Kita akan membuat skrip pendaftaran PHP yang bagus dimana pengguna dapat membuat akun untuk mendapatkan akses ke "bagian anggota" dari sebuah situs web.
Setelah pengguna membuat akunnya, akun tersebut kemudian akan dikunci sampai pengguna mengklik sebuah tautan verifikasi yang akan dia terima di inbox email-nya.


Langkah 1 - Halaman Pendaftaran

Pertama-tama kita membutuhkan halaman sederhana dimana pengunjung kita dapat mendaftarkan akun mereka; jadi itulah hal pertama yang akan kita bangun.
Saya ingin mengingatkan Anda bahwa ini adalah tutorial PHP, dan menurut pendapat saya, saya pikir Anda perlu mengetahui dasar-dasar HTML sebelum melanjutkan dengan PHP.  Saya akan menambahkan komentar ke HTML & CSS untuk menjelaskan setiap baris kode.

index.php - Ini adalah halaman pendaftaran kita dengan formulir dasar.

css/style.css - Ini adalah stylesheet untuk index.php dan halaman selanjutnya.

Seperti yang Anda lihat, saya telah menambahkan komentar ke setiap baris yang menjelaskan apa yang mereka lakukan. Juga, Anda mungkin telah memperhatikan komentar berikut di file index.php:

Kita akan menulis PHP kita antara 2 baris ini!


Langkah 2 - Validasi Masukan

Hal pertama yang akan kita bangun adalah sepotong kode yang akan memvalidasi informasinya. Berikut adalah daftar singkat yang merinci apa yang perlu dilakukan.

  • Jika field nama tidak kosong.
  • Jika namanya tidak terlalu pendek.
  • Jika field email tidak kosong.
  • Jika alamat email itu valid xxx@xxx.xxx

Jadi langkah pertama kita adalah memeriksa apakah formulir diajukan, dan field-nya tidak kosong.

Waktunya untuk perincian! Kita memulai dengan pernyataan IF dan pertama-tama kita memvalidasi field nama:

Jadi jika Anda mengirimkan formulir sekarang dengan field kosong, tidak ada yang terjadi. Jika Anda mengisi kedua field maka naskah kita akan menjalankan kode di antara tanda kurung.
Sekarang kita akan membuat kode yang akan memeriksa apakah alamat email itu valid. Jika tidak, kita akan mengembalikan kesalahan. Juga mari kita mengubah variabel posting kita menjadi variabel lokal:

Kita sekarang bisa mencapai data kita melalui variabel lokal kita. Seperti yang Anda lihat, saya juga menambahkan string escape MySQL untuk mencegah injeksi MySQL saat memasukkan data ke dalam database MySQL.

"Fungsi mysql_real_escape_string() meng-escape karakter khusus dalam string untuk digunakan dalam pernyataan SQL."

Regular Expressions

Berikutnya adalah cuplikan kecil yang memeriksa apakah alamat email-nya valid.

Harap dicatat bahwa saya tidak secara pribadi menulis regular expression ini, ini adalah cuplikan kecil dari php.net.
Pada dasarnya, memverifikasi apakah email ditulis dalam format berikut:

Sekarang di eregi, Anda dapat melihat bahwa memeriksa apakah email berisi karakter dari alfabet, jika ada nomor, atau tanda hubung phantom (_), dan tentu saja persyaratan dasar untuk email (email)'@' dan sebuah (titik)'.' Jika tidak satu pun karakter ini ditemukan, expression mengembalikan "false". Oke, jadi sekarang kita perlu menambahkan beberapa pesan kesalahan dasar.

Seperti yang Anda lihat, kami telah membuat variabel lokal "$msg", ini memungkinkan kita menampilkan kesalahan atau pesan sukses di manapun pada halaman.
Dan kita akan menampilkannya di antara teks instruksi dan formulirnya.

Tambahkan ini ke style.css, untuk memberi gaya pesan status kita sedikit.


Langkah 3 - Membuat Database & Membangun Koneksi

Sekarang kita perlu membuat koneksi database dan membuat tabel untuk memasukkan data akun. Jadi mari kita pergi ke PHPMyAdmin dan membuat database baru dengan nama registrations dan membuat akun pengguna yang memiliki akses ke database tersebut untuk memasukkan dan memperbarui data.

Mari membuat tabel users kita, dengan 5 field:

Jadi sekarang kita harus memasukkan rincian untuk field ini:

Bagi mereka yang tidak ingin memasukkan data ini secara manual, Anda bisa menjalankan kode SQL berikut.

Database kita sudah dibuat, sekarang kita perlu menjalin koneksi dengan menggunakan PHP. Kita akan menulis kode berikut di awal skrip kita tepat di bawah baris berikut:

Kita akan menggunakan kode berikut untuk terhubung ke server database dan memilih database registrations. (koneksi MySQL dasar)

Setelah kita membuat koneksi ke database kita, kita dapat melanjutkan ke langkah berikutnya dan memasukkan rincian akun.


Langkah 4 - Memasukkan Akun

Sekarang saatnya memasukkan rincian akun yang dikirimkan ke database kita dan menghasilkan hash aktivasi. Tuliskan kode berikut di bawah baris ini:

Hash Aktivasi

Dalam database kita, kita membuat field yang disebut hash, hash ini adalah string teks 32 karakter. Kita juga mengirimkan kode ini ke alamat email pengguna. Mereka kemudian bisa mengklik tautan (yang berisi hash) dan kita akan memverifikasi apakah cocok dengan yang ada di database. Mari membuat variabel lokal yang disebut $hash dan menghasilkan hash md5 acak.

Apa yang telah kita lakukan? Nah kita menggunakan fungsi PHP "rand" untuk menghasilkan bilangan acak antara 0 dan 1000. Selanjutnya fungsi MD5 kita akan mengubah angka ini menjadi string teks 32 karakter yang akan kita gunakan di email aktivasi kita. Pilihan saya adalah menggunakan MD5, karena menghasilkan hash dari 32 karakter yang aman dan, dalam kasus ini, tidak mungkin untuk dipecahkan.

Membuat Kata Sandi Random

Hal berikutnya yang perlu dilakukan adalah membuat kata sandi acak untuk anggota kita:

Masukkan informasi berikut ke dalam database kita menggunakan kueri MySQL

Seperti yang Anda lihat, kami memasukkan semua data dengan string escape MySQL di sekitarnya untuk mencegah injeksi MySQL.
Anda juga mungkin memperhatikan bahwa fungsi MD5 mengubah kata sandi acak menjadi hash yang aman untuk perlindungan. Contoh: jika orang "jahat" mendapatkan akses ke database, dia tidak dapat membaca kata sandinya.

Untuk pengujian, isi formulir dan periksa apakah data sedang dimasukkan ke dalam database kita.


Langkah 5 - Mengirim Email Verifikasi

Tepat setelah kita memasukkan informasi ke dalam database kita, kita perlu mengirim email ke pengguna dengan tautan verifikasi. Jadi mari kita gunakan fungsi "mail" PHP untuk melakukan hal itu.

Sekarang mari kita rinci pesannya:

Pada kode di atas, kita mengirimkan deskripsi singkat kepada pengguna kita yang berisi nama pengguna dan kata sandi -- dengan menggunakan variabel lokal yang kita buat saat data diposkan.

Di bagian kode ini, kita membuat tautan dinamis. Hasilnya akan terlihat seperti ini:

Seperti yang Anda lihat, itu menciptakan url yang solid, yang tidak mungkin ditebak. Ini adalah cara yang sangat aman untuk memverifikasi alamat email pengguna.


Langkah 6 - Aktivasi Akun

Seperti yang bisa Anda lihat, tautan url kita ke verify.php jadi mari kita buat itu, dengan menggunakan template dasar yang sama seperti yang kita gunakan untuk index.php.
Namun, hapus formulir dari template.

Hal pertama yang perlu kita lakukan adalah memeriksa apakah kita memiliki variabel $_GET (email & hash)

Untuk membuat sesuatu menjadi sedikit lebih mudah, mari kita menetapkan variabel lokal kita dan menambahkan beberapa pencegahan injeksi MySQL dengan, sekali lagi, menggunakan string escape MySQL.

Selanjutnya adalah mengecek data dari url terhadap data di database kita menggunakan kueri MySQL.

Pada kode di atas, kita menggunakan pernyataan select MySQL, dan mengecek apakah email dan hash-nya sesuai. Tapi selain itu, kita mengecek apakah status akunnya "inactive". Akhirnya, kita menggunakan mysql_num_rows untuk menentukan jumlah kecocokan yang ditemukan. Jadi mari kita coba ini. Cukup gunakan echo sederhana untuk mengembalikan hasilnya.

Kita memiliki MATCH! Untuk mengubah hasilnya, cukup ganti email dan Anda akan melihat bahwa nomor yang dikembalikan adalah 0.
Kita dapat menggunakan variabel $match untuk mengaktifkan akun atau mengembalikan kesalahan saat tidak ditemukan kecocokan.

Untuk mengaktifkan akun, kita harus memperbarui field active menjadi 1 dengan menggunakan kueri MySQL.

Jadi kita menggunakan istilah pencarian yang sama untuk update seperti yang kita gunakan di kueri select MySQL kita. Kita mengubah active menjadi 1 dimana email, hash dan field active = 0 cocok. Kita juga mengembalikan pesan yang memberitahukan pengguna bahwa akunnya telah diaktifkan. Anda dapat menambahkan pesan seperti yang kami lakukan di sini ke bagian "no match". Jadi kode akhir seharusnya terlihat seperti:

Jika Anda mengunjungi verify.php tanpa string, kesalahan berikut akan ditampilkan:


Langkah 7 - Login

Pada langkah terakhir ini, saya akan menunjukkan cara membuat formulir login dasar dan memeriksa apakah akun sudah diaktifkan. Pertama buat file baru yang disebut login.php dengan template dasar yang kita gunakan sebelumnya, tapi kali ini saya ganti formulirnya menjadi formulir login.

Formulirnya adalah html dasar, dan hampir sama dengan formulir pendaftaran, tidak ada penjelasan lebih lanjut yang diperlukan. Sekarang saatnya menulis kode untuk skrip login, yang akan kita tulis tepat di bawah kode koneksi MySQL. Kita mulai dengan sesuatu yang juga kita lakukan dalam formulir pendaftaran.

Jadi kita pertama kali memeriksa untuk melihat apakah data sedang diposting, dan kita memastikan bahwa itu tidak kosong.
Selanjutnya adalah membuat beberapa variabel lokal untuk data posting:

Kita membuat variabel lokal dan mengubah kata sandinya menjadi hash md5 agar sesuai dengan hash kata kunci yang telah kami simpan di database.
Sekarang, saatnya membuat koneksi ke tabel "users" kita dan memverifikasi apakah data yang dimasukkan benar.

Kita menulis kueri MySQL yang akan memilih username, password dan informasi aktif dari database kita, jika username dan kata sandi sesuai.
AND active='1' is !IMPORTANT!, ini memastikan bahwa Anda hanya dapat login jika akun Anda diaktifkan. Kita menggunakan num rows MySQL lagi untuk melihat berapa banyak kecocokan yang ditemukan.

Pada kode diatas kita cek apakah login itu sukses atau tidak.


Tamat

Dan itulah akhir dari tutorial ini! Saya harap Anda menikmatinya, dan jika Anda melakukannya silakan tinggalkan komentar di bawah ini!

  • Ikuti kami di Twitter, atau berlangganan Feed RSS NETTUTS untuk tutorial dan artikel pengembangan web harian lainnya.

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.