Membuat Login Session Register Android PHP MYSQL Android Studio

Hai sobat, sudah setelah sekian lama meninggalkan bog ini karena tugas yang begitu banyak πŸ˜“, akhirnya sekarang saya punya kesempatan untuk lanjut membagikan pengetahuan saya di blog ini. Pada artikel kemarin saya telah menjelaskan tentang cara membuat animasi pada komponen Floating Action Button, dan kali ini saya akan melanjutkan artikel saya tentang Login Session Register pada Android mengunakan PHP dan MySQL sebagai sisi servernya.



Biasanya untuk masuk ke dalam aplikasi android, user diharuskan untuk mengisi datanya untuk bisa menggukana aplikasi android, hal tersebut biasa disebut dengan register user, Hah, setelah user memasukkan data dirinya ke dalam aplikasi, selanjutnya user diharuskan untuk mengecek kembali data yang dimiliki untuk bisa masuk ke dalam aplikasi android atau biasa disebut dengan proses login user. Jika data user ditemikan, maka user boleh mengukanakan aplikasi tersebut.

Pada peryataan diatas, maka untuk pengunaan sehari hari, user mungkin akan merasa kesulitan apabila user seperti dituntut untuk selalu melakukan login user setiap ingin menjalankan apalikasi android. Maka dari permasalahan tersebut, dalam sebuah aplikasi harus bisa menyimpan data user yang telah di cek atau login agar user tidak perlu login lagi apabiala ingin menjalankan alikasi android. Hal ini bisa dilakukan dengan menyediakan komponen dengan nama user session. Data user akan disimpan hingga user menghapusnya dari aplikasi, atau log out dari apalikasi.

Baca juga "Cara Mudah Melacak HP Android yang Hilang"

Untuk  membuat user session pada apilikasi android, kita bisa menggukanan komponen dengan nama SharePreference. Dengan menggunakan komponen ini, data user bisa disimpan dalam variable global dan dapat diakses kapanpun. Untuk membuat session pada aplikasi android, kita perlu menempatkanya dalam satu class global agar nantinya bisa diakses ke class lain yang membuatuhkan.

Pada artikel kali ini, saya akan melanjutkan artikel saya sebelumnya tentang login register mengunakan php dan mysql yang berjudul Membuat Android Login Register Mengunakan AQuery dan PHP MySQL. Juga saya akan menerapkan splash screen pada permulaan aplikasi dari artikel saya sebelumnya yang berjudul Membuat Android Welcome Screen atau Splash Sreen. Silahkan sobat coba tutorial dari artikel sebelumnya untuk membuat menerapkan tutorial yang ada di artikel ini. Oke sekarang kita mulai sob.. 😁

Membuka Project

Seperti yang sudah saya tulis di atas, saya menggunakan project dari artikel sebelumnya. Jika sudah ada, silahkan dibuka lalu lakukan langkah-langkah berikut ini.

Membuat Class SharePreference

Untuk menerapkan komponen SharePreference pada android, kita bisa letakkan pada class global. Silahkan buat class baru dengan nama SessionManager.java dan buat kodenya seperti berkut ini :


package com.example.ajisetya.loginaquery;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

import java.util.HashMap;

/**
 * Created by AJISETYA on 12/5/2016.
 */

public class SessionManager {

    SharedPreferences pref;
    SharedPreferences.Editor editor;
    Context context;
    int mode = 0;

    private static final String pref_name = "crudpref";
    private static final String is_login = "islogin";
    public static final String kunci_email = "keyemail";

    public SessionManager(Context context) {
        this.context = context;
        pref = context.getSharedPreferences(pref_name, mode);
        editor = pref.edit();
    }

    public void createSession(String email){
        editor.putBoolean(is_login, true);
        editor.putString(kunci_email, email);
        editor.commit();
    }

