Anda di halaman 1dari 33

PHP, PROGRAMMING

Membuat REST API Login


dan Register Dengan
MySQLi
7 min read

firman
11 September 2022

Share   

Hai kembali lagi di kodekreasi.com . Pada kesempatan kali ini saya akan
membagikan sebuah tutorial tentang cara membuat Rest API login dan
register dengan mysqli. Sedikit penjelasan pada tutorial PHP yang akan kita
buat kali ini ,kita akan membuat Rest Api pada sisi server dan untuk
mencobanya nanti kita akan menggunakan Aplikasi POSTMAN yang dapat
kalian download secara gratis. Untuk penggunaan sendiri Rest API login dan
register ini bisa kalian integrasikan dengan project aplikasi android yang
sedang kalian buat atau mau kalian integrasikan dengan website yang sedang
kalian buat. Untuk melakukan komunikasi ke database mysql pada tutorial ini
kita gunakan mysqli. Yuk langsung simak tutorialnya Membuat REST API Login
dan Register Dengan MysQLi.

Persiapan Membuat REST API Login dan


Register Dengan MySQLi
Untuk mengikuti Tutorial PHP kali ini ada beberapa hal yang perlu anda
siapkan diantaranya :

1. Pastikan anda telah menginstall text editor seperti Notepad++ ,Sublime


Text atau Visual Studio Code untuk menuliskan kode program yang akan
kalian buat.
2. Lakukan installasi Xampp pada laptop atau pc kalian.
3. Install Postman pada pc atau laptop kalian.

Langkah-langkah Membuat REST API Login dan


