Proses pembuatan webservis

Pertama kita buat script untuk web service yang nantinya diletakkan di sistem A. Script ini nanti berfungsi untuk menangkap atau membaca GET request berupa data username dan password dari sistem lain, memproses validitasnya dan akhirnya mengenerate response dalam bentuk XML.

Sebelum kita buat scriptnya, kita ambil contoh struktur tabel username yang ada di sistem A adalah sbb:

CREATE TABLE `user` (

  `username` varchar(20),

  `password` varchar(20),

  PRIMARY KEY  (`username`)

)

 

dan berikut ini beberapa sampel datanya

INSERT INTO `user` VALUES ('user1', 'password1');
INSERT INTO `user` VALUES ('user2', 'password2');

 

Dalam sampel data username di atas, sengaja saya tidak enkrip passwordnya supaya terlihat oleh Anda ketika uji coba proses loginnya. Namun dalam implementasi yang sesungguhnya, sebaiknya dienkripsi ya…

Nah, kita bisa mulai membuat scriptnya sekarang.

service.php

<?php
 
// koneksi ke database di sistem A
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
 
// membaca username dari GET request
$user = $_GET['username'];
// membaca password dari GET request
$pass = $_GET['password'];
 
// membaca data password user berdasar usernamenya
$query = "SELECT * FROM user WHERE username = '$user'";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
$password = $data['password'];
 
// mencocokkan password user dari db dan dari GET request
// jika cocok, maka responnya TRUE, jika tidak cocok responnya FALSE
if ($pass == $password) $response = "TRUE";
else $response = "FALSE";
 
// membuat header dokumen XML
header('Content-Type: text/xml');
echo "<?xml version='1.0'?>";
 
// membuat tag data respon pada dokumen XML
echo "<data>";
echo "<response>".$response."</response>";
echo "</data>";
?>

 

 

Berikut ini adalah tampilan dokumen XML sebagai respon dari sistem A jika kita berikan GET request melalui URL

http://sistem-a/service.php?username=user1&password=xxxxx

Sedangkan berikut ini tampilan jika diberikan GET request melalui URL

http://sistem-a/service.php?username=user1&password=password1

 

Nah… selanjutnya, kita buat script di sistem B untuk proses login termasuk form loginnya.

index.html

<h1>Form Login</h1>
 
<form method="post" action="login.php">
<table>
  <tr><td>Username</td><td><input type="text" name="username"></td></tr>
  <tr><td>Password</td><td><input type="password" name="password"></td></tr>
  <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr>
</form>

 

login.php

<?php
 
// membaca username dari form login
$username = $_POST['username'];
// membaca password dari form login
$password = $_POST['password'];
 
// membuat URL GET request ke sistem A
$url = "http://sistem-a/service.php?username=".$username."&password=".$password; 
 
// mengirim GET request ke sistem A dan membaca respon XML dari sistem A
$bacaxml = simplexml_load_file($url);
 
// membaca data XML hasil dari respon sistem A
foreach($bacaxml->response as $respon)
{
  // jika responnya TRUE maka login sukses
  // jika FALSE maka login gagal
  if ($respon == "TRUE") echo "Login Sukses";
  else if ($respon == "FALSE") echo "Login Gagal";
 
?>

Keterangan:
Untuk membaca dan memparsing data XML yang diterima dari sistem A kita bisa menggunakan function 
simplexml_load_file().

Wah.. lantas cara mencoba script di atas bagaimana ya? kan ada dua 2 sistem yang berbeda tuh? jangan khawatir, Anda dapat mencoba script di atas melalui localhost (PC lokal) dan hosting. Kita misalkan localhost adalah sistem B nya dan hostingnya adalah sistem A nya. Jadi, Anda buat database user dan script service.php nya di hosting, dan script form loginnya di localhost. Selanjutnya Anda tinggal mengubah URL web servicenya saja ke URL hosting Anda.

Nah… mudah bukan membuatnya??

Ups… tunggu dulu, sistem di atas sebenarnya sudah berjalan, namun.. apakah tidak rawan bila menggunakan GET request seperti di atas. Artinya bisa saja ada sistem lain katakanlah C yang sebenarnya tidak berhak mengakses web service ke sistem A yang menggunakan service tersebut untuk sistem loginnya. Nah.. dengan demikian kita perlu memproteksi GET request tersebut. Caranya bagaimana? ya… kita bisa gunakan kode API. Kode API ini diberikan oleh sistem A kepada sistem B atau sistem yang berhak mengakses web servicenya. Kode API berfungsi sebagai password dalam melakukan GET request. Jika kode API yang dikirim melalui GET request oleh suatu sistem tidak dikenal oleh sistem A berarti sistem tersebut tidak berhak mengakses web servicenya.

OK… untuk mengimplementasikan kode API sebagai pengaman GET request dalam web service, kita sedikit modifikasi script di atas, baik di script service.php (di sistem A) maupun di login.php nya (di sistem B). Dalam contoh ini, misalkan kode API yang diberikan kepada sistem B oleh sistem A ini berbentuk string '1234′. Maka script service.php nya adalah

 

service.php

<?php
 
// koneksi ke database di sistem A
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
 
// membaca username dari GET request
$user = $_GET['username'];
// membaca password dari GET request
$pass = $_GET['password'];
// membaca kode API dari GET request
$api = $_GET['api'];
 
// jika kode API nya '1234' maka lakukan proses validasi username dan password
// jika kode API nya salah, maka proses validasi tidak dilakukan (diberikan respon "FALSE")
if ($api == "1234")
{
   // membaca data password user berdasar usernamenya
   $query = "SELECT * FROM user WHERE username = '$user'";
   $hasil = mysql_query($query);
   $data  = mysql_fetch_array($hasil);
   $password = $data['password'];
 
   // mencocokkan password user dari db dan dari GET request
   // jika cocok, maka responnya TRUE, jika tidak cocok responnya FALSE
   if ($pass == $password) $response = "TRUE";
   else $response = "FALSE";
}
else $response = "FALSE";
 
// membuat header dokumen XML
header('Content-Type: text/xml');
echo "<?xml version='1.0'?>";
 
// membuat tag data respon pada dokumen XML
echo "<data>";
echo "<response>".$response."</response>";
echo "</data>";
?>

 

 

Selanjutnya di sistem B, script login.php nya perlu kita ubah parameter GET requestnya

login.php

<?php
 
// membaca username dari form login
$username = $_POST['username'];
// membaca password dari form login
$password = $_POST['password'];
 
// membuat URL GET request ke sistem A
$url = "http://sistem-a/service.php?username=".$username."&password=".$password."&api=1234"; 
 
// mengirim GET request ke sistem A dan membaca respon XML dari sistem A
$bacaxml = simplexml_load_file($url);
 
// membaca data XML hasil dari respon sistem A
foreach($bacaxml->response as $respon)
{
  // jika responnya TRUE maka login sukses
  // jika FALSE maka login gagal
  if ($respon == "TRUE") echo "Login Sukses";
  else if ($respon == "FALSE") echo "Login Gagal";
 
?>

OK, that's it.. cara pengaplikasian kode API dalam web service.

Semua tulisan dan scrip ini bukan saya yang membuat saya hanya mengambil dari

http://blog.rosihanari.net/membuat-web-service-sederhana-studi-kasus-proses-login/

silahkan kunjungi halaman diatas untuk lebih jelasnya dan berkonsultasilah pada beliau pemilik script ini.


Tidak ada komentar:

Posting Komentar

monggo komentar wonten mriki(silahkan berkomentar disini)