    public void checkLogin(){
        if (!this.is_login()){
            Intent i = new Intent(context, ActivityLogin.class);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }else {
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }

    private boolean is_login() {
        return pref.getBoolean(is_login, false);
    }

    public void logout(){
        editor.clear();
        editor.commit();
        Intent i = new Intent(context, ActivityLogin.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }

    public HashMap<String, String> getUserDetails(){
        HashMap<String, String> user = new HashMap<String, String>();
        user.put(pref_name, pref.getString(pref_name, null));
        user.put(kunci_email, pref.getString(kunci_email, null));
        return user;
    }

}


Penerapan Pada Class Lain

Nah pada class SessionManager.java, kita telah membuat method-method yang dibutuhkan untuk membuat session pada aplikasi android, selanjutnya kita panggil method tadi ke dalam class lain yang membuatuhkan.

Pertama kita akan terapkan method session manager pada ActivityLogin untuk membuat session baru ketika user masuk ke dalam aplikasi android. Silahkan buka ActivityLogin.java dan lakukan langkah berikut ini :

1. Deklarasikan kode session manager ke dalam ActivityLogin, untuk kodenya seperti berikut ini :


SessionManager sessionManager;


letakkan kode tersebut di atas atau diluar method onCreate.

2. Inisialisasikan session manager ke dalam ActivityLogin, tepatnya di dalam method onCreate, untuk kodenya seperti berikut ini :


sessionManager = new SessionManager(getApplicationContext());


3. Buat session baru saat user berhasil login, caranya dengan memasukkan kode berikut ke dalam method Login()


sessionManager.createSession(logtxtEmail.getText().toString());



Penerapan pada ActivityLogin telah selesai, selanjutnya kita terapkan pada MainActivity untuk mengambil data user. Sebelumnya saya telah siapkan satu komponen TexView dan satu Button ke dalam layout activity_main.xml, kodenya 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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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="com.example.ajisetya.loginaquery.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/txtprofil"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="86dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Display1" />

    <Button
        android:text="Logout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtprofil"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25dp"
        android:id="@+id/btnlogout" />
</RelativeLayout>


nah, selanjutnya kita akan menampilkan data session serta memberikan aksi log out pada tombol log out, caranya deklarasikan dan inisialisasikan session manager lalu kita panggil method yang ada pada class SessionManager.java. Pada class MainActivity.java kita buat kodenya seperti berikut ini :


package com.example.ajisetya.loginaquery;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    SessionManager sessionManager;

    private TextView txtprofil;
    private Button btnlogout;

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

        txtprofil = (TextView)findViewById(R.id.txtprofil);
        btnlogout = (Button)findViewById(R.id.btnlogout);
        btnlogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sessionManager.logout();
            }
        });

        sessionManager = new SessionManager(getApplicationContext());
        HashMap<String, String> user = sessionManager.getUserDetails();
        String name = user.get(SessionManager.kunci_email);
        txtprofil.setText(Html.fromHtml("<b>" + name + "</b>"));
    }
}


Kita telah mengambil data user pada MainActivity.java, selanjutnya kita buat agar ketika user ingin menjalankan aplikasi, user tidak perlu login kembali. Untuk melakukanya, kita buat kondisi pada splashscreen. Saat membuka aplikasi, akan tampil splash screen, saat itu juga aplikasi akan mengecek data user, jika data ditemukan, maka akan membuka activity utama atau MainActivity, jika data tidak ditemukan, maka akan membuka activity Login, untuk kodenya seperti berikut ini :


package com.example.ajisetya.loginaquery;

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

public class splashscreen extends AppCompatActivity {

    SessionManager sessionManager;

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

        sessionManager = new SessionManager(getApplicationContext());

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                sessionManager.checkLogin();
                finish();
            }
        },5000);
    }
}


Nah, tahap membuat session pada aplikasi android sudah selesai, untuk kode lengkapnya, silahkan bisa dibuka pada link di bawah ini sob πŸ‘‡πŸ‘‡πŸ‘‡

ActivityLogin.java, ActivityRegister,java 

Sampai di sini aplikasi sudah bisa dijalankan. Untuk tampilanya seperti berikut ini πŸ˜ƒπŸ‘‡


Membuat Login Session Register Android PHP MYSQL Android Studio

Membuat Login Session Register Android PHP MYSQL Android Studio

Membuat Login Session Register Android PHP MYSQL Android Studio


Nah, jika kita menjalankan aplikasi untuk pertama kalinya, jika user belum memiliki akun maka user harus membuat terlebih dahulu atau register. Jika sudah memiliki akun, maka user tinggal login aplikasi, jika login sukses, maka session akan dibuat. Data dalam session bisa ditampilkan dimanapun. Data session tidak akan hilang, maka user bisa membuka aplikasi tanpa harus login terlebih dahulu. Jika user menghapus data session atau log out, maka data akan terhapus dan user harus login lagi untuk membuka aplikasi. Begitulah penjelasannya sob hehe 😁

Oke, sekian artikel tentang login session pada android ini, semoga membantu dan bermanfaat. Jika sobat suka dengan artikel ini, silahkan komentar atau share artikel ini ke teman lain, karena berbagi itu indah πŸ‘ΌπŸ˜Š sampai jumpa..


Previous
Next Post »

34 komentar

Click here for komentar
Kunci-Gembok
admin
6 December 2016 at 10:49 ×

mantaf gan, makasih sharing ilmunya

Reply
avatar
Aji Setya
admin
6 December 2016 at 10:52 ×

hehe iya sama-sama om, makasih udah berkunjung om.. :-d

