Pertama
Jika kalian belum mempunyai Aplikasi XAMPP, Bisa di download terlebih dahulu. Langsung di buka saja link di bawah ini...
Jika kalian belum tau caranya untuk menginstall XAMPP.. Bisa kunjungi artikel di bawah ini
Kedua
Pastikan XAMPP Anda sudah di aktifkan..
Ketiga
Buatlah databases sesuai dengan keinginan kalian... Untuk contoh, saya beri nama databases dengan db_latihan1...
Keempat
Tambahkan table di databases db_latihan1.. Sebagai contoh, saya disini menambahkan table dengan nama Tb_User
'create table tb_user(
id int(11) primary key auto_increment,
unique_id varchar(23) not null unique,
nama varchar(50) not null,
email varchar(100) not null unique,
encrypted_password varchar(80) not null,
salt varchar(10) not null
);'
Berikut ini adalah tampilan tb_user yang sudah
Kelima
Buatlah folder di dalam folder htdocs.. Sebagai contoh, saya membuat folder dengan nama latihan1. Lalu setelah itu buat lah folder include di dalam folder latihan1
htdocs -> latihan1 -> include
Keenam
Di dalam folder include buatlah file php dengan nama Config.php. Kelas ini berisi variable-variable Server kita..
'<?php
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", ""); // jika kalian menggunakan password.. masukan password nya
define("DB_DATABASE", "db_latihan1");
?>'
Ketujuh
Di dalam folder include buatlah file dengan nama DB_Connect.php . Kelas ini berfungsi untuk menghubungkan kita ke server...
'<?php
class DB_Connect {
private $conn;
// koneksi ke database
public function connect() {
require_once 'include/Config.php';
// koneksi ke mysql database
$this->conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
// return database handler
return $this->conn;
}
}
?>'
Kedelapan
Di Dalam folder include buatlah file DB_Function.php . Kelas ini berfungsi untuk menyimpan suatu fungsi yang didalam fungsi tersebut akan mengirim data ke server.
'<?php
class DB_Functions {
private $conn;
// constructor
function __construct() {
require_once 'DB_Connect.php';
// koneksi ke database
$db = new Db_Connect();
$this->conn = $db->connect();
}
// destructor
function __destruct() {
}
public function simpanUser($nama, $email, $password) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // encrypted password
$salt = $hash["salt"]; // salt
$stmt = $this->conn->prepare("INSERT INTO tbl_user(unique_id, nama, email, encrypted_password, salt) VALUES(?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $uuid, $nama, $email, $encrypted_password, $salt);
$result = $stmt->execute();
$stmt->close();
// cek jika sudah sukses
if ($result) {
$stmt = $this->conn->prepare("SELECT * FROM tbl_user WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $user;
} else {
return false;
}
}
/**
* Get user berdasarkan email dan password
*/
public function getUserByEmailAndPassword($email, $password) {
$stmt = $this->conn->prepare("SELECT * FROM tbl_user WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
// verifikasi password user
$salt = $user['salt'];
$encrypted_password = $user['encrypted_password'];
$hash = $this->checkhashSSHA($salt, $password);
// cek password jika sesuai
if ($encrypted_password == $hash) {
// autentikasi user berhasil
return $user;
}
} else {
return NULL;
}
}
/**
* Cek User ada atau tidak
*/
public function isUserExisted($email) {
$stmt = $this->conn->prepare("SELECT email from tbl_user WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
// user telah ada
$stmt->close();
return true;
} else {
// user belum ada
$stmt->close();
return false;
}
}
/**
* Encrypting password
* @param password
* returns salt and encrypted 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;
}
/**
* Decrypting password
* @param salt, password
* returns hash string
*/
public function checkhashSSHA($salt, $password) {
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
}
?>'
Kesembilan
Di dalam folder latihan1 buatlah file Login.php . Kelas ini berfungsi untuk login dengan parameternya email dan password.
'<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json response array
$response = array("error" => FALSE);
if (isset($_POST['email']) && isset($_POST['password'])) {
// menerima parameter POST ( email dan password )
$email = $_POST['email'];
$password = $_POST['password'];
// get the user by email and password
// get user berdasarkan email dan password
$user = $db->getUserByEmailAndPassword($email, $password);
if ($user != false) {
// user ditemukan
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["nama"] = $user["nama"];
$response["user"]["email"] = $user["email"];
echo json_encode($response);
} else {
// user tidak ditemukan password/email salah
$response["error"] = TRUE;
$response["error_msg"] = "Login gagal. Password/Email salah";
echo json_encode($response);
}
} else {
$response["error"] = TRUE;
$response["error_msg"] = "Parameter (email atau password) ada yang kurang";
echo json_encode($response);
}
?>'
Kesepuluh
Buatlah file php di dalam folder latihan1 dengan nama register.php . Kelas ini berfungsi untuk menerima data dari Android yang lalu diteruskan menyimpan data ke server.
'<?php
require_once 'include/DB_Function.php';
$db = new DB_Functions();
// json response array
$response = array("error" => FALSE);
if (isset($_POST['nama']) && isset($_POST['email']) && isset($_POST['password'])) {
// menerima parameter POST ( nama, email, password )
$nama = $_POST['nama'];
$email = $_POST['email'];
$password = $_POST['password'];
// Cek jika user ada dengan email yang sama
if ($db->isUserExisted($email)) {
// user telah ada
$response["error"] = TRUE;
$response["error_msg"] = "User telah ada dengan email " . $email;
echo json_encode($response);
} else {
// buat user baru
$user = $db->simpanUser($nama, $email, $password);
if ($user) {
// simpan user berhasil
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["nama"] = $user["nama"];
$response["user"]["email"] = $user["email"];
echo json_encode($response);
} else {
// gagal menyimpan user
$response["error"] = TRUE;
$response["error_msg"] = "Terjadi kesalahan saat melakukan registrasi";
echo json_encode($response);
}
}
} else {
$response["error"] = TRUE;
$response["error_msg"] = "Parameter (nama, email, atau password) ada yang kurang";
echo json_encode($response);
}
?>'
Kesebelas
Langkah terakhir, coba test terlebih dahulu API Login dan Register tersebut di Aplikasi Postman dengan menggunakan method POST. Apabila kalian belum mempunyai aplikasi Postman, Kalian bisa download di Link berikut
API Login : http://localhost/latihan1/login.php
API Register : http://localhost/latihan1/register.php
Response API Login :
{"error":false,"uid":"59de4ad3595037.83612840","user":{"nama":"rama","email":"rama@gmail.com"}}
Kalo misalkan telah muncul API seperti di atas.. Maka Login Telah Berhasil
Response API Register :
{"error":false,"uid":"59de4ad3595037.83612840","user":{"nama":"rama","email":"rama@gmail.com"}}
Kalo Misalkan telah muncul API Seperti di atas.. Maka Register Telah Berhasil
Sekian tutorial kali ini, semoga bisa bermanfaat bagi kita semua, apabila ada kesalahan dan kekurangan tolong di maafkan, karena kesalahan itu datang nya dari syaitan dan kebenaran itu datang nya dari Allah.
Apabila ada yang ingin di tanyakan, bisa langsung DB saya via FB, Instagram, Google Hangout dan WA
ko saya munculnya gini ya bro.
ReplyDelete{"error":true,"error_msg":"Parameter (nama, email, atau password) ada yang kurang"}
ohh.. mungin mas irfan ada yang belum di isi parameter nya
Deletecoba di cek lagi di bagian login.php nya
Deletesama saja juga error kaya gitu, mohon pencerahannya
Deletesama gan masih error
Deletegan mau tanya, kan itu field db nya ada
ReplyDeleteid, unique id, nama, email, encrypted password, & salt
nah untuk unique id & salt itu diisi apa ya?
mungkin bisa ditambahkan screenshoot saat ngisi fieldnya
sama saat dicoba dipostman muncul eror "{"error":true,"error_msg":"Parameter (nama, email, atau password) ada yang kurang"}" untuk file login sama registernya,
mohon pencerahannya gan