Membuat Android Register dan Login Mengunakan AQuery dan MySQL

Hai sobat, bersama lagi di artikel tentang android, pada artikel kemarin yang berjudul Membuat Welcome Screen / Splash Screen pada aplikasi android, telah dijelaskan bagaimana cara membuat tampilan s[lash screen pada aplikasi android di mana tampilan tersebut berguna untuk menahan sementara aplikasi ke activity utama. Dan pada artikel kali ini, akan dijelskan bagaimana cara membuat aplikasi login dan register menggunakan AQuery (Android Query) dan php MySQL sebagai servernya. Untuk membuatnya, berikut langkah-langkahya.


Dalam pembuatan aplikasi di dalam artikel ini, masih menggunakan project pada artikel sebelumnya yang berjudul Membuat Tampilan Splash Screen Android. Fugsinya adalah untuk menahan sementara activity utama dan menampilkan brand dari apalikasi tersebut.

Membuat MySQL Database dan Script PHP

Pertama buat database baru, di sini saya memberi nama app_pesantren. Buat tabel baru dengan nama user, strukturnya seperti berikut ini.


Setelah membuat database baru, selanjutnya buat koneksinya menggunakan script php seperti di bawah ini


<?php

$server ="localhost"; // server nya
 
$username   = "root";  //username nya
 
$password   ="";  //password nya
 
 
$database   ="app_pesantren";   //nama database
 
mysql_connect($server, $username, $password) or die("Koneksi tidak ada");    //untuk koneksi nya
 
mysql_select_db($database) or die("Database tidak ditemukan");  //memilih database
?>


Jika koneksi telah kita buat, kemudian lanjut lagi membuat script untuk memasukkan data user baru ke dalam database. Kodenya seperti berikut ini


<?php
include 'db.php';  //memanggil file db.php
 
//mengecek variabel
if(isset($_POST["email"]) && isset ($_POST["password"]))
 {
 $password = $_POST['password'];
 $email= $_POST['email'];
 
 //perintah SQL untuk memasukan data
 $query = "INSERT INTO user (email,password) VALUES ('$email','$password')";
 $hasil  = mysql_query($query);
 if($hasil)
  {
      $response["result"]= true ;
      $response["msg"]= "Register berhasil, silakan login";
      echo json_encode($response);
  }
 else {
     $response['result']= false ;
     $response['msg']="maaf,terjadi kesalahan";
     echo json_encode($response);
  }
}else{
    $response['result']= false ;
    $response['msg']="maaf, data salah";
    echo json_encode($response);
}
?>



Jika script untuk memasukkan user ke dalam database selesai, selanjutnya adalah membuat script untuk login user. Kodenya seperti berikut ini


<?php
include "db.php";  //memanggil fungsi koneksi di file db.php
 
//deklarasi
$email =$_POST['email'];
$password=$_POST['password'];
$passwordd = md5($password);
$response = array();
 
//perintah SQL untuk meampilkan data
$query = "SELECT * FROM user WHERE email ='$email' AND password='$password'";
$hasil = mysql_query($query);
 
//jika data nya ada atau lebih dari 0
if(mysql_num_rows($hasil)> 0){
    $response['result']= true ;
    $response['msg']="login berhasil";
    echo json_encode($response);
 
} else {  
 $response['result']= false ;
    $response['msg']="maaf,terjadi kesalahan";
    echo json_encode($response);
    echo $email, $password;
}
?>


Ketiga file tadi disimpan dan di masukkan ke dalam folder dengan nama app_pesantren, dan folder tadi dimasukkan ke dalam folder server lokal atau htdoccs (local server)
Jika semuanya sudah, maka struktur filenya seperti berikut ini


Membuat Android Register dan Login Mengunakan AQuery dan MySQL

maaf sob, itu nama folder sedikit salah, maklum project lama 😅

Membuat Project Android

Di artikel kali ini akan menggunakan project pada artikel sebelumnya, jika sobat belum membuat sebelumnya, sobat bisa membuka artikel sebelumnya di sini.

Dalam membuat tampilan register dan login, di sini menggunakan Material EditText, untuk bisa menggunakannya, kita harus mengistal library dependencies - nya terlebih dahulu. Buka build:grandle (module) dan masukkan kode di bawah ini


compile 'com.rengwuxian.materialedittext:library:2.1.4'


tambahkan dua activity baru dengan nama RegisterActivity dan LoginActivity. Lalu pada tampilan layoutnya, buat tampilanya seperti berikut ini


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Activity.RegisterActivity">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/logo"
        android:layout_centerHorizontal="true"
        android:id="@+id/bglogo"
        android:layout_marginTop="20dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login User"
        android:textSize="26dp"
        android:layout_below="@id/bglogo"
        android:layout_centerHorizontal="true"
        android:id="@+id/textView"/>

    <com.rengwuxian.materialedittext.MaterialEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Email"
        app:met_baseColor="#2e8ece"
        app:met_primaryColor="#fc1e94"
        app:met_errorColor="#f22a37"
        app:met_floatingLabel="highlight"
        app:met_iconLeft="@mipmap/ic_email"
        android:layout_below="@id/textView"
        android:layout_marginTop="55dp"
        android:id="@+id/regtxtEmail"/>

    <com.rengwuxian.materialedittext.MaterialEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        app:met_baseColor="#2e8ece"
        app:met_primaryColor="#fc1e94"
        app:met_errorColor="#f22a37"
        app:met_floatingLabel="highlight"
        app:met_iconLeft="@mipmap/ic_password"
        android:layout_below="@id/regtxtEmail"
        android:layout_marginTop="1dp"
        android:id="@+id/regtxtPassword1"/>

    <com.rengwuxian.materialedittext.MaterialEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        app:met_baseColor="#2e8ece"
        app:met_primaryColor="#fc1e94"
        app:met_errorColor="#f22a37"
        app:met_floatingLabel="highlight"
        app:met_iconLeft="@mipmap/ic_password"
        android:layout_below="@id/regtxtPassword1"
        android:layout_marginTop="1dp"
        android:id="@+id/regtxtPassword2"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Register"
        android:layout_below="@id/regtxtPassword2"
        android:layout_marginTop="10dp"
        android:id="@+id/regbtnRegister"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/regbtnRegister"
        android:text="Login"
        android:layout_alignParentRight="true"
        android:textSize="20sp"
        android:layout_marginTop="20dp"
        android:id="@+id/reglblLogin"/>

</RelativeLayout>



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Activity.LoginActivity">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/logo"
        android:layout_centerHorizontal="true"
        android:id="@+id/bglogo"
        android:layout_marginTop="20dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login User"
        android:textSize="26dp"
        android:layout_below="@id/bglogo"
        android:layout_centerHorizontal="true"
        android:id="@+id/textView"/>

    <com.rengwuxian.materialedittext.MaterialEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Email"
        app:met_baseColor="#2e8ece"
        app:met_primaryColor="#fc1e94"
        app:met_errorColor="#f22a37"
        app:met_floatingLabel="highlight"
        app:met_iconLeft="@mipmap/ic_email"
        android:layout_below="@id/textView"
        android:layout_marginTop="70dp"
        android:id="@+id/logtxtEmail"/>

    <com.rengwuxian.materialedittext.MaterialEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        app:met_baseColor="#2e8ece"
        app:met_primaryColor="#fc1e94"
        app:met_errorColor="#f22a37"
        app:met_floatingLabel="highlight"
        app:met_iconLeft="@mipmap/ic_password"
        android:layout_below="@id/logtxtEmail"
        android:layout_marginTop="1dp"
        android:id="@+id/logtxtPassword"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Login"
        android:layout_below="@id/logtxtPassword"
        android:layout_marginTop="10dp"
        android:id="@+id/logbtnLogin"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/logbtnLogin"
        android:text="Register"
        android:layout_alignParentRight="true"
        android:textSize="20sp"
        android:layout_marginTop="20dp"
        android:id="@+id/loglblRegister"/>

</RelativeLayout>


Pada dua tampilan tersebut, untuk texkbox menggunakan Material EditText agar tampilanya lebih sesuai standar model material design. Untuk penjelasan lebih tentang material edittext bisa sobat baca di sini.

Mengistal Library

Karena dalam project ini menggunakan AQuery untuk berinteraksi dengan server maka harus terlebih dahulu mengistal librarynya. Pertama sobat download terlebih dahulu librarynya di sini.



Selanjutnya sobat salin library tersebut lalu masuk ke dalam project.



Di dalam menu jendela project, sobat ganti dari Android ke Project. Cari directory lib dan tempel library tadi ke dalam directory library.



Setelah menempel library tadi, selanjutnya klik kanan pada linrary dan pilih Add as Library.



Pengistalan lbrary AQuery berhasil, sekarang lanjut ke tahap berikutnya.

Membuat Activity

Selanjutnya buat class baru dengan nama BaseApp, fungsinya sebagai penyimpan pengaturan objek atau method yang sering digunakan dalam class lain sehinga nantinya tidak perlu deklarasi di tiap-tiap class Untuk kodenya sperti berikut ini


package com.blogsetyaaji.pesantrenidn;

import android.content.Context;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.AlphaAnimation;

import com.androidquery.AQuery;

/**
 * Created by AJISETYA
 */
public class BaseApp extends AppCompatActivity {
    public Context context;
    public AQuery aQuery;
    public AlphaAnimation BtnAnimasi = new AlphaAnimation(1F, 0.1F);

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this;
        aQuery = new AQuery(context);
    }
}