Reply
avatar
19 January 2017 at 23:18 ×

maaf bos numpang tanya kalo ini error apa ya, gimana cara memperbaikinya

Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

terimakasih

Reply
avatar
Aji Setya
admin
21 January 2017 at 11:54 ×

sepertinya itu masalah di pengaturan SDK dan pengaturan librari mas

Reply
avatar
8 February 2017 at 11:01 ×

maaf nih gan, ane nubi, itu databasenya pake apa ya gan?

Reply
avatar
Aji Setya
admin
11 February 2017 at 21:13 ×

pakai database mysql gan

Reply
avatar
24 February 2017 at 10:07 ×

penyimpanan databasenya dmana yan gan?? trus cara ngebedain kalo pake gmail atw yahoo gmana??

Reply
avatar
Aji Setya
admin
24 February 2017 at 17:24 ×

penyimpanan datanya di database MySql gan, silahkan bisa dilihat ditutorial sebelumnya, link ada di artikel..

kalau untuk mbedain itu harus pake validasi gan, jadi bisa pakai kondisi gitu..

Reply
avatar
dev ian
admin
13 April 2017 at 12:09 ×

kok begini ya bang? ini proses apa?
ini copy ke MainActivity jadi bgn.
http://prntscr.com/evtu78

Reply
avatar
Aji Setya
admin
13 April 2017 at 12:49 ×

yang dimaksud proses kaya gimana mas? kalau yang di gambar itu komponennya belum di inport gan, coba kursor arahkan ke yang merah, pilih lampu merah, pilih import =D

Reply
avatar
dev ian
admin
13 April 2017 at 13:58 ×

Maafbang, mksd saya ini script bagian ini fungsinya untuk apa?
btw ini kursor di arahkan ke yang merah malah begini, tdk bisa di import. thanks.
http://prntscr.com/evul2r
http://prntscr.com/evulm5

Reply
avatar
Aji Setya
admin
14 April 2017 at 13:01 ×

oo.. coba diklik yang merah om, sampe ada tanda lampu merah, jika tandanya udah muncul nanti akan muncul tulisan import ketika diklik

Reply
avatar
ade andri
admin
16 April 2017 at 14:36 ×

cara deklarasi di manifestnya gimana sob..

Reply
avatar
5 May 2017 at 22:15 ×

kak, buat tutorial buat aplikasi crud yang bisa nyambung ke user login dong. jadi pas menampilkan data hanya data si user itu sendiri aja yg ditampilkan. makasih kak

Reply
avatar
Aji Setya
admin
6 May 2017 at 08:29 ×

makasih udah berkunjung om..

deklarasi activity apa ya om? kalau deklarasi activity mending buat dgn cara klik kanan folder java -> new -> activity..

Reply
avatar
tumbulmark
admin
16 May 2017 at 16:08 ×

method getUserDetails() yg di mainactivity itu itu gaditemukan om

Reply
avatar
Aji Setya
admin
16 May 2017 at 20:08 ×

method itu dipanggil dari class SessionManager om..

Reply
avatar
Aji Setya
admin
16 May 2017 at 20:14 ×

siap mba, nanti kalau ada waktu akan saya buatkan tutorialnya, terimakasih atas masukan dan doronganya mba hehe

Reply
avatar
18 May 2017 at 16:50 ×

mantap tutorialnya gan heheh.. ane udh coba tutorial ente, tpi pas masuk ke aplikasinya, knp pas ane register, si datanya tuh ga masuk ke database ya gan? trus ane coba insert data dari database, tpi pas ane cobain di login aplikasinya, malah ga masuk? Itu knp ya gan? Makasih sebelumnya gan.

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

hehe terimakasih gan... untuk kasus itu coba agan cek kode parameter antara di php sama di java nya.. mungkin ada yang beda antara php sama javanya, atau javanya ga konek sama database mysql.. agan bisa cek di menu android monitor..

Reply
avatar
29 May 2017 at 05:32 ×

Gan bikin tutorial login dengan retrofit dan sharedpreferencenya juga dong. tutorial ini koneksi ke php servernya pake volley atau retrofit?

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

terimakasih atas dukunganya gan, sementara akan saya tampung dulu saranya hehe

tutorial ini menggunakan networking aquery gan..

Reply
avatar
4 June 2017 at 23:00 ×

mas,, kalo dibuat setiap user diberi max simal login gimana caranya

Reply
avatar
Aji Setya
admin
6 June 2017 at 06:13 ×

max login maksutnya pembatasan jumlah login mas?
untuk itu kita bisa menambah ! field baru di database utk menyimpan jumlah kali si user login
setiap login, data tersebut ditambah, dan aplikasi akan mengecek jumlah terlebih dahulu
jika jumlah sudah mencapai batas, maka aplikasi akan menjalankan perintah lain..

