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.
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.
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 :
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 :
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
[…] 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
Balas
Ash
18 Mei 2021
Balas
firman
18 Mei 2021
Balas
andy
4 Januari 2022
Balas
firman
6 Januari 2022
Balas
Fattah
10 Januari 2022
Balas
Fattah
10 Januari 2022
saya sudah berhasil tapi data nggak ke simpan didatabase, tapi saat
saya ulang register katanya data sudah ada.
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
firman
2 min read
12 September 2022
PHP, Tutorial
firman
2 min read
12 September 2022
PHP
firman
14 min read
2 Oktober 2022