1. Apache Web Server dan mySQL bisa pake XAMPP download disini –> XAMPP
2. Eclipse dan Android SDK –> versi yang saya gunakan disini ada 2.3.3 Ginggerbeard
3. Notepad++ atau Dreamweaver terserah mau pake yang mana untuk edit file PHP
1 Buat Project baru pada Android
Seperti sebelumnya copykan file class JSONParser yang ada di postingan sebelumnya ke project ini. Setelah itu buat class baru bernama UserFunction.java. Nantinya class ini akan menghandle fungsi fungsi JSON dan HTTP-POST yang akan kita lakukan.(ingat class dan package yang saya gunakan dalam project ini adalah default dari komputer saya. jadi ketika anda melakukan copas cek sesuai dengan konfigurasi milik anda)
UserFunction.java
package com.eepis.android;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
public class UserFunctions {
private JSONParser jsonParser;
private static String loginURL = "http://10.0.2.2/tes/";
private static String login_tag = "login";
private static String register_tag = "register";
// constructor
public UserFunctions(){
jsonParser = new JSONParser();
}
public JSONObject loginUser(String email, String password){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
return json;
}
/**
* function make Login Request
* @param name
* @param email
* @param password
* */
public JSONObject registerUser(String name, String email, String password){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", register_tag));
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
// return json
return json;
}
}
LoginFormActivity.java
package com.eepis.android;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class LoginFormActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
//Deklarasi variabel view object
TextView error;
Button login,register;
EditText user,pwd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Registrasi view id
error=(TextView)findViewById(R.id.txt1);
login=(Button)findViewById(R.id.btn1);
login.setOnClickListener(this);
register=(Button)findViewById(R.id.btn2);
register.setOnClickListener(this);
user=(EditText)findViewById(R.id.edit1);
pwd=(EditText)findViewById(R.id.edit2);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn1:
//Memanggil fungsi login di class userfunction
UserFunctions userFunction = new UserFunctions();
JSONObject json = userFunction.loginUser(user.getText().toString(), pwd.getText().toString());
try {
if (json.getString("success") != null) {
error.setText("");
String res = json.getString("success");
if(Integer.parseInt(res) == 1){
Intent login = new Intent(LoginFormActivity.this,MemberActivity.class);
startActivity(login);
MemberActivity.session=user.getText().toString();
}else{
error.setText("username/password anda salah");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
case R.id.btn2:
//Memanggil fungsi register di class userfunction
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Registrasi");
alert.setMessage("Masukkan Data Anda");
// Set an EditText view to get user input
LinearLayout lay=new LinearLayout(this);
lay.setOrientation(LinearLayout.VERTICAL);
final EditText name = new EditText(this);
name.setHint("Nama");
final EditText email = new EditText(this);
email.setHint("Email");
final EditText password = new EditText(this);
password.setHint("Password");
lay.addView(name);
lay.addView(email);
lay.addView(password);
alert.setView(lay);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String nama = name.getText().toString();
String mail = email.getText().toString();
String pass = password.getText().toString();
UserFunctions userFunction = new UserFunctions();
JSONObject json = userFunction.registerUser(nama, mail, pass);
try {
if (json.getString("success") != null) {
String res = json.getString("success");
if(Integer.parseInt(res) == 1){
Toast.makeText(LoginFormActivity.this, "Registrasi Berhasll", 1).show();
}else{
Toast.makeText(LoginFormActivity.this, "Registrasi Gagal", 1).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
break;
default:
break;
}
}
}
MemberActivity.java
package com.eepis.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MemberActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button logout;
static String session="";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.member);
logout=(Button)findViewById(R.id.btn1);
logout.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
this.session="";
this.finish();
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eepis.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".LoginFormActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".MemberActivity" >
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
Bagian 2 Buat API yang menghandle request dari Android
Pada server side kita membuat API yang menangkap Http-Post yang kita kirim via android dan mengembalikannya ke kita dalam bentuk JSON
SQL file
<form action="index.php" method="post">
<p>tag: <input type="text" name="tag" /></p>
<p>name: <input type="text" name="name" /></p>
<p>email: <input type="text" name="email" /></p>
<p>password: <input type="text" name="password" /></p>
<input type="submit" name="submit" value="Submit" />
</form>
index.php
<?php
/**
File ini untuk menghandle API Request
hasilnya di encoda dalam bentuk JSON
/**
* check for POST request
*/
if (isset($_POST['tag']) && $_POST['tag'] != '') {
// Tag
$tag = $_POST['tag'];
// Database Handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// Response--> data yang akan dikembalikan
$response = array("tag" => $tag, "success" => 0);
// Cek tipe tag
if ($tag == 'login') {
// Tangkap data yang dikirim dari android
$email = $_POST['email'];
$password = $_POST['password'];
// Cek user
$user = $db->getUserByEmailAndPassword($email, $password);
if ($user != false) {
// User ditemukan
$response["success"] = 1;
echo json_encode($response);
} else {
// User tidak ditemukan
$response["success"] = 0;
echo json_encode($response);
}
}
else if ($tag == 'register') {
// Tangkap data yang dikirim dari android
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
// cek user sudah ada atau belum
if ($db->isUserExisted($email)) {
// User sudah ada
$response["success"] = 0;
$response["error_msg"] = "User sudah ada";
echo json_encode($response);
} else {
// Simpan user baru
$user = $db->storeUser($name, $email, $password);
if ($user) {
// Registrasi Berhasil
$response["success"] = 1;
echo json_encode($response);
} else {
// Registrasi Gagal
$response["success"] = 1;
echo json_encode($response);
}
}
}
else {
echo "Invalid Request";
}
} else {
echo "Access Denied";
}
?>
config.php
<?php
/**
* Database config variables
*/
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "tes");
?>
DB_Connect.php
<?php
class DB_Connect {
// constructor
function __construct() {
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {
require_once 'include/config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
// selecting database
mysql_select_db(DB_DATABASE);
// return database handler
return $con;
}
// Closing database connection
public function close() {
mysql_close();
}
}
?>
DB_Function.php
<?php
class DB_Functions {
private $db;
// constructor
function __construct() {
require_once 'DB_Connect.php';
// Koneksi ke database
$this->db = new DB_Connect();
$this->db->connect();
}
// destructor
function __destruct() {
}
public function storeUser($name, $email, $password) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // Enkripsi password
$salt = $hash["salt"]; // salt
$result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())");
// Cek registrasi berhasil
if ($result) {
return true;
} else {
return false;
}
}
/**
* Cek user di database
*/
public function getUserByEmailAndPassword($email, $password) {
$result = mysql_query("SELECT * FROM users WHERE email = '$email'") or die(mysql_error());
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
$salt = $result['salt'];
$encrypted_password = $result['encrypted_password'];
$hash = $this->checkhashSSHA($salt, $password);
// Cek kesamaan password
if ($encrypted_password == $hash) {
// Identifikasi berhasil
return true;
}
} else {
// User tidak ditemukan
return false;
}
}
/**
* Cek user exist atau tidak
*/
public function isUserExisted($email) {
$result = mysql_query("SELECT * from users WHERE email = '$email'");
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
// user existed
return true;
} else {
// user not existed
return false;
}
}
/**
Enkripsi password
*/
public function hashSSHA($password) {
$salt = sha1(rand());
$salt = substr($salt, 0, 10);
$encrypted = base64_encode(sha1($password . $salt, true) . $salt);
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
}
public function checkhashSSHA($salt, $password) {
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
}
?>
Bagian 3 Hasil running aplikasi
File JSON yang dikirim ke android berbentuk
// Jika berhasil
{"tag":"login","success":1}
// Jika gagal
{"tag":"login","success":0}
// Jika user exist
{"tag":"register","success":0,"error_msg":"User sudah ada"}
 



0 Komentar