Selanjutnya, buat package baru dengan nama Helser dan buat class baru di dalamnya dengan nama Helper. Fungsi dari class ini adalah untuk menampung fungsi yang nantinya akan digunakan di banyak activity. Dalam class helper, akan dimasukkan beberapa fungsi seperti fungsi untuk menampilkan toast, fungsi mengecek email, fungsi mengecek kesamaan password dan lainya. Untuk kodenya seperti berikut ini


package com.blogsetyaaji.pesantrenidn.Helper;

import android.content.Context;
import android.widget.EditText;
import android.widget.Toast;

import com.blogsetyaaji.pesantrenidn.BaseApp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by AJISETYA
 */
public class Helper extends BaseApp {

    /*alamat utama, silahkan disesuaikan dgn ip sobat dan nama folder sobat*/
    public static String BASE_URL = "http://192.168.154.2/app_pesantren/";

    /*fungsi cek kesamaan text*/
    public static boolean isCompare(EditText et1, EditText et2){
        String a = et1.getText().toString();
        String b = et2.getText().toString();
        /*jika a sama dengan b*/
        if (a.equals(b)){
            return false;
        }else{
            return true;
        }
    }

    /*fungsi untuk menampilkan pesan*/
    public static void pesan (Context c, String msg){
        Toast.makeText(c,msg,Toast.LENGTH_LONG).show();
    }