Register Dengan MySQLi
Buka php myadmin kemudian buat database baru.
Pastekan query berikut pada database yang telah kalian buat :
1 ‐‐ phpMyAdmin SQL Dump
2 ‐‐ version 4.9.0.1
3 ‐‐ https://www.phpmyadmin.net/
4 ‐‐
5 ‐‐ Host: localhost
6 ‐‐ Generation Time: Jan 18, 2020 at 03:48 PM
7 ‐‐ Server version: 10.4.6‐MariaDB
8 ‐‐ PHP Version: 7.1.32
9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
10 SET AUTOCOMMIT = 0;
11 START TRANSACTION;
12 SET time_zone = "+00:00";
13 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */
14 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */
15 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */
16 /*!40101 SET NAMES utf8mb4 */;
17 ‐‐
18 ‐‐ Database: `tes`
19 ‐‐
20 ‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
21 ‐‐
22 ‐‐ Table structure for table `users`
23 ‐‐
24 CREATE TABLE `users` (
25   `id` int(11) NOT NULL,
26   `user_username` varchar(255) COLLATE utf8mb4_unicode_ci NOT
27   `user_password` varchar(255) COLLATE utf8mb4_unicode_ci NOT
28   `unique_id` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL
29   `user_email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT
30 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
31 ‐‐
32 ‐‐ Indexes for dumped tables
33 ‐‐
34 ‐‐
35 ‐‐ Indexes for table `users`
36 ‐‐
37 ALTER TABLE `users`
38   ADD PRIMARY KEY (`id`);
39 ‐‐
40 ‐‐ AUTO_INCREMENT for dumped tables
41 ‐‐
42 ‐‐
43 ‐‐ AUTO_INCREMENT for table `users`
44 ‐‐
45 ALTER TABLE `users`
46   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
47 COMMIT;
48 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */
49 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */
50 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */

Buat folder project kalian didalam folder htdocs kalian.


Buka text editor kalian kemudian buat folder baru bernama config dan
simpan di folder project kalian.
Didalam folder config buat file dengan nama koneksi.php kemudian
isikan dengan skribt berikut :
1 <?php
2 $host     = 'localhost';
3 $user     = 'root'; // diisi dengan user database kalian biasanya
4                     // defaultnya bernama root jika kita belum 
5                     // merubahnya
6 $password = '';  //diisi dengan password database kalian biasanya
7                  // defaultnya kosong
8 $db       = 'tes'; //diisi dengan nama database kalian
9 $link = mysqli_connect($host, $user, $password, $db) or die(mysqli_error());
10 ?>

Sedikit penjelasan scribt diatas digunakan untuk melakukan koneksi ke


database kalian. Untuk melakukan koneksi kedatabase di sini kita
menggunakan mysqli.

Setelah itu keluar dari folder config dan buat file baru bernama
register.php dan isikan scribt sebagai berikut kemudian simpan di folder
project kalian tadi:

1 <?php 
2 //meng include kan halaman init.php
3 require_once "core/init.php";
4 // json response array
5 $response = array("error" => FALSE);
6 if (isset($_POST['name']) && isset($_POST['password']) && isset(
7   
8     // menerima parameter POST ( name, password, email )
9     $name = $_POST['name'];
10     $password = $_POST['password'];
11     $email = $_POST['email'];
12     //mengecek id apakah sudah pernah daftar atau belum
13     if( cek_nama($name) == 0 ){
14       //mendaftarkan user baru
15       $user = register_user($name, $password, $email);
16       if($user){
17         // simpan user berhasil
18         $response["error"] = FALSE;
19         $response["user"]["name"] = $user["user_username"];
20         $response["user"]["key"] = $user["unique_id"];
21         echo json_encode($response);
22       }else{
23         // gagal menyimpan user
24         $response["error"] = TRUE;
25         $response["error_msg"] = "Terjadi kesalahan saat melakukan        reg
26         echo json_encode($response);
27       }
28     }else{
29       // user telah ada
30       $response["error"] = TRUE;
31       $response["error_msg"] = "User telah ada ";
32       echo json_encode($response);
33     }
34 }
35 ?>

Untuk alur kerja dari scribt register diatas adalah menerima data user
kemudian mengecek apakah nama user sudah terdaftar atau belum jika belum
maka data akan disimpan kedalam database.
Buka folder config kemudian buat file baru dengan nama functions.php .
Isikan file functions.php dengan scribt program sebagai berikut :
1 <?php
1 <?php
2 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐ mendaftarkan user ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
2 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐ mendaftarkan user ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
3 function register_user($name, $password, $email){
3 function register_user($name, $password, $email){
4   global $link;
4   global $link;
5       
5       
6   //mencegah sql injection
6   //mencegah sql injection
7   $nama = escape($name);
7   $nama = escape($name);
8   $pass = escape($password);
8   $pass = escape($password);
9   
9   
10   $hash = hashSSHA($pass); //mengencrypt password
10   $hash = hashSSHA($pass); //mengencrypt password
11   
11   
12   $salt = $hash["salt"]; //berisi kode string random yang nantinya           
12   $salt = $hash["salt"]; //berisi kode string random yang nantinya           
13   
13   
14   $encrypted_password = $hash["encrypted"]; //mengambil data password yang su
14   $encrypted_password = $hash["encrypted"]; //mengambil data password yang su
15     
15     
16       
16       
17   $query = "INSERT INTO users(user_username, user_password, unique_id, user_e
17   $query = "INSERT INTO users(user_username, user_password, unique_id, user_e
18    
18    
19   $user_new = mysqli_query($link, $query);
20   if( $user_new ) {
21         $usr = "SELECT * FROM users WHERE user_username = '$nama'"
22         $result = mysqli_query($link, $usr);
23         $user = mysqli_fetch_assoc($result);
24         return $user;
25   }else{
26         return NULL;
27   }
28 }
29 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐ *** end *** ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
30   
31 //‐‐‐‐ mencegah sql injection ‐‐‐‐‐//
32 function escape($data){
33     global $link;
34     return mysqli_real_escape_string($link, $data);
35 }
36 //‐‐‐‐‐‐‐‐‐‐‐ *** end *** ‐‐‐‐‐‐‐‐‐//
37   
38 //‐‐‐ mengecek nama apakah sudah terdaftar atau belum ‐‐‐//
39 function cek_nama($name){
40     global $link;
41     $query = "SELECT * FROM users WHERE user_username = '$name'"
42     if( $result = mysqli_query($link, $query) ) return mysqli_num_rows(
43 }
44 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ *** end ***‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
45   
46 //‐‐‐‐‐‐‐‐‐‐‐‐ mengenkripsi password ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
47 function hashSSHA($password) {
48     $salt = sha1(rand());
49     $salt = substr($salt, 0, 10);
50     $encrypted = base64_encode(sha1($password . $salt, true) . 
51     $hash = array("salt" => $salt, "encrypted" => $encrypted);
52     return $hash;
53 }
54 //‐‐‐‐‐‐‐‐‐‐‐‐ *** end *** ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
55   
56 // ‐‐‐‐‐‐‐‐ mengenkripsi password yang dimasukkan user saat login ‐‐>
57 public function checkhashSSHA($salt, $password) {
58     $hash = base64_encode(sha1($password . $salt, true) . $salt
59     return $hash;
60 }
61 //‐‐‐‐‐‐‐‐‐‐‐‐ *** end *** ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
62 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ cek data user dan validasi‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
63 function cek_data_user($name,$pass){
64     global $link;
65     //mencegah sql injection
66     $nama = escape($name);
67     $password = escape($pass);
68      
69     $query  = "SELECT * FROM users WHERE user_username = '$nama'"
70     $result = mysqli_query($link, $query);
71     $data = mysqli_fetch_assoc($result);
72      
73     $unique_id = $data['unique_id'];
74     $encrypted_password = $data['user_password'];
75     // mengencrypt password
76     $hash = checkhashSSHA($unique_id, $password);
77     //validasi password
78     if($encrypted_password == $hash){
79         return $data;
80     }else{
81         return false;
82     }
83 }
84 //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ *** end *** ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐//
85 ?>
Kemudian keluar lagi dari folder config dan tambahkan folder baru
dengan nama core .
Masuk kedalam folder core kemudian tambahkan file baru dengan nama
init.php . Isikan file init.php dengan scribt seperti berikut ini :

1 <?php
2 require_once "config/koneksi.php";
3 require_once "config/functions.php";
4 ?>

Sebenarnya file init.php diatas hanya untuk memudahkan kita saat proses
include file-file yang akan kita butuhkan sehingga kita tidak perlu
mengincludekanya satu persatu lagi kedalam file tersebut cukup includekan
file init.php ini sehingga akan sangat menghemat waktu jika file yang akan
diincludekan cukup banyak.

Didalam folder project kalian dimana file register.php berada tambahkan


file baru dengan nama login.php . Isikan scribt berikut pada file login.php
:

1 <?php 
2 require_once "core/init.php";
3 //mengecek parameter post
4 if (isset($_POST['name']) && isset($_POST['password'])) {
5      
6     //menampung parameter ke dalam variabel
7     $nama  = $_POST['name'];
8     $pass = $_POST['password'];
9       
10     $user = cek_data_user($nama,$pass);//validasi user
11     if($user != false){
12         //jika berhasil login
13         $response["error"] = FALSE;
14         $response["user"]["name"] = $user["user_username"];
15         $response["user"]["user_key"] = $user["unique_id"];
16         echo json_encode($response);
17     }else{
18         // user tidak ditemukan password/email salah
19         $response["error"] = TRUE;
20         $response["error_msg"] = "Login gagal. Password/Nik salah"
21         echo json_encode($response);
22     }
23 }else{
24     $response["error"] = TRUE;
25     $response["error_msg"] = "Nik atau Password tidak boleh kosong !"
26     echo json_encode($response);
27 }
28 ?>

Jika kalian masih kebingungan tentang struktur file yang telah saya buat
berikut adalah gambar struktur file yang telah saya buat :
Testing Scribt Program :
Untuk melakukan pengetesan pada script program API Login dan Registrasi
Menggunakan PHP dan mysqli ini saya menggunakan POSTMAN . Aplikasi
POSTMAN disini akan bertindak sebagai REST client dari REST Api server
yang telah kita buat tadi dengan tujuan untuk mengetahui REST server dapat
berjalan atau tidak sebelum diimplementasikan ke REST client sesungguhnya.
Berikut adalah hasilnya :

Api register user

Untuk mencoba REST Api register yang telah kita buat menggunakan
postman terlebih dahulu atur methodnya menjadi POST kemudian di bagian
body 몭 form-data isikan data key dan valuenya seperti pada gambar
dibawah ,kemudian klik tombol send. Jika register berhasil maka akan
didapati response seperti pada gambar di bawah ini :

Api login user

Untuk pengetesan Api login ini hampir sama dengan Api register yaitu
menggunakan method POST ,akan tetapi pada bagian body nya kita rubah
menjadi seperti gambar dibawah serta url apinya pun kita ganti menjadi
seperti gambar dibawah ,kemudian klik tombol send. Jika login berhasil maka
akan didapati response seperti pada gambar di bawah ini :
Sekian penjelasan tentang tutorial PHP membuat REST Api login dan
register dengan MySQLi apabila kalian mengalami kesulitan atau error bisa
kalian tanyakan pada kolom komentar di bawah.

firman
11 September 2022

Share   

11 Comments

Cara Membuat Pagination PHP dan MySQL | KodeKreasi


2 Februari 2020

[…] Baca juga artikel saya yang lain tentang Membuat REST API Login
dan Register Dengan MySQLi […]

Balas

ant
6 Mei 2021
cara biar tampil di postman gimana?

Balas

firman
7 Mei 2021

Udah install postman ? … kalau udah tinggal buat request baru di


postman, kemudian copykan url login atau register seperti pada
gambar … method nya dibuat post dan paada bagian bodynya bisa
disamakan pada gambar …

Balas

Ash
18 Mei 2021

pas coba proses login di postman terdapat error Call to undefined


function checkhashSSHA몭몭

Balas

firman
18 Mei 2021

o iya ada yang kelupaan di file function harusnya ada fungsi


checkhashSSHA몭몭 … Sudah saya update kembali artikelnya silahkan
dicek kembali jika ada kesulitan bisa tinggalkan komentar lagi …
terima kasih

Balas
andy
4 Januari 2022

ini kenapa ya error

Parse error: syntax error, unexpected token “public”, expecting end of


file in C몭\xampp\htdocs\e-kas\config\functions.php on line 55

// ——– mengenkripsi password yang dimasukkan user saat login –>


public function checkhashSSHA몭$salt, $password) {
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
//———— *** end *** ————————-//

Balas

firman
6 Januari 2022

coba cek penulisan scribtnya lagi mas di file function baris 55 …


pastikan di deket tag buka tutup php harus dikasih spasi jangan ada
scribt yang menempel di tag buka tutup php

Balas

Fattah
10 Januari 2022

di postman sama kayak di gambar. tapi kok didatabase datanya nggak


ke simpen ya gan? satu lagi, saya register ulang, katanya datanya
sudah ada

Balas
Fattah
10 Januari 2022

saya sudah berhasil tapi data nggak ke simpan didatabase, tapi saat
saya ulang register katanya data sudah ada.

berkali kali saya refresh mySQL tetap sama.

Balas

Fattah
10 Januari 2022

udah masuk gan. ternyata harus di close open dulu…. thanks ya gan

Balas

firman
12 Januari 2022

hee ok lah kalau udah bisa , maaf baru buka kolom komentar

Balas

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai
*

Comment
Name* Email*

Website

Save my name and email in this browser for the next time I comment.

Submit

Related Posts

PHP

Apa itu implode explode php beserta contohnya


Hai kembali lagi di kodekreasi.com , diartikel kali ini kita akan
mempelajari...

firman
2 min read
12 September 2022
PHP, Tutorial

Cara Instal Composer di windows 10 dan Linux


Hai kembali lagi di kodekreasi.com , pada tutorial kali ini kita akan
mempelajari...

firman
2 min read
12 September 2022

PHP

Tutorial Membuat register Login Logout dengan


PHP dan Mysqli
Setelah pada tutorial sebelumnya kita telah membuat sebuah tampilan
html form register...

firman
14 min read
2 Oktober 2022

© 2022 Kodekreasi. All Rights Reserved

Anda mungkin juga menyukai