semoga membantu..

Reply
avatar
6 June 2017 at 08:42 ×

mas kalau kita ingin menampilkan nama user setelah login di activity berikutnya menggunakan apa ya?

Reply
avatar
Aji Setya
admin
6 June 2017 at 13:42 ×

caranya tinggal panggil methode penyimpan data user pada class SessionManager ke class yang diinginkan, kemudian terapkan pada komponen penampil data

sessionManager = new SessionManager(getApplicationContext());
HashMap user = sessionManager.getUserDetails();
String name = user.get(SessionManager.kunci_email);
txtnama.setText(name);

Reply
avatar
6 June 2017 at 14:08 ×

Mau tanya gan. Ada tutorial tentang vb.net gak yah.? yang 2010.awam banget ane soalnya.!!

Reply
avatar
16 June 2017 at 13:48 ×

tanya donk gan.., codingan ini "sessionManager.createSession(logtxtEmail.getText().toString());" taronya dimananya login yah.? ane msh blom paham..trims

Reply
avatar
Aji Setya
admin
19 June 2017 at 11:04 ×

naruhnya di dalam proses login mas, dibawah kodingan setelah user berhasil login..

Reply
avatar
21 June 2017 at 14:04 ×

codingan login sy sperti ini mas.. kira2 dtaruh dmnnya yah.? trims

public class login extends Activity {

Button daftar, login;
Intent a;
EditText email, password;
String url, success;
SessionManager session;

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

session = new SessionManager(getApplicationContext());
Toast.makeText(getApplicationContext(),
"User Login Status: " + session.isLoggedIn(), Toast.LENGTH_LONG)
.show();

login = (Button) findViewById(R.id.login);
email = (EditText) findViewById(R.id.email);
password = (EditText) findViewById(R.id.password);


login.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
url = "http://192.123.123.123/setyajai/test.php?" + "email="
+ email.getText().toString() + "&password="
+ password.getText().toString();

if (email.getText().toString().trim().length() > 0
&& password.getText().toString().trim().length() > 0)
{
new Masuk().execute();
}
else
{
Toast.makeText(getApplicationContext(), "Mohon isi Username dan password.!!", Toast.LENGTH_LONG).show();
}
}
});
}




public class Masuk extends AsyncTask
{
ArrayList> contactList = new ArrayList>();
ProgressDialog pDialog;

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();

pDialog = new ProgressDialog(login.this);
pDialog.setMessage("Mohon Tunggu...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
JSONParser jParser = new JSONParser();

JSONObject json = jParser.getJSONFromUrl(url);

try {
success = json.getString("success");

Log.e("error", "nilai sukses=" + success);

JSONArray hasil = json.getJSONArray("m_lapinhar");

if (success.equals("1")) {

for (int i = 0; i < hasil.length(); i++) {

JSONObject c = hasil.getJSONObject(i);


String nama = c.getString("nama").trim();
String email = c.getString("email").trim();
session.createLoginSession(nama, email);
Log.e("ok", " ambil data");

}
} else {
Log.e("erro", "tidak bisa ambil data 0");
}

} catch (Exception e) {
// TODO: handle exception
Log.e("error", "tidak bisa ambil data 1");
}

return null;

}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
pDialog.dismiss();
if (success.equals("1")) {
a = new Intent(login.this, MainActivity.class);
startActivity(a);
finish();
} else {

Toast.makeText(getApplicationContext(), "Username/password Salah.!!", Toast.LENGTH_LONG).show();
}


}

}

}


Reply
avatar
Aji Setya
admin
21 June 2017 at 20:48 ×

if (success.equals("1")) {
a = new Intent(login.this, MainActivity.class);
startActivity(a);
finish();
// di sini gan 😁
} else {

Reply
avatar
5 July 2017 at 09:40 ×

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

sessionManager = new SessionManager(getApplicationContext());

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
sessionManager.checkLogin();
finish();
}
},5000);
}

5000 fungsinya untuk apak mas? Terima kasih

Reply
avatar
5 July 2017 at 14:39 ×

gan fungsi code ini pada main.activity apa ya.?
sessionManager = new SessionManager(getApplicationContext());
HashMap user = sessionManager.getUserDetails();
String name = user.get(SessionManager.kunci_email);
txtprofil.setText(Html.fromHtml("" + name + ""));

trims

Reply
avatar
tracesia
admin
9 August 2017 at 16:16 ×

Kalau ini digaung dengan penggunaan email google untuk mendaftar bisa kan ya?

Reply
avatar

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

ConversionConversion EmoticonEmoticon