    /*fungsi untuk mengecek apakah isian kosong*/
    public static boolean isEmpty(EditText editText){
        /*jika banyak huruf lebih dari 0*/
        if (editText.getText().toString().trim().length() > 0){
            /*tidak dikembalikan*/
            return false;
        }else {
            /*kembalikan*/
            return true;
        }
    }

    // validasi untuk inputan email
    public static boolean isEmailValid(EditText email) {
        boolean isValid = false;
        String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
        CharSequence inputStr = email.getText().toString();

        Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(inputStr);

        if (matcher.matches()) {
            isValid = true;
        }
        return isValid;
    }
}

Seteah membuat class helper, selanjutnya membuat activity. Buat package baru dengan nama activity dan masukkan semua activity ke dalam package activity. Lalu buka SplashScreen.java dan ubah tujuan intent ke LoginActivity.class, untuk lebih jelasnya bisa sobat lihat kode di bawah ini


package com.blogsetyaaji.pesantrenidn.Activity;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.blogsetyaaji.pesantrenidn.R;

public class SplashScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        /*handler untuk menahan activity sementara*/
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                /*mulai activity ke MainActivity setelah 5 detik*/
                startActivity(new Intent(getApplicationContext(),LoginActivity.class));
                finish();
            }
            /*durasi 5000ms*/
        },5000);
    }

    @Override
    public void onBackPressed() {
        return;
    }
}

Setelah mengubah activity SplasScreen, buka RegisterActivity.java dan buat kodenya seperti berikut ini


package com.blogsetyaaji.pesantrenidn.Activity;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.blogsetyaaji.pesantrenidn.BaseApp;
import com.blogsetyaaji.pesantrenidn.Helper.Helper;
import com.blogsetyaaji.pesantrenidn.R;
import com.rengwuxian.materialedittext.MaterialEditText;

import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;

import java.util.HashMap;
import java.util.Map;

public class RegisterActivity extends BaseApp {

