MASIGNCLEAN101

cURL dan Webservices(Studikasus:Login)

Licensi Dokumen :
Copyright © 2013 phpindonesia.net
Seluruh dokumen di phpindonesia.net dapat digunakan dimodifikasi dan di sebarkan secara bebas untuk tujuan
bukan komersial(non profit)dengan sarat tidak menghapus atau merubah atribut penulis dan pernyataan
copyright yang disertakan dalam setiap dokumen. Tidak di perbolehkan melakukan penulisan ulang. Kecuali
mendapatkan ijin terlebih dahulu dari phpindonesia.net.
Ter-inspirasi dari pertanyaan salah satu anggota di group FB PHP Indonesia, saya jadi kepikiran pengen Nulis tutorial ini. Walaupun sebener nya sudah banyak blog yang ngebahas tentang ini, disini saya cumanpengen menjelas kan dengan cara saya sendiri sekalian belajar menulis hehe..
PHP LOGIN
Pertanyaan nya kira-kira begini: bisa gak sih login ke website kita menggunakan akun website lain. Saya tertarik dengan jawaban OM cahya nsn, maaf om saya sebut2 nama nya, soal nya saya nge-fan haha…, klo gak salah begini jawaban beliau :

  1. Jika sistem yang satu bisa ngakses database sistem yang satunya lagi.. tinggal di konekin ke database tersebut untuk validasi loginnya
  2. Jika ingin menggunakan webservice, pastikan di sistem yang buat ngecek login-nya itu nyediain

API-nya, kalo nggak ada ya.. gak bisa tho?
pada tutorial kali ini saya akan membahas poin ke dua dari jawaban om cahya dsn.
sedikit gambaran : disini ada dua system, system A dan system B, untuk login ke system A
menggunakan Akun system B, pastinya system B harus menyediakan webservice(API). Yang nanti nya. API tersebut akan di gunakan untuk mengecek validitas username dan password yang dikirim oleh system B melalui GET/POST request dengan parameter username dan password. Kemudian respon yang akan di kasih oleh API tersebut bisa berbentuk XML atau jSON, dalam hal ini saya kan menggunakan jSON. Ok biar gak terkesan banyak basa basi mari kita langsung implementasi saja.
buat table “user” , sebagai contoh:
CREATE TABLE `user` (
 `email` varchar(100) NOT NULL,
 `username` varchar(100),
 `password` varchar(200),
PRIMARY KEY (`email`)
)

Contoh Data :
<?php
//Koneksi
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

//cek username.
$email = $_POST['email'];
$password = $_POST['password'];

$Q = mysql_query("SELECT * FROM user WHERE email='$email' AND PASSWORD='$password'")or die(mysql_error());
if($Q){
$posts = array();
if(mysql_num_rows($Q))
 {
while($post = mysql_fetch_assoc($Q)){
$posts[] = $post;
 }
 }
 echo json_encode(array('user'=>$posts));
}
?>

Respon yang akan di kemnalikan oleh skrip di atas berupa data jSON.
selanjut nya kita bikin satu folder lagi dengan nama "System_A" kita asusmsikan ini sebagai Sistem A.
buat file dengan nama 'formlogin.php' :
<form class="form-signin" action="" method="post">
<h2 class="form-signin-heading">
Please sign in</h2>
<input type="text" class="input-block-level" name="email" placeholder="Email address">
<input type="password" class="input-block-level" name="password" placeholder="Password">
<button class="btn btn-large btn-primary" type="submit">Sign in</button>
</form>

Skrip di bawah ini adalah fungsi Login Untuk Action Form di atas :
<?php
function doLogin($url,$email,$password){
 $datauser = array(
    //'API_key' => $key,
      'email' => $email, 'password' => $password,
);        
 $postdatauser = "";
 foreach($datauser as $k => $v){
   $postdatauser .=  $k . "=" . $v."&";
}
//$postData = http_build_query($user_data);
 $curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $postdatauser); //
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
 curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
 curl_setopt($curlHandle, CURLOPT_POST, 1);
 $string = curl_exec($curlHandle);
curl_close($curlHandle);
  return $string;
}?>

Usesage dari fungsi di atas sebagai berikut :
echo doLogin("http://localhost/sistem_A/api.php",$_POST["email"], $_POST["password"]);

skrip di atas akan menghasilkan output berupa jSON:
{"user":[
    {
"email":"faiz.fadly@gmail.com",
"username":"faiz fadly",
"password":"21232f297a57a5a743894a0e4a801fc3"
   }
]
}

Selanjut nya kita akan meng-convert String jSON di atas menjadi Array dengan fungsi json_decode
$string = doLogin("http://localhost/sistem_A/api.php",$username,$password);
$arr = json_decode($string,true);
$email = $arr['user'][0]['email'];
$password = $arr['user'][0]['password'];

Setelah itu kita akan melakukan pengecekan apakah user ada atau gak :
if($email !=''){
session_start();
$_SESSION['email'] = $email;
$_SESSION['password'] = $password;
header("Location:targethalamansuksess.php");//arahkan ke target halaman suksess
}else{
echo "Authentication Failed!";
}

Selesain. Semoga Bermanfaat  , tetap sehat tetap semangat biar bisa nulis trus.



Contoh di atas blom bisa di sebut API sesui dengan standar. terutama bagian login, pada umumnya login bisa menggunakan Basic Authentication atau OAuth(Oauth 1 dan 2). dan untuk koneksi API pun ada 2 legged dan 3 legged.
Share This :
Apradiz Renfaan

Penikmat Kopi dan Teh

avatar

Bisa dicontohkan melalu video gan?

13 March 2017 at 23:59
avatar

Tutorialnya membingungkan gan untuk saya yang pemula. Tolong di update lagi

18 July 2018 at 10:41