Dynamic Blinkie Text Generator at TextSpace.net

Feedburner

I heart FeedBurner

Senin, 12 Desember 2016

Materi Dasar PHP Curl

cURL dan Web Services (Studi Kasus: Login)
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 cuman pengen menjelas kan dengan cara saya sendiri sekalian belajar menulis hehe.. 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:
  1. CREATE TABLE user (      email varchar(100) NOT NULL,      username varchar(100),      password varchar(200), PRIMARY KEY (email) )
Contoh Data :
  1. 1.  INSERT INTO user (email,username,password) VALUES ('faiz.fadly@gmail.com','faiz fadly', '21232f297a57a5a743894a0e4a801fc3'); 2.   INSERT INTO user (email,username,password) VALUES ('faiz_fadli@yahoo.com','Adly', ' fe01ce2a7fbac8fafaed7c982a04e229');
Ket password :
  • 21232f297a57a5a743894a0e4a801fc3 = admin
  • fe01ce2a7fbac8fafaed7c982a04e229 = demo
Selanjut buat Folder baru di htdoc anda dengan nama "system_B" kita asusmsi kan sebagai Sistem B kemudian buat file baru dengan nama "api.php" di dalam folder "system_B". berikut script nya :
  1. 1.   <?php 2. //Koneksi 3.    mysql_connect("localhost", "root", "") or die(mysql_error()); 4.  mysql_select_db("test") or die(mysql_error()); 5.  6.    //cek username. 7.  $email    = $_POST['email']; 8.   $password = $_POST['password']; 9.     10.   $Q = mysql_query("SELECT * FROM user WHERE email='$email' 11.                      AND PASSWORD='$password'")or die(mysql_error()); 12.          if($Q){ 13.                  $posts = array(); 14.                   if(mysql_num_rows($Q)) 15.                  { 16.                          while($post = mysql_fetch_assoc($Q)){ 17.                           $posts[] = $post; 18.                           } 19.                    }  20.                     echo json_encode(array('user'=>$posts));                    21.      } 22.   ?>
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" :
  1. 1.   <form class="form-signin" action="" method="post"> 2.   <h2 class="form-signin-heading">Please sign in</h2> 3.    <input type="text" class="input-block-level" name="email" placeholder="Email address"> 4. <input type="password" class="input-block-level" name="password" placeholder="Password"> 5.   <button class="btn btn-large btn-primary" type="submit">Sign in</button> 6. </form>
Skrip di bawah ini adalah fungsi Login Untuk Action Form di atas :
  1. 1.   <?php 2. function doLogin($url,$email,$password){ 3.      4.            $datauser = array( 5.                            //'API_key' => $key, 6.                            'email' => $email, 7.                          'password' => $password, 8.           ); 9.          10.         $postdatauser = ""; 11.           foreach($datauser as $k => $v){ 12.                   $postdatauser .=  $k . "=" . $v."&"; 13.           } 14.    15.           //$postData = http_build_query($user_data); 16.         $curlHandle = curl_init(); 17.          curl_setopt($curlHandle, CURLOPT_URL, $url); 18.            curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $postdatauser); // 19.         curl_setopt($curlHandle, CURLOPT_HEADER, 0); 20.            curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); 21.            curl_setopt($curlHandle, CURLOPT_TIMEOUT,30); 22.           curl_setopt($curlHandle, CURLOPT_POST, 1); 23.          $string         = curl_exec($curlHandle); 24.           curl_close($curlHandle); 25.           26.         return $string; 27. }
Usesage dari fungsi di atas sebagai berikut :
  1. echo doLogin("http://localhost/sistem_A/api.php",$_POST[“email”], $_POST[“password”]);
skrip di atas akan menghasilkan output berupa jSON:
  1. 1.   {"user":[ 2.           { 3.             "email":"faiz.fadly@gmail.com", 4.              "username":"faiz fadly", 5.             "password":"21232f297a57a5a743894a0e4a801fc3" 6.           } 7.          ] 8. }
Selanjut nya kita akan meng-convert String jSON di atas menjadi Array dengan fungsi json_decode()
  1. 1.   $string   = doLogin("http://localhost/sistem_A/api.php",$username,$password); 2.  $arr      = json_decode($string,true); 3.   $email    = $arr['user'][0]['email']; 4.    $password = $arr['user'][0]['password'];
Setelah itu kita akan melakukan pengecekan apakah user ada atau gak :
  1. 1.   if($email !=''){ 2.           session_start(); 3.         $_SESSION['email']   = $email; 4.         $_SESSION['password']  = $password; 5.            header("Location:targethalamansuksess.php");//arahkan ke target halaman suksess 6.     }else{ 7.          echo "Authentication Failed!";         8.    }


NOTE
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.
temen2 bisa mempelajari REST dll
Selesain. Semoga Bermanfaat :) , tetap sehat tetap semangat biar bisa nulis trus :).
klo tulisan di atas agak susah di baca teman-teman bisa membaca disini

Tidak ada komentar:

Posting Komentar