    private MaterialEditText regtxtEmail, regtxtPassword1, regtxtPassword2;
    private TextView reglblLogin;
    private Button regbtnRegister;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        setupView();
        reglblLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.startAnimation(BtnAnimasi);
                startActivity(new Intent(context, LoginActivity.class));
            }
        });
        regbtnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                registerUser();
            }
        });
    }

    private void registerUser() {
        regtxtEmail.setError(null);
        regtxtPassword1.setError(null);
        regtxtPassword2.setError(null);
        /*check keberadaan teks*/
        if (Helper.isEmpty(regtxtEmail)) {
            regtxtEmail.setError("Email masih kosong");
            regtxtEmail.requestFocus();
        } else if (Helper.isEmailValid(regtxtEmail)) {
            regtxtEmail.setError("Format email salah");
            regtxtEmail.requestFocus();
        } else if (Helper.isEmpty(regtxtPassword1)) {
            regtxtPassword1.setError("Password masih kosong");
            regtxtPassword1.requestFocus();
        } else if (Helper.isEmpty(regtxtPassword2)) {
            regtxtPassword2.setError("Konfirmasi password masih kosong");
            regtxtPassword2.requestFocus();
            /*check kesamaan password*/
        } else if (Helper.isCompare(regtxtPassword1, regtxtPassword2)) {
            regtxtPassword2.setError("Password tidak cocok");
            regtxtPassword2.requestFocus();
        } else {
            /*kirim data ke server*/

            /*alamat url http://192.168.154.2/app_pesantren/register.php*/
            String URL = Helper.BASE_URL + "register.php";

            /*menampung nilai*/
            Map<String, String> param = new HashMap<>();
            param.put("email", regtxtEmail.getText().toString());
            param.put("password", regtxtPassword1.getText().toString());

            /*menampilkan progressbar saat mengirim data*/
            ProgressDialog pd = new ProgressDialog(context);
            pd.setIndeterminate(true);
            pd.setCancelable(false);
            pd.setInverseBackgroundForced(false);
            pd.setCanceledOnTouchOutside(false);
            pd.setTitle("Info");
            pd.setMessage("Sedang menambah data");
            pd.show();

            try {
                /*format ambil data*/
                aQuery.progress(pd).ajax(URL, param, String.class, new AjaxCallback<String>() {
                    @Override
                    public void callback(String url, String object, AjaxStatus status) {
                        /*jika objek tidak kosong*/
                        if (object != null) {
                            try {
                                JSONObject jsonObject = new JSONObject(object);
                                String result = jsonObject.getString("result");
                                String msg = jsonObject.getString("msg");

                                /*jika result adalah benar, maka pindah ke activity login dan menampilkan pesan dari server,
                                serta mematikan activity*/
                                if (result.equalsIgnoreCase("true")) {
                                    startActivity(new Intent(context, LoginActivity.class));
                                    Helper.pesan(context, msg);
                                    finish();
                                } else {
                                    Helper.pesan(context, msg);
                                }

                            } catch (JSONException e) {
                                Helper.pesan(context, "Error convert data json");
                            }
                        }
                    }
                });
            } catch (Exception e) {
                Helper.pesan(context, "Gagal mengambil data");
            }
        }
    }

    /*pengenalan objek*/
    private void setupView() {
        regtxtEmail = (MaterialEditText) findViewById(R.id.regtxtEmail);
        regtxtPassword1 = (MaterialEditText) findViewById(R.id.regtxtPassword1);
        regtxtPassword2 = (MaterialEditText) findViewById(R.id.regtxtPassword2);
        regbtnRegister = (Button) findViewById(R.id.regbtnRegister);
        reglblLogin = (TextView) findViewById(R.id.reglblLogin);
    }

}

Selanjutnya buka LoginActivity.java dan buat kodenya seperti berikut ini


package com.blogsetyaaji.pesantrenidn.Activity;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.blogsetyaaji.pesantrenidn.BaseApp;
import com.blogsetyaaji.pesantrenidn.Helper.Helper;
import com.blogsetyaaji.pesantrenidn.R;
import com.rengwuxian.materialedittext.MaterialEditText;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class LoginActivity extends BaseApp {

    private MaterialEditText logtxtEmail, logtxtPassword;
    private TextView loglblRegister;
    private Button logbtnLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        setupView();
        loglblRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.startAnimation(BtnAnimasi);
                startActivity(new Intent(getApplicationContext(), RegisterActivity.class));
            }
        });

        logbtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                loginUser();
            }
        });
    }

    private void loginUser() {
        logtxtEmail.setError(null);
        logtxtPassword.setError(null);
        /*check kebaradan teks*/
        if (Helper.isEmpty(logtxtEmail)) {
            logtxtEmail.setError("Email masih kosong");
            logtxtEmail.requestFocus();
        } else if (Helper.isEmpty(logtxtPassword)) {
            logtxtPassword.setError("Password masih kosong");
            logtxtPassword.requestFocus();
        } else {
            /*kirim data ke server*/
            String URL = Helper.BASE_URL + "login.php";
            Map<String, String> param = new HashMap<>();
            param.put("email", logtxtEmail.getText().toString());
            param.put("password", logtxtPassword.getText().toString());

            /*menampilkan progressbar saat mengirim data*/
            ProgressDialog pd = new ProgressDialog(context);
            pd.setIndeterminate(true);
            pd.setCancelable(false);
            pd.setInverseBackgroundForced(false);
            pd.setCanceledOnTouchOutside(false);
            pd.setTitle("Info");
            pd.setMessage("Login");
            pd.show();

            try {
                /*format ambil data*/
                aQuery.progress(pd).ajax(URL, param, String.class, new AjaxCallback<String>() {
                    @Override
                    public void callback(String url, String object, AjaxStatus status) {
                        /*jika objek tidak kosong*/
                        if (object != null) {
                            try {
                                JSONObject jsonObject = new JSONObject(object);
                                String result = jsonObject.getString("result");
                                String msg = jsonObject.getString("msg");
                                if (result.equalsIgnoreCase("true")) {
                                    startActivity(new Intent(context, MainActivity.class));
                                    Helper.pesan(context, msg);
                                    finish();
                                } else {
                                    Helper.pesan(context, msg);
                                }
                            } catch (JSONException e) {
                                Helper.pesan(context, "Error convert data json");
                            }
                        }
                    }
                });
            } catch (Exception e) {
                Helper.pesan(context, "Gagal mengambil data");
            }
        }
    }

    private void setupView() {
        logtxtEmail = (MaterialEditText) findViewById(R.id.logtxtEmail);
        logtxtPassword = (MaterialEditText) findViewById(R.id.logtxtPassword);
        logbtnLogin = (Button) findViewById(R.id.logbtnLogin);
        loglblRegister = (TextView) findViewById(R.id.loglblRegister);
    }
}


