Untuk menghindari spammers / registrasi email yang berkali-kali pada aplikasi kita, oleh karena itu kita harus melakukan validasi email. Validasi bisa dengan cara menggunakan email verification. Nah pada tutorial kali ini, saya akan membahasnya. Semoga bisa diterapkan pada aplikasi xamarin android kalian ya .
Saya anggap pembaca disini sudah mengikuti beragam tutorial sebelumnya, karena saya tidak akan membahas secara detail dari insatalasi visual studio atau instal nuget yah :). Jika masih pemula alangkah baiknya ikuti tutorial dasar terlebih dahulu.
Oke saya memiliki sebuah database sebagai berikut :
table : users
Tabel tersebut akan menampung database pendaftaran users ya...
activate 0 = belum active
activate 1 = active
Untuk code php nya kita siapkan beberapa file sebagai berikut :
koneksi.php
<?php
$server = "localhost"; //sesuaikan dengan nama server
$user = "usernamedatabase"; //sesuaikan username
$password = "passworddatabase"; //sesuaikan password
$database = "namadatabase"; //sesuaikan target databese
$con = mysqli_connect($server, $user, $password, $database);
if (mysqli_connect_errno()) {
echo "Gagal terhubung MySQL: " . mysqli_connect_error();
}
?>
Gunakan kode diatas untuk menghubungkan database kalian yah.
daftarmember.php
<?php
error_reporting(0);
header('content-type: application/json');
include "koneksi.php";
$nama = $_POST['nama'];
$email = $_POST['email'];
$password = $_POST['password'];
$passwords=md5($password);
$handphone = $_POST['handphone'];
$level = $_POST['level'];
$activate = $_POST['activate'];
$checkemail = mysqli_num_rows(mysqli_query($con, "SELECT * FROM users WHERE email = '$email'"));
if ($checkemail > 0) {
echo "{"data_event":" ." "gagal" ". "}";
}
else {
define('ROOT', 'https://namalinkwebsiteanada/');
$daftar = "INSERT INTO users (nama,email,password,handphone,level,activate) VALUES('$nama','$email','$passwords','$handphone','$level','$activate')" ;
$query = mysqli_query($con,$daftar);
$kode = md5(uniqid(rand()));
$to = $email;
$subject = "Aktivasi Email Anda";
$txt = "Hallo Silahkan Aktivasi Email Anda pada Link berikut !";
$txt .= "<a href='".ROOT."konfirmasiemail.php?email=".$_POST['email']."&kode=$kode&nama=".$_POST['nama']."'>".ROOT."konfirmasiemail.php?email=".$_POST['email']."&kode=$kode</a>";
$headers = "From: development@website.com" . "rn" .
"CC: ipungpurwono@banyu.center";
$kirim = mail($to,$subject,$txt,$headers);
if($kirim AND $query)
{
echo "<p class=info>Berhasil Dikirim</p>";
}
else
{
echo "<p class=infoGagal>Gagal Dikirim</p>";
}
}
?>
Untuk security masih pake password md5 ya , kalian bisa ubah sesuka kalian.
Note : Set email pengirim pada $headers.
konfirmasiemail.php
<?php
include "koneksi.php";
$query = "UPDATE users SET activate='1'";
if (mysqli_query($con, $query)) {
echo "Selamat Email anda sudah Terverifikasi, silahkan login di Apps Panen Diskon";
} else {
echo "Email tidak terverifikasi: " . mysqli_error($conn);
}
?>
code diatas tentunya untuk mengubah status dari non verified menjadi verified member.
Sekarang kita buat layoutnya pada xamarin
HalamanDaftar.axml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffffff"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="vertical"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayout1"
android:padding="20dp"
android:background="#30336b">
<TextView
android:text="Hello,"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:textColor="#ffffffff"
android:textSize="@dimen/abc_action_button_min_width_overflow_material"
android:fontFamily="@string/abc_font_family_title_material" />
<TextView
android:text="Silahkan Melakukan Pendaftaran"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:textColor="#ffffffff"
android:fontFamily="@string/abc_font_family_display_4_material"
android:layout_marginBottom="27.5dp" />
<EditText
android:inputType="textPersonName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtNama"
android:hint="Nama Anda"
android:textColorHint="#ff808080"
android:layout_marginTop="32.0dp"
android:padding="10dp"
android:background="#ffffffff"
android:textColor="#ff1c1718" />
<EditText
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtEmail"
android:hint="emailanda@email.com"
android:textColorHint="#ff808080"
android:padding="10dp"
android:background="#ffffffff"
android:layout_marginTop="7.0dp"
android:textColor="#ff1c1718" />
<EditText
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtPassword"
android:hint="Password"
android:textColorHint="#808080"
android:padding="10dp"
android:background="#ffffffff"
android:layout_marginTop="7.0dp"
android:textColor="#ff1c1718" />
<EditText
android:inputType="phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtHandphone"
android:hint="Handphone"
android:textColorHint="#ff808080"
android:padding="10dp"
android:background="#ffffffff"
android:layout_marginTop="7.0dp"
android:textColor="#ff1c1718" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnDaftar"
android:background="#ffff5722"
android:textColor="#ffffffff"
android:layout_marginTop="16.5dp"
android:textStyle="bold"
android:text="DAFTAR" />
</LinearLayout>
</RelativeLayout>
Selanjutnya adalah Activitynya nih
Daftar.cs
Note : Cari kode berikut
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.HalamanDaftar);
Note : Masukan kode dibawah ini pas dibawah SetContentView
EditText nama = FindViewById<EditText>(Resource.Id.txtNama);
EditText email = FindViewById<EditText>(Resource.Id.txtEmail);
EditText password = FindViewById<EditText>(Resource.Id.txtPassword);
EditText handphone = FindViewById<EditText>(Resource.Id.txtHandphone);
Button daftar = FindViewById<Button>(Resource.Id.btnDaftar);
daftar.Click += delegate {
string xnama = nama.Text;
string xemail = email.Text;
string xpassword = password.Text;
string xhandphone = handphone.Text;
string level = "2";
string activate = "0";
//Validasikan Form
var emailvalidate = isValidEmail(xemail);
if (xnama == "")
{
Toast.MakeText(this, "Masukan Nama Anda !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
else if (xemail == "")
{
Toast.MakeText(this, "Masukan Email Anda !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
else if(emailvalidate == false){
Toast.MakeText(this, "Email tidak valid !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
else if(xpassword ==""){
Toast.MakeText(this, "Masukan Password Anda !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
else if (xhandphone == "")
{
Toast.MakeText(this, "Masukan Handphone Anda !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
else if(xhandphone.Length>12){
Toast.MakeText(this, "Handphone maksimal 12 Digit !", ToastLength.Short).Show();
nama.RequestFocus();
return;
}
//Tampung Dalam Array
var data = new NameValueCollection();
data["nama"] = xnama;
data["email"] = xemail;
data["password"] = xpassword;
data["handphone"] = xhandphone;
data["level"] = level;
data["activate"] = activate;
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetTitle("Confirmasi");
alert.SetMessage("Apakah anda yakin akan melakukan pendaftaran?");
alert.SetPositiveButton("Ya", (senderAlert, args) =>
{
//Panggil file php untuk input data / tambah data pada servermu
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
var reply = client.UploadValues
("https://banyu.center/diskonfinder/daftarmember.php?", "POST", data);
Toast.MakeText(this, "Silahkan melakukan verifikasi di email anda, setelah memverifikasi lalu anda bisa login kembali!", ToastLength.Short).Show();
//jika berhasil maka hapus isi komponennya
nama.Text = "";
email.Text = "";
password.Text = "";
handphone.Text = "";
//Jika berhasil maka arahkan ke halaman login kembali
Intent c = new Intent(this, typeof(LoginActivity));
StartActivity(c);
});
alert.SetNegativeButton("Tidak", (senderAlert, args) =>
{
Toast.MakeText(this, "Pendaftaran digagalkan!", ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
};
Tambahkan fungsi validasi email
public bool isValidEmail(string email)
{
return Android.Util.Patterns.EmailAddress.Matcher(email).Matches();
}
Sebagai bukti verifikasi:
Jika di klik link verifikasi maka akan merubah status 0 menjadi 1 (aktif)
Terimakasih,
Salam Ipung Purwono



No comments:
Post a Comment
Mohon melakukan komentar dengan bahasa yang mudah dipahami, santun dan dengan bahasa yang baik.