Selasa, 10 Desember 2013

WEB SERVICE

Web Service
Web service adalah suatu sistem yang mendukung interoperabilitas dan interaksi antar sistem pada suatu jaringan. Teknologi web service menawarkan kemudahan menjembatani setiap informasi tanpa mempermasalahkan perbedaan teknologi yang digunakan oleh masing-masing sumber.
Web service menggunakan format XML dalam melakukan pertukaran data, sehingga dapat diakses oleh sistem lain walaupin berbeda platform, sistem operasi maupun berbeda bahasa pemrograman.
Web service bertujuan meningkatkan kolaborasi antar pemrogram dan perusahaan, yang memungkinkan sebuah fungsi di dalam web service dapat dipinjam oleh aplikasi lain tanpa perlu mengetahui detil pemrograman yang terdapat di dalamnya.
Ada beberapa pendekatan mengimplementasikan web service. Tiga yang paling banyak digunakan adalah Representational State Transfer (REST), XML-RPC, dan SOAP. Namun kebanyakan aplikasi enterprise menggunakan SOAP. Yang akan saya bahas dalam artikel kali ini adalah SOAP saja..
SOAP (Simple Object Access Protocol) merupakan protokol yang digunakan untuk mempertukarkan data atau informasi dalam format XML. SOAP dapat dikatakan sebagai gabungan antara HTTP dengan XML karena SOAP umumnya menggunakan protocol HTTP sebagai sarana transport datanya dan data akan dipertukarkan ditulis dalam format XML. Karena SOAP mengunakan HTTP dan XML maka SOAP memungkinkan pihak-pihak yang mempunyai platform, system operasi dan perangkat lunak yang berbeda dapat saling mempertukarkan datanya.
Dalam PHP sendiri terdapat suatu file library yang dapat digunakan untuk mencreate SOAP Sever yaitu menggunakan NuSOAP (http://sourceforge.net/projects/nusoap/)
NuSOAP adalah salah satu dari sekian toolkit yang tersedia untuk programmer PHP yang ingin bekerja dengan layanan SOAP. Keunggulan yang ditawarkan oleh NuSOAP adalah karena kesederhanaan sebab justru karena sederhana dan mudah sehingga kecepatannya menjadi lebih baik. Adanya NuSOAP menyebabkan peningkatan keuntungan menggunakan bahasa PHP sebagai bahasa pemrograman.
Code NuSOAP Serverr
<?php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the server instance
$server = new soap_server;
// Register the method to expose
$server->register('hello');
// Define the method as a PHP function
function hello($name) {
return 'Hello, ' . $name;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
Code NuSOAP Client
<?php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the client instance
$client = new soapclient('http://localhost/phphack/helloworld.php');
// Call the SOAP method
$result = $client->call('hello', array('name' => 'Scott'));
// Display the result
print_r($result);
?>


PHP Security

PHP Security
PHP merupakan bahasa pemrograman yang paling banyak digunakan untuk develop aplikasi web, karena kemudahannya, simple, dan support multi platform. Oleh karena itu banyak sekali serangan-serangan ke web dengan bahasa pemrograman PHP dibanding dengan bahasa pemrograman yang lain. Berikut beberapa kemungkinan serangan yang dilakukan ke Web PHP:
 SQL Injection, adalah salah satu cara yang paling sering digunakan oleh hacker untuk menyerang web dengan memanfaatkan kelemahan coding di scirpt PHP. Cara ini dilakukan dengan menyerang url dan form yang akan melakukan eksekusi script sql tanpa melindungi variabel yang dikirim.
 Posting Spam, adalah dengan mengirim data ke form dalam jumlah yang sangat banyak, sehingga membuat isi tabel di database menjadi sangat besar. Cara ini dapat dilakukan dengan menggunakan script yang langsung mengeksekusi insert ke form.
 PHP Shell, adalah menanam script PHP di server yang dapat di eksekusi sewaktu-waktu untuk merusak content, DB dan script web itu sendiri, Cara ini dapat dilakukan dengan memanfaatkan form upload yang belum tervalidasi atau dapat juga memanfaatkan hak akses direktori.
 HTML Injection, adalah memposting script2 html, css dan javascript melalui form yang belum tervalidasi untuk merusak tampilan/content web.
Masih banyak jenis serangan-serangan ke web PHP selain ke-4 cara diatas, yang mungkin tidak kita persiapan untuk mencegahnya. Berikut beberapa cara untuk menghindari beberapa serangan tersebut, paling tidak untuk meminimalkan serangan ke web kita:
1. Error reporting, adalah cara untuk tidak menampilkan pesan saat web kita error, karena sangat berbahaya jika sampai nama tabel-tabel kita bisa terbaca, akan memungkinkan untuk melakukan sql injection atau serangan yang lain. Caranya adalah dengan setting di php.ini yaitu : display_errors = Off saat web sudah online, meskipun saat development di localhost bisa kita set display_errors = On untuk mempermudah develop web tsb.
2. Validasi variabel yang akan dieksekusi sql, digunakan untuk menghindari sql injection yaitu dengan cara menggunakan fungsi mysql_real_escape_string()
$studentName = mysql_real_escape_string($_POST['student_name'], $db);
$queryResult = mysql_query("INSERT INTO Students (name) VALUE ('{$studentName}')");
3. Direktori akses, untuk direktori tujuan upload gunakan hak akses 755 jangan sampai membuka akses menjadi 777 karena sangat mudah sekali akses public untuk menaruh file PHP shell.
4. Tambahkan file .htaccess untuk men disable direktori upload untuk eksekusi file .php
<FilesMatch "\.(php|htm|css|js)$">
Deny from all
</FilesMatch>
5. Validasi upload form, jika aplikasi anda memperbolehkan upload file ke server, lakukan validasi jenis tipe file apa saja yg boleh diupload, tutup koneksi upload untuk file type php, html, css atau js. Untuk mengambil type file gunakan perintah $_FILES['type'] di php.
6. Gunakan captcha untuk script login admin atau form comment yang bersifah public.
Beberapa cara diatas paling tidak dapat meminimalkan serangan-serangan ke web, meskipun masih banyak cara lain yang dapat digunakan untuk mencegahnya.. Jika ada tambahan cara-cara yang lain silahkan ditambahkan di comment.

CodeIgniter Framework

CodeIgniter Framework
Codeigniter(CI) adalah Framework PHP yang populer dan banyak digunakan oleh perusahaan2 seperti amikom.ac.id, detik.com, kompas.com atau tvone.co.id
CI sudah menggunakan teknologi MVC, yaitu suatu konsep yang cukup populer dalam pembangunan aplikasi web. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, user interface, dan bagian yang menjadi kontrol aplikasi.
Beberapa fitur yang diberikan CI antara lain: Interaksi dengan database apapun dengan satu bahasa tunggal, manajemen session dan cookies, validasi user input, Membangun html seperti tabel, form, link, dan lainnya dengan kode minimal, komunikasi dengan xmlrpc, ftp, captcha, rss dan teknologi lainnya.
Selain beberapa fitur yang sudan ada tersebut, kita juga bisa menambahkan class-class library di CI dengan mudah.
Dan beberpa kelebihan CI dibanding Framework PHP yang lain adalah:
 Performa sangat cepat : salah satu alasan tidak menggunakan framework adalah karena eksekusinya yang lebih lambat daripada PHP from the scracth, tapi Codeigniter sangat cepat bahkan mungkin bisa dibilang codeigniter merupakan framework yang paling cepat dibanding framework yang lain.
 Konfigurasi yang sangat minim (nearly zero configuration) : tentu saja untuk menyesuaikan dengan database dan keleluasaan routing tetap diizinkan melakukan konfigurasi dengan mengubah beberapa file konfigurasi seperti database.php atau autoload.php, namun untuk menggunakan codeigniter dengan setting standard, anda hanya perlu merubah sedikit saja file pada folder config.
 Banyak komunitas: dengan banyaknya komunitas CI ini, memudahkan kita untuk berinteraksi dengan yang lain, baik itu bertanya atau teknologi terbaru.
 Dokumentasi yang sangat lengkap : Setiap paket instalasi codeigniter sudah disertai user guide yang sangat bagus dan lengkap untuk dijadikan permulaan, bahasanya pun mudah dipahami.
Langkah2 Installasi atau Setup awal menggunakan CI
1. Ekstrack file .zip dari hasil download CI
2. Optional edit file index.php ubah baris ke 60 dan baris ke 76, $system_path bisa anda ubah sesuai nama folder di CI anda dan $application_folder juga dapat dirubah dengan nama lain.
3. Edit file /applicaiton/config/config.php baris ke 17, edit base_url sesuai dengan alamat web project anda
4. Default controller adalah /application/controllers/welcome.php dapat anda ubah dari file /application/config/routes.php
5. akses alamat web project anda melalui browser
6. Untuk penambahan file2 php dapat di lakukan di folder /application/controllers, /application/models dan /application/views

PHP FRAMEWORK

PHP Framework
Framework adalah sebuah lingkungan pengembangan aplikasi berbasis php yang berisi sejumlah class-class yang telah dibuat agar bisa digunakan kembali untuk membuat aplikasi dengan cepat dan efisien. Jenis class-class tsb tergantung tujuan dari php framework tersebut, phpframework yang satu dengan framework yang lain kemungkinan berbeda. Tetapi sebagian besar, php framework yang tersedia saat ini berbasis MVC (model view controller), ini model php framework yang modern.
Jika kita bekerja dengan suatu framework, maka harus mengikuti aturan dari framework tersebut. Karena inilah perusahaan lebih senang menggunakan framework daripada membiarkan si programmer dengan style nya sendiri.
Keuntungan Menggunakan Framework :
 Mempercepat dan mempermudah pembangunan sebuah aplikasi PHP.
 Relatif memudahkan dalam proses maintenance karena sudah ada pola tertentu dalam sebuah framework (dengan syarat programmer mengikuti pola standar yang ada)
 Umumnya framework menyediakan fasilitas-fasilitas
 yang umum dipakai sehingga kita tidak perlu membangun dari awal (misalnya validasi, ORM, pagination, multiple database, scaffolding, pengaturan session, error handling, dll)
MVC Pattern :
 MVC (Model View Controller) merupakan suatu metode untuk memisahkan pengedali logika dan pengendali tampilan.
 Model : mengandung fungsi-fungsi untuk berkomunikasi dengan database
 View : Berurusan dengan tampilan yang terlihat user
 Controller : Proses logika, pemeriksaan input, relasi view dan model, dan pengaturan hal-hal yang dilakukan diatur di sini

PHP Adodb

PHP Adodb
Sebelumnya telah kita pelajari OOP di PHP dan PHP-Mysql, kali ini kita akan menggunakan suatu library menggunakan OOP di PHP untuk mengakses Database. Kali ini kita gunakan PHP ADOdb dan dapat didownload di http://sourceforge.net/projects/adodb/files/ atau dokumentasi dari library tersebut di http://phplens.com/adodb/index.html
Keuntungan kita menggunakan library ADOdb adalah:
Support beberapa macam Database, seperti MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, Interbase (Firebird and Borland variants), Foxpro, Access, ADO and ODBC.
 Tidak hanya fokus ke select statement saja, juga support untuk insert, delete, dan update
 Konfigurasi mudah
 Efisien dalam development
Tahapan menggunakan ADOdb
1. Download dari sourceforge.
2. Extract file zip ke directori web.
3. Gunakan database manager (ex, phpmyadmin, sqlyog, mysqlfront).
4. Buat database untuk contoh (ex, “phonebook”).
5. Buat table (ex, “people”).
6. Tuliskan kode berikut dan simpan sebagai file php. Letakkan di directori yang sama dengan folder adodb
<?php
include('adodb/adodb.inc.php');
$databasetype = 'mysql';
$server = 'localhost';
$user = 'root';
$password = 'r0ot';
$database = 'inventory';
$db = ADONewConnection($databasetype);
$db->debug = true;
$db->Connect($server, $user, $password, $database);
$rs = $db->Execute('select firstname,lastname,mobile,work,email from people');
print_r($rs->GetRows());
?>
Referensi selengkapnya silahkan akses url berikut http://www.phpeveryday.com/articles/PHP-ADOdb-Tutorial-P844.html

Akses Database PHP dan MySQL

PHP – Mysql
Database Mysql paling sering digunakan untuk penyimpanan data di PHP, artikel berikut akan dibahas step-by-step menghubungkan PHP dan database Mysql.
Sebelum mengakses data-data yang ada di Mysql, kita harus membuat koneksi terlebih dahulu ke Mysql dengan cara seperti ini:
mysql_connect(servername,username,password);
Setelah script koneksi diatas kita, gunakan script berikut untuk memilih nama database
mysql_select_db(dbname);
Untuk melakukan query ke database seperti select, update, insert dan delete kita bisa menggunakan fungsi berikut:
mysql_query(string-query);
Khusus untuk query “select” kita dapat gunakan beberapa fungsi untuk mengambil data hasil dari query tersebut, yaitu:
mysql_fetch_array(var-query);
mysql_fetch_assoc(var-query);
mysql_fetch_row(var-query);
Ketiga fungsi tersebut dapat kita tampilkan menggunakan perulangan di PHP, berikut penjelasan untuk masing-masing fungsi tersebut:
 mysql_fetch_array(), mengambil data hasil query dalam bentuk array assosiasi atau numeric array
 mysql_fetch_assoc(), mengambil data hasil query dalam bentuk array assosiasi
 mysql_fetch_row(), mengambil data hasil query dalam bentuik numeric array. Saran saya jangan gunakan fungsi ini, karena array harus sesuai dengan select field di query
Dan terakhir, untuk menutup query kita gunakan fungsi
mysql_close(var-koneksi);
Berikut script lengkap dari penjelasan diatas
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT FirstName, LastName FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
mysql_close($con);
?>

OOP di PHP

OOP
Pada bahasa pemrograman PHP di kenal juga istilah Object Oriented Programming (OOP), disini akan di bahasa mulai dari class, function dan penggunaan OOP di PHP. PHP 5 memberikan performa yang lebih baik dan fitur baru dibandingkan versi sebelumnya. Class atau Object Modul PHP banyak tersedia di internet, seperti di phpclasses, di sana kita bisa mendapatkan class-class siap pakai. Untuk dapat menggunakan class tersebut kita harus memahami konsep OOP.
Kita dapat membuat suatu class php di file tersendiri dan menggunakannya di beberapa file yang lain. Misalkan kita buat file class_lib.php dengan kode sebagai berikut
<?php
class person {
var $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
?>
Dan kita dapat menggunakan class tersebut dengan cara sbb:
<?php include("class_lib.php"); ?>
<?php
$jack = new person();
$robin = new person;
$jack->set_name("Jack Wilshere");
$robin->set_name("Robin van Persie");
echo "Jack's full name: " . $jack->get_name();
echo "Robin's full name: " . $robin->get_name();
?>


Session dan Cookies PHP

Session dan Cookies
Cookies
Cookie biasanya digunakan untuk mengidentifikasi user, Setiap user melalui browser yang meminta request ke server akan membawa juga cookie dari browser tersebut. Melalui PHP kita dapat membuat cookie ataupun menerima data cookie.
Dalam mengatur cookie terdapat 3 hal penting yang harus diperhatikan, yaitu:
 membuat variabel cookie dan memberi nilai awal cookie,
 mengambil data dari cookie yang telah kita buat sebelumnya,
 menghapus variabel cookie
Konsep cookie dalam pemrograman web gambarannya seperti berikut, Saat user login melalui browser dan login tersebut berhasil, maka dari server akan mengirim data cookie yang akan disimpan di client. Saat cookie tersebut tersimpan, kita dapat membuka halaman2 web yang membutuhkan validasi cookie. Saat kita logout, maka data cookie tersebut akan di hapus dan kita tidak dapat lagi membuka halaman2 web yang tervalidasi oleh cookie. Cookie dapat dihapus juga menggunakan waktu expired, jadi jika user tidak logout dalam batas waktu tertentu cookie akan otomatis terhapus, pengaturan tersebut dapat kita lakukan melalui PHP.
Berikut script untuk membuat cookie dan memberi nilai awal cookie, Pastikan menuliskan script tersebut sebelum tag <html>
<?php
// cookie dengan variabel user, bernilai Jack Wilshere, batas waktu 1 jam
setcookie("user", "Jack Wilshere", time()+3600);
// jika ingin menghilangkan batas waktu, tdk perlu parameter terakhir
setcookie("user", "Jack Wilshere");
?>
Dan untuk mengambil nilai cookie, dapat menggunakan fungsi berikut.. dan tentu saja fungsi print_r() tetap bisa digunakan untuk melihat data cookie apa saja yang tersimpan di client
<?php
// menampilkan data cookie
echo $_COOKIE["user"];
// cara untuk melihat semua data cookie
print_r($_COOKIE);
?>
Dan berikut script untuk menghapus data cookie
<?php
// set expire untuk session
setcookie("user", "", time()-3600);
?>
Session
Suatu variabel session PHP digunakan untuk menyimpan informasi tentang user, dan dapat di kenali di semua halaman web dalam satu aplikasi. Session di simpan di sisi server dan bersifat sementara, yaitu selama user belum keluar dari aplikasi atau session tersebut telah habis waktu gunanya (expired).
Session bekerja dengan menciptakan sebuah id unik (UID) untuk setiap user dan menyimpan di server berdasarkan UID tersebut.
Sebelum menyimpan variabel session di PHP, session harus di inisialisasi terlebih dahulu menggunakan fungsi session_start() dan fungsi tersebut harus dituliskan sebelum tag <html>
<?php session_start(); ?>
<html>
<body>
</body>
<html>
Fungsi tersebut akan mendaftarkan user ke server dan menetapkan id session (UID) untuk user.
Cara di PHP untuk menyimpan dan mengambil variabel session adalah dengan menggunakan variabel $ _SESSION
<?php
session_start();
//Menyimpan data sesi
$_SESSION['user'] = 'jack';
?>
Sedangkan jika ingin menghapus variabel session di server dapat menggunakan fungsi unset() atau session_destroy()
<?php
unset ($_SESSION['user']);
session_destroy();
?>
Fungsi unset() akan menghapus variabel session yang telah ditentukan saja, sedangkan fungsi session_destroy() akan menghapus semua session dan mengatur ulang session dari awal

Contoh Upload file PHP

Upload File
Suatu aplikasi web pasti banyak sekali berhubungan dengan upload file ke server, Cara upload suatu file ke server menggunakan PHP ada beberapa cara, antara lain menggunakan fungsi move_uploaded_file() atau menggunakan fungsi FTP.
Untuk membuat aplikasi upload, tambahkan atribut berikut enctype=”multipart/form-data” pada tag form html. Dan input untuk menampung file dari media penyimpanan gunakan type=”file”. Script html untuk form seperti berikut:
<form enctype="multipart/form-data" action="uploader.php" method="POST">
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
Script PHP untuk menerima beberapa komponen yang dikirim melalui form tersebut bisa dilihat menggunakan fungsi print array berikut:
<?php
print_r($_FILES['uploadedfile']);
?>
Setelah data dari form tersebut dapat kita baca, selanjutnya tinggal kita proses untuk di upload menggunakan FTP atau fungsi move_uploaded_file(). Berikut contoh script menggunakan fungsi move_uploaded_file() yang disimpan dangan nama file uploader.php sesuai action dari form HTML diatas
<?php
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>



PHP Socket

PHP Socket
Dalam socket programming, pasti berhubungan dengan port dan service. Misal kita mengakses port 80, dan service yang berjalan dari port 80 tersebut adalah web server. Port 22 untuk service SSH, port 21 untuk service FTP dan sebagainya.
Socket merupakan literal Connector antara port dan Program, dan socket programming adalah suatu programming untuk mengakses, menggunakan dan menyediakan service dalam suatu komunikasi atara server dan client menggunakan port tertentu.
Ada 2 macam protokol komunikasi yang dapat digunakan untuk socket programmin, yaitu:
1. Datagram Communication, atau biasa dikenal dengan istilah UDP(User Datagram Protocol). Datagram berupa connectionless protocol, yang berarti setiap saat kita dapat mengirim data ke server dan tidak akan di cek data tersebut sampai atau rusak.
2. Stream Communication, atau biasa dikenal dengan istilah TCP(Transfer Control Protocol). Tidak seperti UDP, TCP merupakan connection-oriented protocol yaitu saat terjadi komunikasi harus ada pairing(terbangun koneksi antar server-client) setelah itu pengiriman data baru dapat dilakukan. Kerusakan atau kehilangan data dapat di tangani karena terdapat flag/tanda untuk pengecekan data.
Berikut contoh Script Socket Client, yang digunakan untuk mengakses domain amikom.ac.id menggunakan parameter GET
$fp = fsockopen ("amikom.ac.id", 80);
if ($fp) {
fwrite($fp, "GET / HTTP/1.1\r\nHOST: amikom.ac.id\r\n\r\n");
while (!feof($fp)) {
print fread($fp,256);
}
fclose ($fp);
} else {
print "Fatal error\n";
}
fungsi fsockopen() di atas akan membuka sebuah alamat server dengan port yang kita tentukan, kemudian setelah terjadi koneksi dengan server kita dapat meminta request dengan menggunakan protokol HTTP. Kita gunakan fungsi fwrite() untuk mengirim request tsb, pada contoh script diatas kita gunakan GET untuk meminta request ke server.
Berikut script Socket server menggunakan mode TCP, dengan fungsi membalik kata yang diinputkan dari user
<?php
$socket = socket_create_listen("9000");
if (!$socket) {
print "Failed to create socket!\n";
exit;
}
while (true) {
$client = socket_accept($socket);
$welcome = "\nWelcome to the Local machine.\n
Type '!close' to close this connection, or type '!halt'
to halt the server.\n";
socket_write($client, $welcome);
while (true) {
$input = trim(socket_read ($client, 256));
if ($input == '!close') {
break;
}
if ($input == '!halt') {
socket_close ($client);
break;
}
$output = strrev($input) . "\n";
socket_write($client, $output);
print "In: $input, Out: $output\n";
}
socket_close ($client);
}
 socket_close ($socket);
?>
Programming socket ini bisa digunakan untuk berkomunikasi antara low level programming dengan PHP, misal seperti device sensor yang dapat mengirim data ke server melalui Internet atau Device GPS yang mengirim data NMEA ke server melalui GPRS dan sebagainya.