Pada ke dua class dia atas, mengunakan konsep yang sama yaitu mengecek terlebih dahulu keberadaan teks, lalu menghubungkan dan menampung variable dengan server, selanjutnya mengirim nilai ke server. Jika result atau respon adalah benar, maka pindah activity dan proses interaksi dengan server berhasil.

Memberikan Izin Mengakses Internet

Kerena aplikasi mengambil data dari server internet, maka aplikasi membuatuhkan izin untuk mengakses internet. Untuk menambahkan izin, kita ubah pada file Android Manifest.xml. Silahkan tambahkan kode berikut di atas tag <application>


<uses-permission android:name="android.permission.INTERNET"/>


Menjalankan Program

Jika sudah, aplikasi bisa dijalankan dengan memilih menu Run ‘app’. Tampilan spalsh screen akan tampil pertama kali selama 5 detik, selanjutnya masuk ke activity Login. Jika user belum ada, pilih rester dan masukkan data user untuk proses login selanjutnya.



Untuk artikel selanjutnya, akan dijelaskan pembuatan aplikasi CRUD menggunakan PHP danMySQL sebagai sisi servernya. Sekian artikel tentang membuat aplikasi Register dan Login Android Menggunakan AQuery dan PHP MySQL sebagai Servernya.

Silahkan share dan ikuti blog ini jika sobat suka dengan artikel ini. Dan juga apabila sobat memiliki pertanyaan, kritik, saran, dan komentar, silahkan tulis di kolom komentar. Sampai jumpa di tutorial selanjutnya, sampai jumpa...





Previous
Next Post »

68 komentar

Click here for komentar
13 February 2017 at 19:21 ×

kang saya mau tanya itu yang build gradle nya ko yg punya saya error yah??
compile'com.rengwuxian.materialedittext:library:2.1.4'

Reply
avatar
Aji Setya
admin
13 February 2017 at 20:30 ×

terimakasih sudah berkunjung, coba dicek apakah penulisanya sudah benar atau belum, jangan lupa pilih sync now untuk mensingkronkan project dengan librari

Reply
avatar
20 February 2017 at 00:08 ×

kalau kita sudah bisa login dan ingin menampilkan ke aktiviti baru ada kodingannya g? ane masih newbe

Reply
avatar
Aji Setya
admin
20 February 2017 at 01:38 ×

ada mas, pada tutorial di atas, jika user berhasil login, maka akan ke MainActivity atau class lain, kodinganya berada di LoginActivity.java bagian startActivity(new Intent(context, MainActivity.class)); =D

Reply
avatar
22 February 2017 at 00:17 ×

gan pnya ane ko g bisa konek ke database ya? padahal sudah saya ikutin semua caranya. dari database yang hosting sampai dengan database yang make lokal(xampp).
kendalanya dimana ya mas?kalau berhasil login dia akan ke activity lain tapi yang ini stuck di activity_loginnya. padahal saya dah buat activiti lain untuk nyoba sudah bisa atau belum. mohon pencerahaanya gan wkkwk

Reply
avatar
Aji Setya
admin
22 February 2017 at 21:24 ×

hehehe kalau ingin konek ke database menggunakan ip laptop kalau disimpen di local, bisa juga pakai url server, aturnya di class helper.java

biar ga stak ke loginactivity, di bawah intent ditambah kode finish();

Reply
avatar
Aji Setya
admin
22 February 2017 at 23:10 ×

silahkan lihat update artikel ini mas, maaf ada yang kurang

Reply
avatar
Yayan Kusuma
admin
26 February 2017 at 22:32 ×

dari sekian tutorial yang saya coba cuman punya mas sek berhasill matur tenkyu mass tapi ada yang salah pada login.php nya mas sudah saya benarkan dan berhasillll.....

Reply
avatar
Aji Setya
admin
26 February 2017 at 22:36 ×

hehe iya sama-sama mas, terimakaasih udah berkunjung mas, kalau boleh tau salah yang mana ya biar saya benerin ehehe

Reply
avatar
27 February 2017 at 16:33 ×

mas yayan coba liat yang sudah di edit mas heheh

Reply
avatar
27 February 2017 at 16:33 ×

okey mas siap heheheh aku coba liat login.phpnya mas Yayan heheh

Reply
avatar
Aji Setya
admin
27 February 2017 at 16:56 ×

hehe sip dah, silahkan dicoba lagi :-d

Reply
avatar
Yayan Kusuma
admin
1 March 2017 at 21:09 ×

$query = "SELECT * FROM user WHERE email ='$email' AND password='$passwordd'";

harus nya pasword mas hehehe
jangan lupa ipconfignya harus sesuai dengan wifi yang kita gunakan
sama peletakan folder harus sesuai mas soalnya case sensitive sekali kayak perasaan cew hehehe

mas saya coba yang portal berita kenapa gak mau conect ya pdahal sudah saya teliti satu persatu tpi masih belum bisa conect mohon penjelsannya suhu hehehe

tambah lagi tutorialnya mas tentang API google maps (saran)

Reply
avatar
Aji Setya
admin
1 March 2017 at 22:02 ×

wah terimakasih mas, saya baru nyadar kalau itu saya jadikan md5 hehe, sebenarnya itu untuk security, dibagian register.php yang password dijadikan md5 juga biar aman gitu hehe, oke mas nanti saya revisi

nah betul sekali mas, untuk ip disesuaikan dengan ip server masing-masing, kalau di localhost biasanya menggunakan ip wifi/internet bisa dicek menggunakan ipconfig di Command Prompt. Dan untuk peletakan silahkan disesuaikan juga hehe

mm.. biasanya si di bagian ip, folder server, database mas, mungkin mas bisa kasih tahu error yang tampil hehe

oke mas, terimakasih saranya, nanti kalau ada waktu saya post deh
:-d

Reply
avatar
20 March 2017 at 13:16 ×

Mas tolong di perjelas pembuatan package nya itu buat yg java apa yang layout.. yg di masukin semua activiti itu bagian java nya apa bagian layoutnya

Reply
avatar
Aji Setya
admin
20 March 2017 at 13:24 ×

terimakasih sudah berkunjung dan sarannya mas, nanti skan saya tabah lagi..

pas kita membuat actvity baru, biasanya akan terbentuk 2 file yaitu java dan xml dengan nama yang hampir sama. Untuk sementara mas bisa periksa di atas kode pada bagian nama file, jika formatnya .java berati mas masukin ke bagian java, jika formatnya .xml mas masukin ke bagian layout.. semoga membantu mas =D

Reply
avatar
20 March 2017 at 13:38 ×

on iya mas sudah. tapi ini mau register formatnya salah terus. di bagian String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"; ini bartinya bagaimana ? saya coba tulis reyhan@gmail.com format salah

Reply
avatar
Aji Setya
admin
20 March 2017 at 14:41 ×

coba dicek lagi di file helper.java di bagian method isEmailValid() mas..

Reply
avatar
23 March 2017 at 10:37 ×

mas mau nanya karena saya baru di pemrograman android. library dependencies itu memang sudah ada atau harus download dulu lalu baru bisa kita install. soalnya di tempat saya tampilan android nya muncul tulisan "com.rengwuxian.materialedittext" pada kolom registrasi. makasih mas

Reply
avatar
Aji Setya
admin
23 March 2017 at 11:11 ×

kode itu di taruh di build:grandle(module) mas, nanti pilih sync now

Reply
avatar
26 March 2017 at 06:41 ×

oke mas terimakasih sudah bisa.. mau nanya lagi mas soalnya belum paham.. itu yang di helper.java ip apa ya mas.. kalo belum di hosting dan masih di localhost(xampp) bisa nggak dikoneksikan.. sama gimana caranya ya mas..

Reply
avatar
SariMustholipah
admin
26 March 2017 at 12:40 ×

mas punya saya kok sama kaya punya mas reyhan ya... pas masukin email malah formatnya salah.. sudah di cek pada methodnya persis seperti punya mas tapi masih nggak bisa.. apa ada solusinya mas

Reply
avatar
Aji Setya
admin
26 March 2017 at 13:04 ×

nah itu ip localhost kita mas, kalau sudah dihosting ntar diganti dengan url hostingan kita untuk mengakses file server

Reply
avatar
Aji Setya
admin
26 March 2017 at 13:10 ×

oh iya mba, itu ada yang kurang yaitu operator not(!) jadi sebenarnya kodenya ini

else if (!Helper.isEmailValid(regtxtEmail)) {
regtxtEmail.setError("Format email salah");
regtxtEmail.requestFocus();
}

jadi jika !isvalid=false maka hasilnya isValid = true

Reply
avatar
Aji Setya
admin
26 March 2017 at 13:12 ×

silahkan cek komentar ShariMustholipah di bawah mas

Reply
avatar
27 March 2017 at 12:08 ×

oke mas.. maaf banyak nanya mas.. terakhir deh.. pas mau registrasi kok data nya nggak masuk database ya mas.. bingung... mohon pencerahan

Reply
avatar
27 March 2017 at 12:26 ×

sama aplikasinya stuck di registrasi nya mas.. maaf mas nanya terus soalnya berkaitan sama tugas akhir saya

Reply
avatar
Aji Setya
admin
27 March 2017 at 18:29 ×

muncul error atau toast gak mas, coba dicek di parameter paramnya mas, atau cek urlnya udah bener atau engga

Reply
avatar
Aji Setya
admin
27 March 2017 at 18:30 ×

haha gapapa mas, emang di sini kan bisa buat nanya naya hehe

stuck gimana mas, gak mindah activity gitu?

Reply
avatar
27 March 2017 at 20:40 ×

iya gak pindah activity sama proses registrasinya itu nggak ada pemberitahuan kalo data berhasil ditambahkan.. pas ngeklik registrasi cuma muncul tulisan sedang menambahkan data

Reply
avatar
27 March 2017 at 20:45 ×

nggak ada muncul error sih.. apa mungkin urlnya ya.. kalo url server nya dari localhost bener nggak kaya gini mas "127.0.0.1/nama_aplikasi".. mohon bantuannya

Reply
avatar
Aji Setya
admin
27 March 2017 at 20:50 ×

kayanya ada yang salah mas, kalo ga di parameter param, url atau file phpnya mas

Reply
avatar
Aji Setya
admin
27 March 2017 at 20:51 ×

oh.. urlnya ampil dari ip mas, coba cek buka cmd terus ketik ipconfig, terus mabil yang ipv4

Reply
avatar
27 March 2017 at 23:11 ×

terima kasih banyak mas sudah bisa.. ternyata cuma salah di ip.. hehehe maaf merepotkan

Reply
avatar
Aji Setya
admin
27 March 2017 at 23:23 ×

haha iya mas sama-sama.. :D

Reply
avatar
IX-A
admin
21 April 2017 at 10:41 ×

gan saya ada masalah pada materialEditText nya, gak tau knpa masih error padahal persis sperti mas nya koding

Reply
avatar
Aji Setya
admin
21 April 2017 at 16:16 ×

coba dicek apakah librarinya sudah diinstal dengan baik gan, jangan lupa setelah instal librari pilih sync project.. atau kalau mau yang biasa bisa ganti pakai komponen EditText

Reply
avatar
22 April 2017 at 19:30 ×

mas bisa liat manifest nya ga?

Reply
avatar
Aji Setya
admin
22 April 2017 at 19:34 ×

maaf, project tutorial ini udah kaga ada, mungkin nanti bakal saya buatin yang mirip mas :-d

Reply
avatar
Aji Setya
admin
22 April 2017 at 20:02 ×

coba buka link ini mas https://pastebin.com/xCv5LBef

Reply
avatar
Mufti Coolz
admin
25 April 2017 at 12:02 ×

hallo mas aji setya
saya udh mencoba tutorialnya dan saya menemui beberapa error ktika saya memasukan data dan mucul toast error convert data json itu knpa yh mas mohon bantuannya :)

Reply
avatar
Yayan Kusuma
admin
26 April 2017 at 09:58 ×

semnagat-semangat gabung dengan YAC yogya aja mas banyak master2 android yang share berbagi ilmu tentang android,,hehehe

Reply
avatar
Aji Setya
admin
26 April 2017 at 12:32 ×

sepertinya ada yang salah di file phpnya, coba diperiksa lagi mas.. =)

Reply
avatar
Aji Setya
admin
26 April 2017 at 12:41 ×

wah apa itu om, posisi ga di jogjakarta, grupnya ada kah? =D

Reply
avatar
Unknown
admin
28 April 2017 at 14:09 ×

Mas saya udah coba dan ga ada error cuma pas login kenapa ga masuk ke halaman berikutnya ya?padahal udah sesuai kodingnya startActivity(new Intent(context, MainActivity.class)); tapi kaya ga ada respon gitu mas..mohon pencerahannya ya maklum pemula hehe

Reply
avatar
Aji Setya
admin
30 April 2017 at 06:29 ×

mm.. coba cek di android manifest mas, apa activitynya sudah terdaftar atau belum..

Reply
avatar
asep sofyana
admin
2 May 2017 at 09:07 ×

Wah iya mas ternyata belum terdaftar .. sekarang udah bisa jalan programnya, terimakasih banyak bantuannya..klo nanti ada kendala boleh tanya2 lg ya mas hehe

Reply
avatar
Aji Setya
admin
2 May 2017 at 10:34 ×

iya mas sama-sama.. silahkan mas, bisa kita diskusikan disini.. :-bd

Reply
avatar
18 May 2017 at 17:07 ×

mantap tutorialnya gan hehe..ane udh coba tutorial ente, tpi pas masuk ke aplikasinya, knp pas ane register,si data registernya itu ga masuk ke database gan? Trus ane coba insert data dari database, tpi pas ane cobain ke login, malah ga masuk? Itu knp ya gan? Makasih sebelumnya gan..

Reply
avatar
Aji Setya
admin
19 May 2017 at 12:48 ×

hehe terimkasih gan, coba agan cek kode antara php dan javanya gan, mungkin ada yang beda, atau belum konek ke database mysql..

Reply
avatar
21 May 2017 at 16:37 ×

oke sip gan.. btw kalo versi android querynya beda kira2 ngaruh ga ke databasenya gan? soalnya punya ane pake versi android-query-full.0.26.8.jar gan

Reply
avatar
Aji Setya
admin
22 May 2017 at 18:08 ×

bisa om, silahkan dicoba, jika ada kesalahan coba cek dulu dokumentasi dari web resmi android querynya.. semoga membantu om hehe

Reply
avatar
26 May 2017 at 18:14 ×

gan saya ada error pada saat run app nya :
ini pesane error nya :
no main manifest attribute, in F:\ASProject\Login\app\libs\android-query-full.0.23.16.jar

Reply
avatar
Aji Setya
admin
30 May 2017 at 17:31 ×

coba agan cek kembali librarinya, apakah librari terinstql dengan benar..

Reply
avatar
Unknown
admin
3 June 2017 at 02:49 ×

mas,mau tanya,buat paket gimana sih ,ane buat activity baru yang muncul .com bla bla bla,tapi ane pilih ada pilihan activity tapi gak bisa?

Reply
avatar
Aji Setya
admin
3 June 2017 at 10:18 ×

untuk membuat package baru, dengan cara klik kanan di folder java kemudian pilih new -> package, dan untuk membuat activity baru dengna cara new -> activity

semoga membantu..

Reply
avatar
4 June 2017 at 00:17 ×

mas maksud nya masukkan semua activity kedalam package activity gimana yah?

Reply
avatar
Aji Setya
admin
4 June 2017 at 08:52 ×

itu untuk mengategorikan class mass, optional saja..

Reply
avatar
8 June 2017 at 05:21 ×

Mas punya saya regis bisa tapi pas login nya ga bisa terus ya? Mohon bantuannya masuh belajar

Reply
avatar
9 June 2017 at 13:45 ×

masalahnya sama gan , compile not found :( padahal udah benar udah di update juga

Reply
avatar
9 June 2017 at 14:52 ×

import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.blogsetyaaji.pesantrenidn.Helper.Helper;
import com.blogsetyaaji.pesantrenidn.R;

itu kenapa kok tidak bisa impor ya gan nuhun

Reply
avatar
13 June 2017 at 10:51 ×

sudah bisa mas, terima kasih..
nice blog

Reply
avatar
Aji Setya
admin
15 June 2017 at 16:00 ×

coba dicek apakah nama packagenya sama mas..

Reply
avatar
Aji Setya
admin
15 June 2017 at 16:02 ×

terimakasih atas dukunganya mas =D

Reply
avatar
1 July 2017 at 14:18 ×

Mas mau tanya mas

aplikasi saya jalan cuma ketika register datanya tidak mau masuk mas
yang tampil cuma toas mengambil data dan stuck disana
ketika saya cek db, data nya masih kosong mas. kira -kira masalah nya dimana nya mas

mohon solusi nya mas

Reply
avatar
4 July 2017 at 09:29 ×

makash banyak ya gan infonya.. membantu bgt.
gan kalo logut gimana?

Reply
avatar
Cyborg
admin
17 July 2017 at 15:19 ×

error convert data json dan stuck di login dan register , mohon bantuaanya gan :(

Reply
avatar

Terimakasih atas kunjunganya.
Silahkan berkomentar dan beri kritik serta saran.
Jangan lupa difollow.

ConversionConversion EmoticonEmoticon