100% menganggap dokumen ini bermanfaat (1 suara)
376 tayangan

Modul Developer (Pemrograman Web - Mahir)

Modul ini membahas tentang pengantar framework web. Topik utama yang dibahas antara lain sejarah framework web, pengertian framework dan library, derajat keaktifan framework, pola desain framework, dan beberapa framework populer seperti CodeIgniter, CakePHP, Spring, dan ASP.NET MVC. Kelebihan menggunakan framework antara lain penggunaan kembali kode yang telah diuji dan meningkatkan produktivitas pengembangan aplikasi.

Diunggah oleh

Ivan Aries Rizaldy
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (1 suara)
376 tayangan

Modul Developer (Pemrograman Web - Mahir)

Modul ini membahas tentang pengantar framework web. Topik utama yang dibahas antara lain sejarah framework web, pengertian framework dan library, derajat keaktifan framework, pola desain framework, dan beberapa framework populer seperti CodeIgniter, CakePHP, Spring, dan ASP.NET MVC. Kelebihan menggunakan framework antara lain penggunaan kembali kode yang telah diuji dan meningkatkan produktivitas pengembangan aplikasi.

Diunggah oleh

Ivan Aries Rizaldy
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 184

MODUL

DEVELOPER
(PEMROGRAMAN WEB - MAHIR)

Balai Pelatihan dan Pengembangan


Teknologi Informasi dan Komunikasi (BPPTIK)
Kementerian Komunikasi dan Informatika
DAFTAR ISI
PELATIHAN DEVELOPER
(PEMROGRAMAN WEB - MAHIR)

Modul 1 Pengantar Framework Web

Modul 2 Review PHP

Modul 3 Review Database

Modul 4 Pengantar Code Igniter

Modul 5 Library

Modul 6 Validasi Form dan Interaksi Database

Modul 7 Otentikasi User

Modul 8 Keamanan Aplikasi

Pelatihan Developer
(Pemrograman Web - Mahir)
Local Training for IT Capacity Building
for Central and Local Government
Local Training for IT Capacity Building
for Central & Local Government

Pengantar Framework Web

Pemrograman Web - Mahir

MODUL 1

Ikhtisar Modul

Sejarah
Apa itu web framework?
Framework vs Libraries
Derajat keaktifan
Pola Framework
Framework Populer
Kelebihan menggunakan Framework
Kekurangan menggunakan Framework

2
Sejarah
World Wide Web (sering dikenal sebagai web) diciptakan pada tahun
1990
Pada awalnya web sangat statis. Pengguna tidak bisa berinteraksi
banyak dengan konten dan untuk mengupdate sepotong text (atau
sesuatu lainnya) dalam sebuah material yang dipublikasikan di web,
author harus mengedit halaman lokal dan menguploadnya ke server.
Untuk menghilangkan perkerjaan yang manual standar Common
Gateway Interface (CGI) menciptakan antarmuka aplikasi eksternal
dengan web server. CGI menciptakan sebuah proses baru untuk setiap
permuntaan ke server hasilnya beban yang berat pada sisi server ketika
berhadapan dengan sejumlah permintaan yang besar untuk sesuatu
pertumbuhan yang lebih efisien.
Pada tahun 1995 1996 pertumbuhan halaman web meningkat secara
damatis dan pada saat yang sama e-commerce berada disekitaranya.
ColdFusion, PHP dan ASP (Active Server Page) diciptakan pada periode
yang sama.

Sejarah (lanjut)

Istilah Web application pertama kali dikenalkan pada 1999


dalam Servlet Specification version 2.2 untuk bahasa java. Hari
ini kebanyakan website adalah interaktif dalam beberapa cara
dimana membuatnya lebih komplek untuk mengembangkan
dan istilah web application menjadi umum.

4
Apa itu web framework?
Framework adalah pengembangan software yang didesain
untuk mendukung pengembangan dari website dinamis, web
application dan web services.
Hal ini merupakan sekumpulan dari prewritten code atau
library yang menyediakan fungsionalitas umum untuk
seluruh class aplikasi. Framework dapat dilihat sebagai
sebuah dasar atau sebuah kerangka untuk membangunnya.

Framework vs. libraries

vs

framework Library

a framework is about reusing A library is a collection of


behaviors by how abstract classes classes which provide
and components interact with
each other reusable functionalities

one's application calls


a framework calls one's the library
application.

6
Derajat dari Keaktifan Web Framework

1."Passive" framework -:

"Passive" framework merupakan framework yang hanya sekelompok file


untuk memulai pekerjaan darinya. Membongkar dan satu disiapkan untuk
membuat sebuah projek darinya. Beberapa framework mendukung untuk
penempatan terpisah dari file proyek, sehingga file framework dapat
digunakan kembali oleh beberapa proyek lainnya.

Degrees of activeness web frameworks Continue..

2."Semi-active" framework-:
"Semi-active" framework merupakan framework yang dapat
menghasilkan kode dari satu kode yang sudah ada dengan
sebuah perintah dari developer. Beberapa dari framework ini
juga dapat membuat projek utuh dari perintah developer,
dengan atau tanpa opsi.
3. "Active" framework -:
Active" framework merupakan framework dimana seperti
halnya yang dimiliki semi-active framework dan juga bekerja
dalam belakang layar dengan menulis/membuat/menghasilkan
kode secara otomatis tanpa perintah apapun dari developer.

8
Kenapa Kita Membutuhkan Framework?
Secara virtula semua aplikasi web memiliki seperangkat
kebutuhan dasar umum, seperti manajemen pengguna, contoh
login pengguna yang aman, recovery password; manajemen
group dan otorisasi akses.
Sebuah Web application framework biasanya mencakup semua
fungsionalitasnya, disempurnakan melalui ratusan dari
penyebaran produksi, developer freelance yang fokus dalam
kebutuhan mereka untuk aplikasi khusus.
Dalam aplikasi web yang trafiknya tinggi seperti situs sosial, situs
pendaftaran, web framework menyediakan dukungan yang baik
untuk pengembangan aplikasi yang memiliki penanganan
kapasitas trafik yang baik dengan menerapkan teknik pooling.
WAF menyimpan data penting dalam sebuah database relasional
dan mereka berinteraksi dengan pengguna melalui sebuah
antarmuka pengguna berbasis web

Pola Framework

Pola Desaian MVC :

Presentasi:
View adalah antarmuka pengguna (contoh.
tombol)
Controller adalah kode (contoh. callback untuk
tombol)
Data:
Model adalah database

10
Beberapa Framework Populer :
Framework berbasis JAVA :

Hal ini mserupakan sebuah solusi object-relational


mapping (ORM) untuk Java yang dikembangkan oleh
Red-hat corporation
Kami membuat data kami presisten dengan
menyimpannya dalam sebuah database.
Membuat sebuah aplikasi portable ke semua database
SQL.
Contoh : www.linked.in

Hibernate berada antara kode


anda adan database
Memetakan persistent objects ke
tabel dalam database

11

Struts menggunakan dan memperpanjang Java Servlet API untuk


mengadopsi pendekatan, sebuah variasi dari pola desain klasik
Model-View-Controller (MVC).
Situs yang meengunan framework sturts http://www.boston.com

12
Framework Spring menyediakan sebuah pemrograman yang
komprehensif dan model konfigurasi dari modern java berbasiskan
aplikasi enterprise.
Depedensy Injection
Aspect Oriented Programming termasuk manajemen transaksi deklaratif
spring
Spring MVC web application Comprehensive dan extensible mendukung
untuk kedua perlindungan otentikasi dan otorisasi terhadap serangan
seperti session fixation, clickjacking, cross site request forgery, dll
Situs : http://linked.in security

13

Framewok berbasiskan PHP :

cakePHP:

Mengikuti pola clean MVC


CakePHP merupakan framework yang berkembang sangat pesat
untuk PHP yang menyediakan sebuah arsitektur extensible untuk
pengembangan, pemeliharaan dan penggunaan aplikasi.
Dukungan yang komprehensif dan extensible untuk kedua
perlindungan otentikasi dan otorisasi dadi serangan seperti session
fixation, clickjacking, cross site request forgery, dll.
http://www.educationunlimited.com/

14
Zend Framework fokus pada pembangunan yang lebih
aman, handal dan modern Aplikasi Web 2.0 & Web
services mengkonsumsi secara luas API yang tersedia
dari vendor terkemuka seperti Google, Amazon, Yahoo!,
Flickr , facebook untuk login ke mereka.
http://thorpesystems.com

15

Drupal merupakan sebuah framework manajemen konten yang gratis


dan open-source ditulis dalam PHP
Digunakan sebagai sebuah back-end framework untuk kurang lebih
2.1% dari semua website di dunia mulai dari blog pribadi sampai
perusahaan, politik dan situs pemerintahaan
Contoh. whitehouse.gov dan data.gov.uk.

16
CodeIgniter merupakan software open source web framework
yang berkembang pesat, digunakan dalam pembangunan web
site dinamis dengan PHP.
Codeigniter adalah framework PHP yang powerful dengan
sebuah footprint yang sangat kecil, dibangun untuk developer
yang membutuhkan sebuah kemudahan dan toolkit yang
elegan untuk membuat fitur lengkap aplikasi web.

17

Framework Berbasiskan ASP.NET :

ASP.NET MVC merupakan framework aplikasi web yang open source


yang mengimplementasikan pola modelviewcontroller (MVC).
open source license (Apache License 2.0).
Situs: www.microsoft.com

18
Kelebihan Menggunakan Framework
Penggunaan kembali dari kode kerja yang telah dibangun, diuji
dan digunakan oleh developer lain meningkatkan kehandalan dan
mengurangi waktu pengembangan
Mendapatkan (gratis) bantuan dari lainnya. Dengan membiarkan
orang lain (framework) mengurus permasalahan umum, seperti
kemananan, internalisasi, lokalisasi dll, satu akan mendapatkan
(gratis) outsourcing dari keahlian developer. Jika seorang
developer memulai dari awal dengan sebuah projek developer
harus memikirkan segalanya. Dan jika developer mengetahui
bagaimana menyelesaikan segalanya; kenapa harus
melakukannya lagi? Hanya ada risiko bug dan kebocoaran
keamanan.

19

Kelebihan (lanjut)
Framework dapat mendukung tingkat tinggi dari pemrograman,
dengan modularitas kode. Tugas dasar, seperti login dan
penanganan database dapat berada dalam framework dan
terpisah dalam layer lainnya adalan logika bisnis.
Dengan meningkatkan satu framework mungkin memberikan fitur
tambahan tanpa implementasi tambahan. Ambil contoh jika
sebuah e-commerce menggunakan sebuah framework dan tim
dibelakang framework rilis terbaru mungkin memberikan cara-cara
baru dari metode pembayaran.

20
Kekurangan Menggunakan Framework
Untuk dapat menggunakan framework yang terbaik, sering
membutuhkan pendidikan yang signifikan dan pengalaman.
Kinerja kemungkinan berat dari kode umum yang dibangun untuk
menangani sebanyak mungkin dan tidak optimal untuk sebuah
tugas tertentu.
Jika sebuah bug atau sebuah risiko keamanan ditemukan dalam
framework akan terdapat di semua aplikasi yang menggunakan
framework. Beberapa framework sangat kaku dan tidak
memberikan cukup fleksibilitas kebutuhan developer untuk
beberapa aplikasi.
Membangun dari awal biasanya memberikan perasaan lebih
produktif dimana dapat membuat developer lebih damai dan
mengurangi perasaan dari stuck dan dengan demikian lebih
kreatif dan mengurangi kebosanan

21

Akhir Modul 1
Local Training for IT Capacity Building
for Central & Local Government

Review PHP

Pemrograman Web - Mahir

MODUL 2

Ikhtisar Modul

Dasar PHP
Variabel dan Konstanta
PHP Flow Control
Array

2
Three-tiered Web Site: LAMP

Client example request


Server
User-agent: Firefox GET / HTTP/1.1 Apache HTTP Server
Host: www.tamk.fi
User-Agent: Mozilla/5.0 (Mac..)
...

response PHP

Database
MySQL

Teknik Server Side


Server side scripting membutuhkan instalasi pada sisi server
Biasanya disisi client hanya xhtml dan tidak pedulu apakan xhtml
diproduksi oleh sisi server
Tidak membutuhkan instalasi atau add-ons pada client

4
Teknik Server Side

PHP
Java EE: Servlet, JSP
.NET
CGI / Perl (Very old)
Ruby

Teknik Client Side


Membutuhkan dukungan teknik di sisi client
JavaScript, Applet, Flash

6
Pengenalan PHP

PHP merupakan sebuah bahasa scripting.


Awalnya didesain untuk memproduksi halaman web dinamis
Muncul pada tahaun 1995
Group PHP bertanggung jawab untuk bahasa, tanpa spesifikasi
normal
Free software
Berjalan hampir di semua platform dan sistem operasi
URL: http://www.php.net

Response

8
Pengenalan Sintak PHP
PHP memiliki sintak yang sangat mudah, jika anda sudah biasa
dengan bahasa C
Memiliki struktur yang sama dengan bahasa pemrograman lain yang
anda gunakan
PHP didesain untuk ditampilkan ke browser, tetapi memungkinkan
juga dilakukan di aplikasi CLI

Contoh

<?php
print "What is your name?\n";
$name = trim(fgets(STDIN));
print "Hello " . $name;
?>

10
Variabel
Variabel di php direpresentasikan dengan sebuah tanda dolar
PHP medukung delapan tipe
boolean, integer, float, double, array, object, resource dan NULL

11

Contoh
<?php
$a_bool = TRUE; // a boolean
$a_str = "foo"; // a string
$a_str2 = 'foo'; // a string
$an_int = 12; // an integer

echo gettype($a_bool); // prints out: boolean


echo gettype($a_str); // prints out: string

// If this is an integer, increment it by four


if (is_int($an_int)) {
$an_int += 4;
}

// If $bool is a string, print it out


// (does not print out anything)
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>

12
Penamaan Variabel
Case-sensitivity
Diawali dengan hrufu atau _
Setelah itu anda dapat memberikan angka, huruf dan _
$var = 'Bob';
$Var = 'Joe';
print "$var, $Var";
$4site = 'not yet';
$_4site = 'not yet';

13

Konstanta
Anda tidak dapat merubah nila konstanta setalah dideklarasikan
define(CONSTANT, "value");
print CONSTANT;

14
Magic Constants

PHP memiliki banyak cara mendefinisikan variabel


Dan juga pendefinisian konstanta:
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__

Referensi:
http://fi.php.net/manual/en/language.constants.predefi
ned.php

15

Scope

<?php
$a = "Pekka";
print My name is " . $a;
?>

16
Scope

<?php
$a = "Pekka";
function Test() {
print $a;
}
print My name is ;
Test();
?>

17

Scope

<?php
$a = "Pekka";
function Test() {
global $a;
print $a;
}
print My name is ;
Test();
?>

18
Struktur Kontrol
If, else, elseif, switch
while, do-while, for
foreach
break, continue

19

Strings
Kutip satu: 'this is a $variable'
Kutip dua: "this is a $variable"
Heredoc:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

20
Memodifikasi String
$mj = "moi";
print $mj[0];
$mj[0] = 'x';
print $mj;
$mj = $mj . " hei";
print $mj;
$mj .= " terse";
print $mj;

21

Fungsi String
Referensi fungsi string
http://www.php.net/manual/en/ref.strings.php

22
Statements
Setiap statement diakhiri dengan tanda titik koma (;)
$a = 5;
$a = function();
$a = ($b = 5);
$a++; ++$a;
$a += 3;

23

Operators
Aritmatika: +,-,*,%
Setting variabel: =
Bit: &, |, ^, ~, <<, >>
Perbandingan: ==, ===, !=, !==, <, > <=, >=

24
Ternary Operator
$variable = (1 < $x) ? 'value1' : 'value2';
Equals
if(1 < $x) {
$variable = 'value1';
}
else {
$variable = 'value1';
}

25

Operator Eksekusi
Mengeksekusi command di shell
$result = `ls -al`;
print $result;

Melakukan hal yang sama dengan fungsi shell_exec() -

26
Operator Logika
$a and $b
$a or $b
$a xor $b
!$a;
$a && $b;
$a || $b;

27

Operator String
Dua operator untuk string : '.' dan '.='
'.' Menggabungkan String.
'.=' menambahkan string di akhir.
Contoh:
$v= "Hello" . $b;
$v.= "Hello";

28
Struktur Kontrol

29

IF
<?php
if ($a > $b) {
echo "a is bigger than b";
} else {
echo "a is NOT bigger than b";
}
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>

30
While dan Do-While
<?php
$a=0;
while($a<10){
print $a; $a++;
}

$i = 0;
do {
print $i;
} while ($i > 0);
?>

31

For

for ($i = 1; $i <= 10; $i++) {


print $i;
}

32
Foreach
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
echo $value;
}

33

Switch
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}

34
Array
Sebuah array dapat menyimpa satu atau lebih nilai
dalam satu variabel
Tiap elemen didalam array ditetapkan ID sendiri
sehingga dapat dengan mudah diakses

$array[key] = value;

35

Jenis Array
Array Numerik
Array Asosiatif
Array Multidimensi

36
Array Numerik
- Sebuah array numerik menyimpan tiap elemen dengan
sebuah ID Key Numerik
- Tiga cara untuk menulis sebuah array numerik

37

Contoh
Otomatis
$names = array("Peter","Quagmire","Joe");
Manual
$names[0] = "Peter;
$names[1] = "Quagmire;
$names[2] = "Joe";

38
Contoh di PHP Script
<?php
$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";

echo $names[1] . " and " . $names[2] .


" are ". $names[0] . "'s neighbors";
?>

39

Array Asosiatif
Sebuah asosiatif array, setiap ID Key diasosiasikan
dengan sebuah nilai.
Ketika menyimpan data dengan nilai nama yang
ditetapkan, sebuah array numerik tidak selalu
menjadi cara terbaik untuknya.
Dengan array asosiatif kita dapat gunakan nilainya
sebagai key dan memberinya nilai.

40
Contoh
Menggunakan sebuah array untuk memberikan usia pada tiap
orang.

$ages = array(Brent"=>42, Andrew"=>25, "Joshua16=>);


$ages[Brent'] = 42";
$ages[Andrew'] = 25";
$ages['Joshua'] = 16";

41

Contoh di PHP Script


<?php
$ages[Brent] = 42";
$ages[Andrew] = 25";
$ages[Joshua] = 16";

echo Brent is " . $ages[Brent] . " years old.";


?>

42
Array Multidimensi
Pada sebuah array multidimensi, tiap elemen di array
utama dapat juga berupa array
Dan tiap elemen dalam sub-array dapat berupa sebuah
array dan seterusnya

43

Contoh
$families = array
(
"Griffin"=>array
(
"Peter",
"Lois",
"Megan" ),
"Quagmire"=>array ( "Glenn" ),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
);

44
Hasil
Array
(
echo "Is " . $families['Griffin'][2] .
[Griffin] => Array
" a part of the Griffin family?";
(
[0] => Peter
[1] => Lois
[2] => Megan
Is Megan a part of the Griffin
)
[Quagmire] => Array family?
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)

45

Akhir Modul 2
Local Training for IT Capacity Building
for Central & Local Government

Review Database

Pemrograman Web - Mahir

MODUL 3

Ikhtisar Modul

Overview MySQL
DDL & DML
Koneksi Database

2
Konsep Database
Entitas: sebuah objek, konsep atau event.
Field (Kolom): mendekripsikan sebuah karakteristik tunggal dari
sebuah entitas.
Record (baris): sekumpulan dari field (karakteristik) yang
menjelaskan tiap entitas.
Tabel: Kumpulan dari record untuk sebuah entitas tertentu.
Database: Kumpulan dari tabel.

MySQL

MySQL merupakan relasional database manajemen sistem yang


open source
Website : www.mysql.com
Mendukung Structured Query Language (SQL) sebuah
standarisasi untuk berkomunikasi dengan database.

4
Navigasi di MySQL

Mendapatkan daftar database yang sudah ada:


mysql> show databases;

Menentukan database untuk digunakan:


mysql> use mysql;

Mendapatkan daftar tabel dalam sebuah database\:


mysql> show tables;

Menjabarkan sebuah tabel:


mysql> describe user;

Operasi CRUD MySQL

Membuat sebuah database baru:


mysql> CREATE DATABASE cis;
Membuat sebuah tabel baru:
mysql> use cis;
-> CREATE TABLE vehicles
-> (VIN varchar(17), Year int(4), Make varchar(20),
-> Model varchar(20), Mileage int(10));
Memasukkan data kedalam tabel:
mysql> INSERT INTO vehicles (VIN, Year, Make, Model, Mileage)
-> VALUES ('8YTR754', 2002, 'Ford', 'Mustang', 21000);
Membuat sebuah Skrip SQL untuk mendeskripsikan database:
C:\mysql\bin> mysqldump u root p cis > cis.sql
Membuat sebuah database dan data menggunakan skrip SQL:
mysql> source C:\mysql\bin\cis.sql (NOTE: tanta titik koma)

6
Operasi CRUD MySQL
Mendapatkan semua data dari sebuah tabel:
mysql> SELECT * FROM vehicles;
+----------+-------+-----------+----------+----------+
| VIN | Year | Make | Model | Mileage |
+----------+-------+-----------+----------+----------+
| 8YTR754 | 2002 | Ford | Mustang | 21000 |
| 4GKU390 | 2001 | Chevrolet | Corvette | 35000 |
| 92A84UJ | 1998 | Dodge | Viper | 89256 |
+----------+-------+-----------+----------+----------+

Memilih sebuah baris data yang sudah ditentukan:


mysql> SELECT * FROM vehicles WHERE VIN = '8YTR754';
+----------+-------+-----------+----------+----------+
| VIN | Year | Make | Model | Mileage |
+----------+-------+-----------+----------+----------+
| 8YTR754 | 2002 | Ford | Mustang | 21000 |
+----------+-------+-----------+----------+----------+

Operasi CRUD MySQL

Update semua record dalam sebuah tabel:


mysql> UPDATE vehicles SET Mileage = 25000;

Update record tertentu:


mysql> UPDATE vehicles SET Mileage = 25000
-> WHERE VIN = '8YTR754';

Update multi kolom dengan record yang sudah ditentukan:


mysql> UPDATE vehicles
-> SET Mileage = 25000, LastServiceDate = '08/30/2003'
-> WHERE VIN = '8YTR754';

8
Operasi CRUD MySQL

Hapus semua baris dalam sebuah tabel (tidak akan menghapus


tabel)
mysql> DELETE FROM vehicles;

Hapus baris yang sudah ditentukan dalam sebuah tabel


mysql> DELETE FROM vehicles
-> WHERE VIN = '8YTR754';

Menghapus tabel (menghilangkan dari database)


mysql> DROP TABLE vehicles;

Structured Query Language (SQL)


SQL merupakan sebuah standar bahasa untuk mengakses
database
Pada bagian ini akan dibahas bagaimana menggunakan SQL
untuk mengakses dan memanipulasi data seperti: MySQL, SQL
Server, Access, Oracle, Sybase, DB2, dan database system
lainnya.
Keduanya sebagai bahasa DDL dan DML.
DDL (Data Definition Language): mendefinisikan schema dari
database.
DML (Data Manipulation Language): didukung perintah untuk
memanipulasi databse (query, insert, update, delete).

10
Structured Query Language (SQL)
Berdasarkan aljabar relasional, tetapi tidak sepenuhnya identik.
Relations Tables
Tuples Rows
Attributes Columns
Tidak seperti sebuah relasi, sebuah tabel bukan merupakan
sebuah kumpulan. Duplikat tidak secara otomatis dihilangkan.
Hal ini untuk alasan praktis. Eliminasi duplikat tidak efisien dalam
implementasinya.
Seperti relasi, urutan baris dalam tabel tidak relevan.

11

Data Definition Language (DDL)


DDL (Data Definition Language): mendefinisikan schema dari
suatu database.
Perintah dasar DDL dalam SQL
CREATE: untuk mendefinisikan tabel baru (untuk mendefinisikan
relasi schema)
DROP: untuk menghapus definisi tabel (untuk menghapus relasi dari
schema)
ALTER: untuk merubah definisi dari tabel yang sudah ada (untuk
merubah relasi schema)
Fitur lain dari DDL
Menentukan referensial integritas constraint (FK/ Foreign Key)
Menentukan definisi user attributes constraints

12
Data Manipulation Language (DML)
DML (Data Manipulation Language): Mendukung perindah untuk
memanipulais database (query, insert, update, delete).
Dasar Perintah DML
INSERT: untuk memasukkan record ke tabel
UPDATE: untuk merubah status (nilai) dari baris
DELETE: untuk menghapus baris
SELECT: sebuah perintah query yang menggunakan relasi aljabar
seperti ekspressi
Berbagai macam opsi disediakan untuk menghandle
penegakan/pelanggaran dari integritas constraints

13

Berbagai macam perintah SQL di MySQL


show databases;
Menampilkan semua database pada server
show tables;
Menampilkan semua tabel yang tersedia pada database yang terpilih
show columns from table EMPLOYEE;
drop table t_name;
Menghapus tabel t_name
drop database db_name;
Menghapus database db_name
load data infile f_name into table t_name;

14
Koneksi Database
Dengan PHP, anda dapat menghubungkan dan memanipulasi
database.
MySQL merupakan database yang paling populer digunakan
oleh PHP.
PHP yang digabungkan dengan MySQL merupakan cross-
platform (anda dapat mengembangkannya di windows atau
pada platform unix)

15

Koneksi PHP ke MySQL


PHP 5 dan setelahnya dapat bekerja dengan database MySQL
menggunakan:
MySQLi extension ("i" kependekan dari improved)
PDO (PHP Data Objects)
Pada versi sebelumnya PHP menggunakan ekstensi MySQL
extension. Namun, ekstensi ini sudah ditinggalkan pada tahun
2012

16
Gunakan MySQLi atau PDO?
Keduanya MySQLi dan PDO memiliki keuntungan masing-masing:
PDO dapat bekerja pada 12 database system yang berbeda, sedangkan
MySQLi hanya akan bekerja pada database MySQL
Sehingga, jika anda akan merubah project untuk menggunakan database
lain PDO mempermudah prosesnya. Anda hanya merubah string koneksi
dan sedikit query. Dengan MySQLi anda akan membutuhkan penulisan
kode ulang termasuk query
Keduanya adalah berorientasi objek, tetapi MySQLi juga menggunakan
sebuah prosedur API
Keduanya mendukung Prepared Statement. Prepared Statement
melindungi dari SQL Injection dan sangat penting untuk keamanan
aplikasi web

17

Sintak MySQLi dan PDO


Terdapat tiga cara untuk bekerja dengan PHP dan MySQL:
MySQLi (object-oriented)
MySQLi (procedural)
PDO

18
Membuka Koneksi ke MySQL
MySQLi Object-Oriented

19

Membuka Koneksi ke MySQL


Catatan pada contoh berorientasi objek di atas: $connect_error
rusak sampai PHP 5.2.9 dan 5.3.0. Jika Anda perlu untuk
memastikan kompatibilitas dengan versi PHP sebelum 5.2.9
dan 5.3.0, menggunakan kode berikut sebagai gantinya:

20
Membuka Koneksi ke MySQL
MySQLi Procedural

21

Membuka Koneksi ke MySQL


PDO

22
Membuka Koneksi ke MySQL
Perhatikan bahwa dalam contoh di atas PDO kami juga telah
ditentukan database (myDB). PDO membutuhkan database
yang valid untuk terhubung ke. Jika ada database yang
ditentukan, eksepsi dilemparkan.
Satu manfaat besar dari PDO adalah bahwa ia memiliki kelas
pengecualian untuk menangani masalah yang mungkin terjadi
dalam query database kami. Jika eksepsi dilemparkan dalam
try {} blok, script berhenti mengeksekusi dan mengalir langsung
ke tangkapan pertama () {} blok.

23

Menutup Koneksi MySQL


Sambungan akan ditutup secara otomatis ketika script berakhir.
Untuk menutup sambungan sebelumnya, gunakan berikut:
MySQLi Object-Oriented

MySQLi Procedural

PDO

24
Akhir Modul 3
Local Training for IT Capacity Building
for Central & Local Government

Pengantar Code Igniter

Pemrograman Web - Mahir

MODUL 4

Ikhtisar Modul

Pengantar code igniter


Model View Controller
Model: Data Abstraction Layer
View: Template Files
Format Kode

2
3

Bagaimana Anda Pertama Memulai Membangun Websites?

4
Bagaimana Anda Membangun Website Sekarang Ini?

Bagaimana Membangun Websites Dengan Framework

6
Apa itu CodeIgniter?
CodeIgniter adalah framework aplikasi web ringan yang ditulis
dalam PHP yang mengadopsi pendekatan model-view-
controller untuk pengembangannya.

Kenapa Menggunakan framework?


Framework aplikasi web menyediakan dasar blok
pembangunan yang dibutuhkan oleh kebanyakan aplikasi:
Koneksi Database
Logika Bisnis
Penanganan Form
Pemisahan Kepetingan
Kemudahan Pengujian (unit tests)

8
Kenapa Menggunakan CodeIgniter?
Kaya Fitur
Ringan
Open source
Dukungan komunitas yang baik oleh komunitas aktif
Baik dengan contoh Dokumentasi
Kemudahan untuk konfigurasi
Mendukung banyak database

Kenapa Menggunakan CodeIgniter?


Pendeknya, Codeigniter adalah bagus karena itu apa yang
perlu dilakukan kemudian mendapatkan jalan keluarnya.

10
Arsitektur MVC
Pemisahan antarmuka pengguna dari logika bisnis
Model mengenkapsulasi inti data aplikasi dan fungsionalitas logika
bisnis
View memperoleh data dari model dan mempresentasikannya ke
pengguna.
Controller Menerima dan menterjemahkan masukan ke permintaan
pada model atau view

Figure : 01
11

Model-View-Controller
Model representasi dari data
View menjadikan data yang sesuai untuk interaksi dengan
pengguna
Controller traffic cop yang melewatkan model data ke view
dan sebaliknya
Pemisahan dari kepentingan mengijinkan untuk flesibilitas yang
lebih besar, penggunaan kembali dari kode dan secara
keseluruhan perlindungan dari akal sehat developer.

12
Controller

Sebuah class yang terdiri dari satu atau lebih terkait


method (kustom fungsi PHP)
Penggunaan umum:
Meminta sekumpulan data dari model dengan
mengirimkan argumen
Mengirimkan sebuah payload data ke sebuah view
(halaman web)
Menerima sebuah data payload dari sebuah view
Menerapkan logika bisnis untuk mengambil keputusan
Melewatkan data ke model termasuk ke dalam sebuah
database

13

View
Kode yang menampilkan informasi ke pengguna
View dapa berupa:
Halaman web dengan PHP code snippedt didalamnya
Halaman wen dengan form untuk mendapatkan input pengguna
Output lain (CSV, PDF, dll)

14
Model
Sebuah class yang terdiri satu atau lebih terkait method
(Kustom fungsi PHP)
Umumnya digunakan:
Create
Read
Update
Delete

15

Aliran Aplikasi dari CodeIgniter

16
CodeIgniter URL

URL dalam CodeIgniter adalah berbasiskan segmen.


www.your-site.com/news/article/my_article

Segments dalam sebuah URL


www.your-site.com/class/function/ID

CodeIgniter secara opsional mendukung Query String URL


www.your-site.com/index.php?c=news&m=article&ID=345

17

Controllers: Logika Bisnis


Controller meruapakan inti dari aplikasi anda, karena mereka menentukan
bagaimana HTTP request harus ditangani
Sebuah Class berada pada application/controllers
www.your-site.com/index.php/first

<?php

class First extends Controller{

function First() {
parent::Controller();
}

function index() {
echo <h1> Hello CUET !! </h1> ;
}
}

?>

// Output Will be Hello CUET!!

Note:
Nama Class harus diawali dengan Huruf Besar.
Dalam kasus constructor anda harus menggunakan parent::Controller();

18
Controllers

Dalam Kode tertentu ini

www.your-site.com/index.php/first/bdosdn/world

<?php

class First extends Controller{

function index() {
echo <h1> Hello CUET !! </h1> ;
}
function bdosdn( $location ) {
echo <h2> Hello $location !! </h2>;
}
}

?>
// Output Will be Hello world !!

Note:
Fungsi Index selalu di-load secara default. Kecuali ada segmen kedua
dalam URL

19

Model : Data Abstraction Layer

Desain untuk bekerja dengan informasi dari database


Models harus ditempatkan di bawah application/models/
<?php

class Mymodel extend Model{


function Mymodel() {
parent::Model();
}
function get_info() {
$query = $this->db->get(name, 10);
/*Using ActiveRecord*/
return $query->result();
}
}
?>

Me-load sebuah Model kedalam sebuah Controller

$this->load->model(mymodel);
$data = $this->mymodel->get_info();

20
VIEWS : File Template

Sebuah halaman web atau sebuah bagian halaman


Harus di letakan di bawah application/views
Tidak pernah dipanggil secara langsung

web_root/myci/system/application/views/myview.php

<html>
<title> My First CodeIgniter Project</title>
<body>
<h1> Welcome ALL To My .. ::: First Project :::
. . . </h1>
</body>
</html>

21

VIEWS

Memanggil sebuah View dari Controller


$this->load->view(myview);

Data dilempar ke sebuah View dari controller


function index() {
$var = array(
full_name => Amzad Hossain,
email => [email protected]
);
$this->load->view(myview, $var);
}

<html>
<title> ..::Personal Info::.. </title>
<body>
Full Name : <?php echo $full_name;?> <br />
E-mail : <?=email;?> <br />
</body>
</html>

22
VIEWS
Terdapat 3 mekanisme yang dapat dimanfaatkan untuk menunjukkan data
dinamis ke dalam sebuah file View:
- PHP Murni
- Sintak Alternatif PHP
- CodeIgniter Template Engine

<!-- PHPs Alternative Syntax -->

<?php if( $for_this == true ):?>


<h1> For This </h1>
<?php elseif( $for_that == true ): ?>
<h1> For That </h1>
<?php else: ?>
<h1> What </h1>
<?php endif; ?>

Note:
Terdapat sintak alternatif lain for, foreach, while

23

Class CodeIgniter
CI built-in classes meliputi fungsionalitas dasar yang sering
digunakan oleh aplikasi web
Class yang kebanyakan digunakan adalah:
Database
Input
Loader
URI
Validation

24
Class Database
Menghasilkan query menggunakan pola Active Record
Automatic escaping dari nilai input.
Menyediakan metode Chaining untuk kemudahan
membangun query
$this->db->where(name,$name);

25

Input Class

Pre-processes inputan user (mencegah teknik


cross-site scripting umum)
Menyediakan akses ke input user dan data lain:
Form fields (POST)
Cookies
Server variables
$this->input->post(fieldname);

26
Class Loader
Membuat berbagai macam sumber daya tersedia::
Databases
Views
Helpers
Plugins

$this->load->view(viewname);

27

Class URI
Menyediakan akses ke bagian tertentu dari string URI
Berguna untuk membangun RESTful URIs
$this->uri->segment(n);

28
Class Validation
Membantu memvalidasi form input pengguna
Field yang dibutuhkan
Membutuhkan format string formatting (length, regexp)
Mengaktifkan pesan sukses dan gagal pada pengiriman form
Mengaktifkan re-population dari field form setelah pengiriman
form

29

Class Lainnya
Benchmarking Language
(internationalization)
Calendaring
Output
Email
Pagination
Encryption
Session
File uploading
Trackback
FTP
Unit testing
HTML Table
XML-RPC
Image Manipulation
Zip encoding

30
Helpers dan Plugins
Codeigniter datang dengan sebuah array yang luas dari
fungsi helper yang menambahkan kenyamanan untuk
aplikasi dan menyediakan kemudahan dari penggunaan
kembali.
$this->load->helper(helper_name);
CodeIgniter juga mengijinkan untuk penggunaan dari fungsi
kostum add-on yang disebut plugins.
$this->load->plugin(plugin_name);

31

Memformat Kode Anda


Codeigniter tidak memaksakan gaya koding tertentu pada anda
sebagai seorang developer.
Namun ada PHP Style Guid yang menetapkan sejumlah aturan
yang dapat anda gunakan ketika mengembangkan untuk
CodeIgniter
Kebanyakan style rule untuk membantu kode anda cocok
dengan kode inti yang lebih baik, sebagai tim inti pengembang
mengikuti aturan ini, sebagaimana siapa saja yang mendevelop
menggunakan framework
Pada bagian ini akan menyoroti konvensi yang paling penting

32
Tag Penutup PHP
Tag penutup PHP ?> adalah opsional untuk parser PHP.
Jika digunakan, setiap sepasi setelah tag penutup PHP dapat
menghasilkan PHP error, warning atau bahkan halaman
kosong.
Untuk alasan ini, semua file PHP harus menghilangkan tag
penutup PHP dan sebagai gantinya gunakan blok komentar
untuk menampilkan rincian yang relevan untuk lokasi file
Hal ini memungkinkan anda untuk menandakan bahwa file telah
selesai.

33

Contoh

Salah

Benar

34
Class dan Penamaan Method

Seperti yang telah kita bahas sebelumnya, nama class harus


selalu huruf besar pada huruf pertamanya dan sisanya
menggunakan huruf kecil.
Beberapa kata harus dipisahkan dengan garis bawah dan tidak
menggunakan kovensi CamelCase.

Salah

Benar

35

Class dan Penamaan Method (lanjut)


Class dan method constructor harus memiliki nama yang
identik.
Contoh :

36
Salah

Benar

37

Nama Variabel
Panduan untuk nama variabel sangat mirip dengan nama class
dan nama method.
Nama variabel harus hanya terdiri huruf kecil, harus
menggunakan pemisah garis bawah untuk memisahkan kata
dan tidak menggunakan CamelCasing dan harus diberi nama
untuk mengidikasikan isinya.

Salah

38
Penamaan Variabel (lanjut)

Benar

39

Komentar
Codeigniter menyarankan anda untuk memberikan komentar kode anda
sebanyak mungkin.
Hal ini untuk dua alasan :
Membantu programmer berpeangalaman yang mungkin bekerja pada
projek yang sama dengan anda, atau jika anda me-release kode anda.
Akan membantu anda beberapa bulan kedepan untuk memahami
kode lebih cepat daripada tidak ada komentar.
Tidak ada kebutuhan style tertentu untuk komentar, tetapi Codeigniter
merekomendasikan anda menggunakan DocBlock styling, Ini
direkomendasikan karena akan diambil oleh banyak Integrated
Development Environments (IDE).

40
Komentar (lanjut)

Miskin

Baik

41

Penggunaan dari TRUE, FALSE, dan NULL


Ketika menggunakan kata kunci TRUE, FALSE, dan NULL
dalam aplikasi anda, anda seharusnya menuliskannya dalam
huruf besar.
Salah

Benar

42
Tag Pembuka Pendek
Anda harus selalu menggunakan tag pembuka PHP lengkap
dan bukan tag pendek, hanya dalam kasus sebuah server tidak
mengaktifkan short_open_tag.
CodeIgniter dapat menuliskan kembali tag pendek, meskipun
PHP Style Guide menyatakan harus menggunakan tag
pembuka lengkap.
Salah

Benar

43

Satu Pernyataan Per Baris


Anda harus memiliki satu pernyataan per baris dalam aplikasi
CodeIgniter.
Hal ini meningkatkan pembacaan kode, dan juga membuat
semuanya menjadi mudah dicari.
Salah

Benar

44
Akhir Modul 4
Local Training for IT Capacity Building
for Central & Local Government

Library

Pemrograman Web - Mahir

MODUL 5

Ikhtisar Modul
Pengantar Library
Class Benchmarking
Class Input dan Class Security
Class Email
Library Manipulasi Gambar
Class Pagination
Class Session

2
Pengantar Library
Codeigniter dilengkapi dengan satu set dari file class yan
gdigunakan di seluruh aplikasi hal ini dikenal sebagai
"Libraries".
Singkatnya, sebuah library adalah sebuah file yang membantu
developer menulis kode yang lebih baik, membangun aplikasi
yang lebih baik dan menjadi lebih produktif melalui penggunaan
dari fungsi abstrak.
Sebuah library menciptakan pembungkus untuk fungsi aplikasi
anda, misalnya, memungkinkan anda untuk mengganti driver
database tanpa harus merubah kode apapun.

Apa itu sebuah Library?


Sebuah library codeigniter adalah sebuah file class sederhana
yang fungsi abstrak ke dalam kemudahan fungsi yang
mengambil banyak kelonggaran developer
Library database contohnya:
Terdiri banya fungsi yang membuat pembuatan query yang komplek
menjadi sangat mudah;
Hal itu juga membuat query lebih mudah dibaca.
Istilah class dan library digunakan secara bergantian pada
bagian ini.
Library projek-spesifik diletakkan dalam folder
system/application/libraries/
Sumuan inti library codeigniter diletakkan dalam folder
system/libraries/.

4
Apa Yang Dapat Dilakukan Library?
Library fungsionalitas abstrak untuk developer membuatnya
menjadi mudah untuk penggunaan kembali kode.
Codeigniter dilengkapi dengan banyak library inti yang
menyedikan cara untuk kode aplikasi anda lebih cepat daripada
tanpa libray, membuang banya kode yang tidak diperlukan dari
aplikasi dan mengambil keteganan developer.
Terdapat banyak jenis library yang terdapat dalam codeigniter,
dan banyak lagi yang dikeluarkan oleh anggota komunitas.
Setiap library memiliki sebuah perbedaan dari fungsi yang
dikumpulkan, tetapi semuanya bekerja untuk membuat
pengkodean aplikasi jauh lebih sederhana daripada mereka
inginkan jika anda tidak menggunakan framework.

Class Benchmarking
Class Benchmarking digunakan untuk menghitung waktu antara
dua titik dalam aplikasi anda.
Hal ini selalu ON, yang berarti anda tidak perlu memuat library
sebelum menggunakannya.
Waktu antara dua titik yang anda tentukan dalam aplikasi anda
sangat akurat karena library ini di muat pada saat yang sama
sebagai codeigniter, dan berakhir dengan class output secepatnya
sebelum data dikirimkan ke browser.
Benchmarking adalah penting dalam setiap aplikasi yang harus
mengharapkan pada jumlah user yang besar.
Jika pada beberapa titik, anda menyadari bahwa aplikasi anda
melambat untuk user pada satu titik manapun, anda dapat
menjalankan benchmark untuk mencari tahu dimana hambatan
dan bagaimana memperbaikinya.

6
Setting Benchmark
Benchmark dapat ditambahkan ke Controller, Views dan Model
dalam tiga langkah mudah.
1. Tandai titik awal.
2. Tandai titik akhir
3. Jalankan fungsi untuk menampilkan waktu yang dilewati. .
Contoh:

Kita tandai code start dan end dengan menggunakan fungsi


yang sama dan echo sederhana mengeluarkan kembalian nilai
melalui fungsi elapsed_time().

Setting Banyak Benchmarks


Dengan Class benchmark, anda dapat men-set banyak benchmark dan
menghitung perbedaan waktu antara mereka, tidak hanya dua.
Sebgai contoh, kita dapat men-set tiga benchmark dan waktu yang
berbeda antar benchmark pertama dan benchmark kedua, dan pertama
dan benchmark ketiga.
Kita dapat menggunakan kombinasi dari benchmark yang kita set.
Contoh:

8
Profiling Benchmark
Jika anda ingin benchmark anda tersedia ke class profiller
kemudaian anda perlu untuk men-set benchmark anda dalam
pasangan.
Pasangan ini harus diakhiri dengan _start dan _end, tetapi
harus dinyatakan dengan nama identik.
Contoh:

Memanfaatkan Class Profiler


Sebagai Class Profiller adalah sangat kecil, Kita akan membahasnya
disini
Class Profiller akan mengeluarkan semua hasil benchmark, query yang
anda jalankan, dan $_POST data pada bagian bawah halaman anda.
Class akan secara otomatis terinisiasi dengan class Output selama class
tersebut diaktifkan.
Untuk mengaktifkan Profiller, anda harus meletakkan baris berikut dari
kode apapun dalam Controller anda:

Untuk menonaktifkan profiller, mudah tempatkan kode berikut dimanapun


dalam Controller anda:

10
Memanfaatkan Class Profiler (lanjut)
Sekali diaktifkan, sebuah
laporan akan keluar pada
bagian bawah halaman
anda.
Contoh dari apa saja
informasi profiller terlihat
seperti gambar ini.

11

Menampilkan Total Execution Time


Jika anda ingin menampilkan total execution time untuk aplikasi
anda, mudah tempatkan baris berikut ini dari kode manapun
dalam satu dari file view anda.

12
Menampilkan Konsumsi Memory
Jika instalasi PHP dikonfigurasi dengan opsi enable-memory-
limit, anda dapat menampilkan jumlah memory ayng digunakan
oleh sistem dengan menambahkan baris berikut dari kode
dalam application anda:

13

Class Input dan Security


Class input dan Security membersihkan semua global data dan
memfilter semua data POST dan COOKIE untuk memastikan
hanya karakter alphanumerik yang diberikan.
Kita telah menggunakan class ini ketika kita membangun form
contact kita, tetapi ada beberapa hal yang tidak kita cakup.

14
XSS filtering
Class Input dan Security dilengkapi dengan sebuah filter
perlindungan hack Cross Site Scripting, dimana dapat
dijalankan berbasikan per item, atau dapat di-set untuk
memfilter semua data POST dan COOKIE secara otomatis.
Hal ini tidak diatur untuk berjalan secara default karena
memiliki pengolahan overhead yang kecil dan tidak selalu
diperlukan dalam setiap kasus.
XSS filter bekerja dengan mencari javacript yang dapat
dijalankan pada halaman untuk membajak cookie atau dalam
kasus lain dengan maksud jahat. Semua XSS yang ditemukan
akan diamankan dan dikonversi menjadi entitas HTML.

15

Memfilter Sebuah Item Tunggal


Hal ini adalah ringkasan utamanya: Untuk memfilter data POST
atau COOKIE untuk mengeksploitasi Cross Site Scripting, anda
menjalankan data melalui filter seperti berikut:

Dalam hal ini, saya mengambil nilai dari kolom nama dari form
imajiner. Hal ini dapat berupa nama dari tiap field form yang
anda sukai.

16
Filtering Otomatis
Anda dapat menyalakan XSS filtering sepanjang waktu dan
memfilter apa saja yang datang melalui library dengan merubah
baris berikut ini dalam file system/application/config/ config.php
dari:

Menjadi

17

Filtering Gambar
Untuk memastikan keamanan upload file, terdapat opsi
parameter kedua untuk fungsi XSS clean: is_image.
Hal in digunakan untuk memeriksa gambar dari serangan XSS.
Ketika parameter kedua diset menjadi TRUE, fungsi
mengembalikan TRUE jika gambar aman, dan FALSE jika
tidak, bukan hanya mengembalikan dengan mudah sebuah
string yang dirubah.

18
Mendapatkan Data POST
Untuk mendapatkan data post, anda harus menggunakan
fungsi yang ditampilkan selanjutnya. Parameter pertama adalah
nama dari POST item yang anda cari.

Fungsi ini mengembalikan item tersebut jika ada, dan


mengembalikan FALSE jika tidak ada.
Kedua, fungsi membiarkan anda menjalankan data melalui XSS
filter tampa menuliskan kode lagi.
Hal ini sebuah kemudahan untuk menjalankan XSS filter
berbasikan per-item.

19

Mendapatkan Data GET


Fungsi untuk mendapatkan data GET adalah identik dengan
fungsi POST, kecuali hal ini hanya mendapatkan data GET
saja.

20
Mendapatkan Data GET dan POST
Fungsi ini akan mencari melalui GET dan POST streams untuk
data; Mencari didalam POST terlebih dulu, kemudian GET.
Hal ini bekerja dalam cara yang sama seperti fungsi
sebelumnya.

21

Mendapatkan Data COOKIE


Fungsi ini sama seperti daftar sebelumnya, tetapi akan hanya
mencari dalam data COOKIE saja.

22
Mendapatkan Data SERVER
Fungsi ini sama seperti contoh sebelumnya, tetapi hanya
mengembalikan data SERVER saja.

23

Alamat IP
Untuk mendapatkan alamat IP user, anda harus menggunakan
fungsi berikutnya.
Jika alamat IP tidak valid, akan mengembalikan 0.0.0.0.

Untuk memvalidasi sebuah alamat IP, anda harus gunakan


fungsi berikutnya. Yang akan mengembalikan TRUE atau
FALSE.
Fungsi sebelumnya memvalidasi IP secara otomatis

24
Mendapatkan Sebuah User Agent
Untuk menetapkan user agent dari user, anda harus gunakan
code berikutnya.
Hal ini akan mengembalikan user agent dari web brouser user,
jika tidak terdapat satupun akan mengembalikan FALSE.

25

Class Email
Class Email adalah sebuah berlian CodeIgniter
Memungkinkan anda dengan mudah mengirimkan email dari aplikasi
anda.
Bagus untuk contact form nya, dan kegiatan mailing list untuk
menangani ribuan dari e-mail..
Class E-mail juga melayani sebagai class wrapper, hal ini
berarti anda dapat merubah car pengiriman email, tanpa harus
merubah apapun kode controller anda.
Anda dapat memilih antar fungsi mail PHP standard, sendmail
atau Simple Mail Transfer Protocol (SMTP).

26
Mengirimkan e-mail
Untuk dapat memulai class email, kita akam mudah
mengirimkan sebuah email menggunakan fungsi PHP mail,
yang mana juga opsi default untuk library ini.
Untuk memulai menggunakan library, anda perlu memuatnya
dengan cara yang sama dengan library lainnya.

Hal selanjutnya kita akan perlu melakukan pengaturan


parameter email, pengirim, penerima, alamat email lain untuk
dikirim sebuah carbon copy atau blind carbon copy, subjek
email dan pesan.

27

Contoh

Sekarang, untuk mengirimkan email kita cukup memanggil


fungsi send dari library e-mail.

Untuk menampilkan informasi debug, gunakan kode berikut ini:

28
Contoh Kode Final e-mail

29

Membangun Sebuah Contact Form


Hal pertama dari sebuah contact form, merupakan file view, dan
sederhana meliputi form kita dan echo keluaran error yang mungkin
terjadi. Untuk ini, kita buat sebuah file dalam folder
system/application/views/, dengan nama email.php.
Kita juga perlu sebuah controller sehingga kita dapat akses dan
proses contact form. Buat sebuah file dalam folder
system/application/controllers/, dengan nama email.php.

30
Contact Form

31

Tampilan dalam Browser

32
Untuk mengirimkan e-mail, kita perlu menggunakan library
email, kita muat email helper untuk memudahkan validasi
alamat email yang kita dapat dari user sebagai sebuah reply-to
e-mail address.
Kit juga dapat gunakan library ini untuk mengirimkan email
dengan sebuah fungsi tunggal.

33

Memeriksa Jika Form telah dikirimkan

Hal pertama yang kita perlu lakukan adalah memeriksa jika


form telah dikirimkan.
Kita akan lakukan hal ini dengan menggunakan Class Input
CodeIgniter.

34
Memeriksa Nilai dari Form
Kita perlu memastikan bahwa semua field form telah diisi. Kita
dapat melakukannya dengan mudah dengan menggunakan
fungsi PHP empty() .

Kita dapat memeriksa untuk melihat jika field ditinggalkan


kosong dan menampilkan kesalahan yang mereka buat.

35

Validasi E-mail

Kita perlu mengambil untuk memastikan bahwa format email


telah benar.

36
Menggunakan XSS filter

37

Mengirimkan e-mail

Akhirnya, kita dapat mengirimkan emai kita. Saya akan


mencakup dua cara dari pengiriman email. Cara pertama
gunakan class Email, dan cara kedua gunakan Email Helper.
Menggunakan Class Email :

38
Menggunakan Email Helper
Email Helper memberikan kita banyak kemudahan cara dari
pengiriman e-mails.
Kita dapat melakukannya dengan satu baris kode:

39

Batch e-mail processing


Batch email processing sangat bagus untuk pengguna yang
ingin memiliki sebuah mailing list dengan jumlah yang besar
dari user yang berlangganan.
Apa yang dilakukan batch processing adalah memecah email
dalam potongan yang lebih kecil, sehingga meskipum
mengirimkan 10.000 email sekaligus, akan dikirimkan 200
(secara default) dalam satu waktu.
Untuk mengaktifkan Batch Processing, kita akan inisiasi Class
Email dengan sebuah nilai konfigurasi.

40
Class File Uploading
Class File Uploading menyediakan cara yang mudah untuk mengupload file ke web
server.
Hal ini memudahkan merubah jenis dari file yang dapat di upload dan ukuran
maksimum file dan juga memberi anda sedikit perbedaan preferensi dari nama file.
Upload file menggunakan class ini sangat mudah dan biasanya proses upload sebuah
file akan terlihat seperti ini:
User ditampilkan sebuah form dan memilih sebuah file untuk diupload
File kemudian di validasi untuk memastikan terpenuhinya preferensi anda
Jika file memenuhi preferensi anda, kemudian file akan diupload ke direktori yang
anda tentukan.
Pengguna akan ditunjukkan pesan sukses atau pesan kesalahan jika file tidak
memenuhi preferensi yang anda set.
Sebelum kita dapat membuat utilitas upload, kita perlu membuat sebuah folder
upload. Buat sebuah folder baru dalam system/application/, dan beri nama uploads.
Jika anda berada pada sebuah web server, anda akan perlu melakukan CHMOD
direktori ini ke 777.

41

Membuat Upload Views


Buat file dalam folder / application/views/, beri nama
upload_form.php, dan ketik kode berikut:

42
Membuat Upload Views (lanjut)
Kita juga perlu sebuah file view untuk menampilkan user sebuah pesan
sukses dan rincian dari file mereka.
Kita akan tambahkan juga sebuah link yang dapat dipilih user untuk
mengupload file lain. Anda harus beri nama file ini upload_success.php.

Kita gunakan fungsi pemanggil anchor() untuk membuat link untuk


upload file lain. Fungsi ini memudahkan kita membuat sebuah link ke
sebuah string URI, tanpa perlu memasukkan URLnya, membuatnya lebih
mudah dan sederhana termasuk HTML. Kita lempar string URI ke
parameter pertama dan link teks ke parameter kedua dari fungsi.

43

Membuat Upload Views (lanjut)

44
Membuat Upload Controller
Kita perlu untuk membuat sebuah controller upload untuk
menangani upload file dan melengkapi semua logika bisnis. Ini
adalah beberapa daftar apa yang akan controller lakukan:
Memuat semua depedensi (library, helpers, dan seterusnya)
Menampilkan form upload ke user
Menentukan jenis file yang dapat diupload oleh user dan ukuran
maksimum file
Validasi file yang akan difupload
Upload file
Menampilkan pesan sukses

45

Controller Awal
Ini controller awal kita, sekarang hanya akan memuat
depedensi yang kita butuhkan, manampilkan file view kita dan
memiliki fungsi kosong untuk proses upload
Kita set aksi form upload untuk upload/do_upload ini adalah
sederhana sebuah string URI dan kenapa fungsinya dinamakan
do_upload

46
Controller Awal (lanjut)

47

Tentukan Jenis file dan Ukuran file Maksimal yang diijinkan

Hal selanjutnya yang perlu kita lakukan adalah untuk


menentukan jenis file dan ukuran maksimal file untuk Class
Upload.
Untuk melakukannya, ubah nilai konfigurasi untuk class upload,
dan inisialisasi clas dengan nilai edit berikut:

48
Upload file

49

Image Manipulation Library


Sekarang kita bangun sendiri sebuah upload gambar
sederhana, kita dapat melihat pada Image Manipulation Library.
Class ini memungkinkan anda membuat thumbnail, crop, dan
mengubah ukuran gambar, memutar gambar dan bahkan
watermark gambar.
Pada kenyataannya banya fungsi yang disediakan oleh class ini
untuk bekerja, folder gambar akan membutuhkan perizinan
untuk write.
Dalam kasus ini kita telah merubah perizinan dari folder upload
ke 777, hal ini memberikannya izin read, write dan execute,
sehingga kita tidak perlu merubah apapun.

50
Inisialisasi Library
Sebelum menggunakan Image Manipulation Library kita perlu
untuk menset sedikit nilai konfigurasi. Kita perlu untuk
menentukan image processing library yang digunakan (dari GD,
GD2, ImageMagick dan NetPBM), gambar yang akan kita lakukan
aksi dan beberapa nilai konfigurasi sedikit lagi
Kita mungkin juga perlu untuk menset beberapa nilai jika kita
membuat sebuah thumbnail.
Inisialisasi class untuk membuat sebuah thumbnail:

51

Membuat Thumbnail & Crop Gambar

Membuat thumbnail

Cropping gambar

52
Contoh Croping Gambar

53

Memutar Gambar
Fungsi ini membutuhkan nilai konfigurasi tambahan yang harus
diset untuk sudut dari putaran.

Terdapat lima opsi nilai untuk ini:


90 memutar berlawanan jarum jam 90 derajat
180 memutas berlawanan jarum jam 180 derajat
270 Memutar berlawanan jarum jam 270 derajat
hor membalik gambar horizontal
vrt membalik gambar vertikal

54
Contoh: Memutar Gambar

55

Membersihkan Nilai dalam Loop


Jika anda melooping melalui file, kemudian anda perlu untuk
membersihkan semua nilai dari gambar sebelumnya. Untuk
melakukannya anda harus menambahkan bris kode pada akhir
dari loop.
Baris ini harus diikutkan, atau image manipulation library tidak
akan memproses multi gambar.

56
Class Pagination
Pagination mengacu pada sistem penomoran halaman daftar dari
link nomor, biasanya ditemukan pada bawah halaman, yang
memungkinkan anda untuk menavigasi ke halaman yang berbeda.
Class Pagination CodeIgniter mudah untuk digunakan dan dapat
dikostum secara total.
Contoh

57

Mengkostumisasi Pagination
Terdapat beberapa item yang dapat anda tambahkan pada
variabel $config atas inisialisasi class. Item berikut merubah
cara penampilan pagination:

Segmen URI tertentu yang terdiri nomor halaman. Class men-


set ini otomatis, tetapi anda dapat merubahnya jika anda
perlukan.

Hal ini menentukan jumlah dari link yang akan ditampilkan pada
tiap sisi dari halaman saat ini.

58
Mengkostumisasi "First" link
Anda juga dapat merubah "First" link.

Hal ini akan men-set teks first link ke "First". Anda dapat
mensetnya ke apapun; Beberapa contoh lainnya mungkin
berupa "<<" atau "1st".

Anda dapat membungkus link ini dengan sebuah tag. Dalam


kasus ini, kita akan membungkusnya dalam tag div, tetapi anda
dapat menggunakan apapun yang anda sukai.

59

Mengkostumisasi "Last" link


Hal ini menggunakan cara yang sama dengan First link;
mudahnya ganti nama item config anda seperti tampilan ini:

60
Mengkostumisasi "Next" link
Untuk mengganti "Next" link, anda akan sekali lagi
menggunakan nilai config dalam cara yang sama dengan
sebelumnya.
Jika anda berniat menggunakan > untuk next link, anda akan
perlu menggunakan entitas HTML &gt;.

61

Mengkostumisasi "Previous" link


Seperti dengan penyesuaian ite lainnya, terdapat tiga
kemungkinan yang dapat digunakan untuk mengubah previous
link seperti yang ditampilkan.

62
Mengkostumisasi "Current Page" link
Anda dapat mengubah cara penampilan halaman saat ini.
Terdapat dua opsi.
Yang pertama adalah tag untuk ditempatkan sebalum lin dan
kedua tag untuk ditempatkan setelah link.

63

Mengkostumisasi "Digit" link


Dua ta dibawah ini akan dibungkus dalam link untuk nomor
halaman.

64
Class Session
Class session mengijinkan anda untuk memaintain status user
disaat mereka mengakses website anda
Class session menyimpan data dalam sebuah cookie, dimana
dapat dienkripsi secar opsional.
Anda juga dapat menyimpan data dalam sebuah database
untuk menambah keamanannya, artinya bahwa cookie user
harus cocok dengan record yang ada pada database.
Secara Default hanya sebuah cookie yang digunakan.
Jika anda mengaktifkan opsi database kemudian anda perlu
untuk membuat tabel database dengan menggunakan langkah
yang diberikan selanjutnya.

65

Inisialisasi Class Session


Session biasanya dijalankan secara global pada setiap
membuka halaman, sehingga class session harus diinisiasi
dengan satu dari controller anda, atau dimuat secara otomatis
menggunakan fitur autoload codeigniter.

66
Autoload Class Session
Jika anda ingin untuk autoload class session mudah, buka file
system/application/ config/autoload.php dan tambahkan session
ke array library.
Hal ini akan dimuat dengan tiap halaman yang dibuka sehingga
anda tidak perlu menambahkan kode pada controller anda
dalam permintaan untuk memuat library.

67

Memuat Manual Class Session


Untuk memuat class session secara manual, mudah tempatkan
baris dari kode berikut kedalam controller anda:

68
Bagaimana Session CodeIgniter Bekerja?
Setiap saat memuat halaman, class session akan memeriksa
untuk melihat jika session saat ini adalah aktif untuk sebagian
user.
Jika session tidak ada atau kadaluarsa, hal ini akan dihasilkan
lagi.
Jika sebuah session tidak ada, informasinya akan diupdate.
Setiap waktu halaman dimuat, user akan diberikan sebuah
session ID baru.
Sekalipun class session dimuat, akan berjalan otomatis. Anda
tidak perlu melakukan apapun untuk mendapatkan operasi diatas
untuk terjadi.
Anda dapat bekerja dengan data session dan bahkan menambah
data anda ke session, tetapi segalanya dilakukan secara otomatis.

69

Apa Yang Disimpan Dalam Session?


Session Codeigniter adalah array sederhana yang terdiri dari data
berikut:
ID Session unik user (merupakan angka yang dihasilkan secara acak,
yang dihash menggunakan MD5 untuk portabilitas, dan dihasilkan
setiap lima menit)
Alamat IP user
User Agent string user
"last activity" timestamp
Data ini disimpan dalam sebuah cookie sebagai sebuah array
serial. Lihat contoh ini:

70
Menambah Data Session
Seperti yang dicatatkan diawal, anda dapat menambahkan
kustum data session anda sendiri.
Hal ini mengijinkan anda untuk menyimpan informasi sebanyak
yang dibutuhkan, seperti apakah atau bukan user yang
terotentikasi dengan cepat.
Untuk menambahkan data ke array session, anda haru
menggukanan kode berikut ini:

71

Hal ini akan menambahkan tiga item ke array session:


username, email dan logged_in.
Jika anda ingin menambahkan data session satu item pada
satu waktu, fungsinya juga mendukung sintak ini:

72
Mendapatkan Data Session
Jadi sekarang anda telah menyimpan kostum datat session anda,
anda akan perlu mengetahui bagaimana mendapatkannya kembali.
Untuk mengembalikan data session pada berbasiskan per item anda
cukup menggukanan kode berikut:

Dimana item adalah nama item dari data yang anda simpan. where
item is the item name of the data that you stored. Kita lanjutkan
dengan user authentication notion dan mendapatkan username.

Jika iterm yang anda coba dapatkan tidak ada, kemudian fungsi akan
mengembalikan FALSE.

73

Membuang Data Session

Membuang sebuah item single session

Membuant multiple Item session

74
Menghancurkan sebuah session
Untuk menghancurkan sebuah session sepenuhnya, anda akan
menggunakan fungsi berikut:

75

Menggunakan Session Database


Sebagai lapisan tambahan dari keamanan, anda dapat
menyimpan data session dalam database.
Hal ini bagus untuk aplikasi yang membutuhkan sebuah level
keamanan yang lebih tinggi, karena menawarkan cara untuk
validasi data session tersimpan dalam cookie.
Ketika data session disimpan dalam sebuah database, setiap
waktu sebuah cookie yang valid ditemukan dalam query
database akan dicocokkan. Jika ID session tidak cocok,
kemudian session akan dihancurkan.
ID session tidak pernah dapat diperbarui, mereka hanya dapat
dihasilkan ketika sebuah session baru terbentuk.

76
Menggunakan Session database (lanjut)
Untuk menyimpan data session dalam database, anda perlu
membuat tabel. Berikut ini dasar SQL query MYSQL, yang
diambil dari CodeIgniter User Guide.

77

Menggunakan Session Database (lanjut)


Anda juga perlu merubah nilai konfigurasi dalam perintah untuk
mengaktifkan opsi database.
Buka file system/application/config/config.php, dan cari baris
berikut:

Ubah menjadi

Jika nama tabel bukaan ci_session, kemudian anda dapat


menggantinya dengan nilai config lainnya:

78
Menggunakan Session Database (lanjut)
Hanya mengubah nilai variabel untuk nama dari session
database
Blok kode akan terlihat seperti ini:

79

Akhir Modul 5
Local Training for IT Capacity Building
for Central & Local Government

Validasi Form dan


Interaksi Database

Pemrograman Web - Mahir

MODUL 6

Ikhtisar Modul
Library Validasi Form
Aturan Validasi
Callbacks
Interaksi Database

2
Kenapa Saya Harus Memvalidasi Form?
Untuk menjawab pertanyaan ini adalah sederhana : Keamanan.
Jika anda meninggalkan form anda telanjang, tanpa validasi dan
kemudian menyimpan informasi langsung ke dalam database, anda
bertanggung jawab untuk serangan. Orang dapat dengan mudah
menempatkan beberapa kode SQL dan dapat melihat dump dari
sebagian atau seluruh database anda.
Dengan menggunakan form validasi dan membuat aturan, anda akan
melarang sebagian besar, jika tidak semua dari praktek ini dari kejadian
tersebut
Dengan memiliki aturan validasi anda dapat membatasi jenis dari data
yang diijinkan dalam form anda.
Terbaik dari semua, Form Validation Library membuatnya mudah untuk
mengisi field form dan untuk menunjukkan kesalahan individu pada tiap
field, membuat secara keseluruhan pengalaman user lebih baik, yang
berarti banyak, di lingkungan dengan banyak form.

Form Validation Library


Dalam bab ini, kita akan kembali ke contact form yang kita buat
dalam pelajaran library, tetapi kita akan menggunakan Form
Validation Library sebagai ganti dari method anda.

4
Prose Validasi Form
Proses Validasi Form berbeda untuk developer dan untuk user.
Baca dan lihat bagaimana pengguna berinteraksi dengan form,
sebaik bagaimana developer akan membuat form.

Proses User
Sebuah form ditampilkan ke user, siapa yang kemudian
mengisinya dan mengirimkannya.
Form Validation Library kemudian mengecek form terhadap
aturan yang diset oleh developer.
Jika sebuah kesalahan terjadi library akan mengembalikan error
dan mereka akan ditampilkan terhadap form dengan field re-
populated. Proses ini berlangsung sampai suatu form valid
dikirimkan.

6
Proses Pengembangan
Anda membuat sebuah form, bersama dengan sebuah nilai
dinamis dari sebuah fungsi form helper hal ini akan re-
populate data jika diinginkan.
Anda juga ditampilkan kesalahan individu atau global dalam file
form view.
Anda menetapkan aturan validasi, yang harus ditaati. Kemudian
anda memeriksa untuk melihat jika proses validasi telah
dijalankan dan jika belum anda membuat file view form.

Contact form
Sebelumnya kita telah memvalidasi form data diri, memeriksa
ketika form dikirimkan, periksa field kosong, validasi email dan
kemudian mengirimkan email.
Pada bab ini, kira akan menggunakan Form Validation Library
untuk melengkapi tugas ini.
Semua kode yang ditunjukkan harus dalam fungsi index() dari
controller email.

8
Memuat Aset
Kita butuh memuat dua library untuk form contact : Form
Validation Library dan Class Email
Kita dapat melakukannya dalam satu baris, dengan
melemparkan sebuah array ke fungsi load->library.

Kita juga butuh memuat dua helpers: the email helper dan form
helper.
Kita akan melakukannya dengan cara yang sama seperti
memuat dua library pada kode sebelumnya.

Setting Aturan
Langkah selanjutnya dalam menggunakan Form Validation
Library adalah untuk menset aturan dari form.
Aturan ini ditetapkan dan harus ditaati.
Cara menetapkan aturan adalah dengan menggunakan fungsi
set_rules() dari Form Validation Library.
Kita menggunakan fungsinya sebagai berikut:

Note: Seperti yang anda lihat, fungsi menerima tiga parameter. Pertama nama
dari field form yang anda ingin tetapkan aturan untuknya. Parameter kedua
adalah nama yang anda ingin berikan kepadanya, untuk dibaca manusia.
Parameter terakhir adalah dimana anda melempar aturan validasi.

10
Daftar dari validation rules

Berikut ini rules yang siap tersedia untuk digunakan:

required numeric
matches[ field_name] integer
min_length[x] is_natural
max_length[x] is_natural_no_zero
exact_length[x] valid_email
alpha valid_emails
alpha_numeric valid_ip
alpha_dash valid_base64

11

Menyiapkan data
Kita juga dapat menggunakan berbagai macam fungsi prepping
untuk menyiapkan data sebelum kita terapkan aturan
kepadanya.
Berikut ini sebuah daftar dari prepping rules yang dapat kita
lakukan:
xss_clean
prep_for_form
prep_url
strip_image_tags
encode_php_tags

12
Aturan
Sekarang kita tahu bagaimana menset aturan dan aturan apa yang dapat
kita gunakan, kita dapat terus dan men-set aturan seperlunya untuk form
kita.
Semua field seharusnya diperlukan, dan field email harus divalidasi untuk
memastikan alamat email berformat benar.
Kita juga ingin menjalankan semua data melalui XSS filter.

13

Cek Proses Validasi


Bukannya memeriksa satu dari field form POST nilai untuk
diperiksa jika form telah dikirim, kita hanya memeriksa untuk
melihat apakah Form Validation Library telah berjalan.
Kita melakukan dengan kode berikut ini:

14
Menggunakan callbacks
Form Validation Library mengijinkan anda untuk menggunakan
callbacks sebagai aturan.
Callback adalah sebuah fungsi sederhana dalam kode controller
anda yang digunakan ditempat, atau bersama dengan sebuah
aturan.
Contohnya, anda ingin menambahkan alamat email user ke
database jika mereka tidak mengirimkan e-mail sebelumnya. Kita
dapat melakukannya dengan callback.
Pertama, buat tabel database. Terdapat tiga field: ID, nama user, dan
alamat email user.

15

Menyertakan callback dalam Aturan


Untuk menambahkan callback dalam rules, mudah tambahkan
awalan nama fungsi dengan callback_.
Berikut rule untuk field email, dengan tambahak callback:

Disini anda dapat melihat kita telah menambahkan rule


callback_add_user ini akan menjalankan email melalui fungsi
add_user() dalam controller kita.

16
Membuat callback
Untuk membuat callback, pertama kita butuh untuk
memutuskan bagaimana ia akan berkerja.
Pertama, kita akan melihat jika e-mail suda ada dalam
database, jika demikian kita tidak akan melakukan apa-apa.
Jika e-mail tidak terdapat dalam database, kita akan
menambahkannya sesuai dengan nama orangnya.

17

Membuat function
Membuat fungsi adalah mudah.
Note: Ketika menggunakan sebuah callback, Form Validation
Library akan melempar nilai dari field ke callback, sehingga
untuk mendapatkan e-mail kedalam callback, kita hanya butuh
untuk membuat sebuah variabel untuk mendapatkannya

18
Memuat Library Database
Kita akan butuh untuk memuat library database. Kita lakukan
sedikit berbeda dengan library lainnya, karena hal ini lebih
besar dibandingkan lainnya.

19

Melakukan Query Database


Tidak akan ada yang detail disini, karena bab selanjutnya
mencakup semua kebutuhan tentang library database .
Untuk melakukan query dasar, kita gunakan fungsi berikut ini:

Kode akan terlihat seperti ini:

20
Menambahkan Sebuah Kondisi
Kita hanya ingin menambahkan nama user dan alamat
emailnya jika emailnya belum ada.
Untuk melakukan ini, kita akan membutuhkan pengecekan
untuk melihat sejumlah baris yang mengembalikan query nol
Untuk melakukan ini, kita akan gunakan sebuah fungsi helper
yang disediakan library database yang disebut num_rows.

21

Menampilkan Halaman Sukses


Untuk menunjukkan user beberapa kemajuan telah dibuat, mari
kita tambahkan di halaman sukses. Cari baris kode berikut:

Tambahkan beris dibawah ini:

Sekarang, buat sebuah file didalam foler


system/application/view diberi nama email_success.php dan
tambahkan baris kode berikut ini didalamnya.

22
Interaksi Database
Database adalah tulang punggung di belakan aplikasi web.
Tanpa sebuah database, anda tidak memiliki tempat untuk
menampung semua data anda dan query SQL dapat menjadi
panjang dan rumit untuk mengetikkannya.
Codeigniter memberi kita cara yang cemerlang tetapi
sederhana untuk berinteraksi dengan database kita.
Library database juga membuat perubahan antara jenis
database dari MySQL ke Oracle misalnya menjadi lebih
mudah, karena bertindak sebagai sebuah pembungkus dan
menyediakan banya fungsi bagi kita untuk menggunakannya
pada database.

23

Memuat Library
Memuat Library Database sedikit berbeda dari memuat library
lainnya
Hal ini karena besarnya dan disamping itu dalam sebuah folder
yang berbeda, tidak seperti library lain

24
Melakukan Query Sederhana
Code igniter memberi kita sebuah fungsi yang dapat melempar
sebuah Query SQL dan query dapat dijalankan pada database.

25

Mengembalikan Nilai
Anda dapat memberikan fungsi $this->db->query() ke sebuah
variabel.
Anda kemudian dapat menjalankan sejumlah fungsi helper
pada variabel dalam rangka untuk mengembalikan data dalam
format yang berbeda.
Contoh:

26
Mengembalikan Hasil Objek
Dalam kasus ini, mengembalikan hasil akan mengembalikan array dari
objek, atau array kosong jika query gagal.
Anda biasanya akan menggunakan fungsi ini dalam sebuah foreach loop.

Jika query anda tidak mengembalikan hasil, CodeIgniter User Guide


mendorong anda untuk memeriksa kegagalan sebelum menggunakan
fungsi ini.

27

Mengembalikan Hasil Array


Anda juga dapat mengembalikan hasil dataset sebagai sebuah
array.
Biasanya, anda akan menggunakan fungsi ini dalam sebuah
foreach loop dengna baik.

28
Mengembalikan Sebuah Objek Baris
Jika query anda hanya diharapkan untuk mengembalikan hasil
tunggal, anda harus mengembalikan baris menggunakan fungsi
berikut.
Baris dikebalikan sebagai objek.

Anda dapat mengembalikan sebuah baris tertentu dengan


melemparkan nomor baris sebagai sebuah digit dalam
parameter pertama.

29

Mengembalikan Sebuah Baris Array


Anda dapat mengembalikan sebuah baris sebagai sebuah
array, jika anda mau.
Fungsi digunakan dalam cara yang sama seperti contoh
sebelumnya.

Anda dapat mengembalikan sebuah nomor baris dengan


melemparkan digit ke parameter pertama juga.

30
Hasil Fungsi Helper
Disamping fungsi helper yang membantu untu mengembalikan
dataset dengan cara yang berbeda, ada beberapa fungsi helper yang
lebih umum lainnya.
Jumlah baris yang dikembalikan
Digunakan dalam cara yang sama seperti fungsi helper lainnya, ini
akan mengembalikan jumlah total dari baris yang dikembalikan dari
sebuah query. Perhatikan contoh berikut:

Jumlah field yang dikembalikan


Sama sperti fungsi sebelumnya,ini akan mengembalikan jumlah dari
field yang dikembalikan dari query anda.

Hasil Bebas
Fungsi ini akan membuang resource ID yang berkaitan dengan
query anda dan membebaskan memory yang berkaitan.

31

Record Aktif
Active Record dalam codeigniter sangat berbeda dengan AR,
anda mungkin menemukan Rail atau framework lainnya.
Cara Active Record dalam codeigniter berkerja adalah anda
membangun query anda menggunakan fungsi yang berbeda.
Untuk query yang mudah, anda mungkin hanya perlu untuk
menggunakan satu atau dua fungsi, tetapu beberapa dari anda
mungkin perlu menggunakannya lebih sebagai contoh, jika
anda harus mencari kondisi tertentu, seperti dimana sebuah
nama user dan password adalah sama.

32
Memilih Data
Semua fungsi dalam bagian ini akan membangun query SQL
SELECT.
Semua dari SQL dalam bagian ini adalah MySQL, system
database lain mungkin sedikit berbeda..
$this->db->get();
$this->db->get_where();
$this->db->select();

33

Memasukkan Data
Memasukkan data menggunakan Active Record adalah sebuah
proses yang sederhana, dan disana hanya dua fungsi yang
anda mungkin butuh untuk gunakan dalam permintaan untuk
memasukkan data dalam database anda.
$this->db->insert();
$this->db->set();

34
Updating Data
Update data adalah bagian yang sangat penting dari setiap
aplikasi web.
Codeigniter membuat ini benar-benar mudah untuk dilakukan.
Fungsi update bekerja di sebagian besar dengan cara yang
sama seperti fungsi insert.
$this->db->update();

35

Hapus Data
Anda dapat menghapus data daru tabel dengan bebagai
macam cara.
Anda juga dapat menghapus field dari sebuah database atau
mengosongkan sebuah database.
$this->db->delete();

36
Akhir Modul 6
Local Training for IT Capacity Building
for Central & Local Government

Otentikasi User

Pemrograman Web - Mahir

MODUL 7

Ikhtisar Modul

Membuat dan Menghubungkan ke database


Front end code (Fungsi Login, Register dan Logout)
Otentikasi Eksternal (Twitter Auth, Facebook Connect)

2
Otentikasi User
Otentikasi user adalah bagian penting dari aplikasi web apapun;
hal ini juga penting untuk anda ketahui bagaimana menangani
otentikasi user anda sendiri, tanpa bergantung pada pihak
ketiga seperti Twitter dan Facebook

Membuat dan Menghubungkan Ke database


Sebelum melakukan apapun, kita perlu membuat database kita.
Buka editor database favorit anda dan buat sebuah database.
Selajutnya anda jalankan kode SQL berikut untuk membuat
tabel users.

4
Ketika sudah selesai, kita perlu mengedit file konfigurasi
database.
Kita melakukannya dengan membuka file
/system/application/config/database.php dan edit baris berikut
sampai benar mencerminkan rincian anda sendiri:

Front end code


Pada Bagian ini, kita akan langsung kode controller dan buat semua dari file
view untuk front end.
Setelah satu ini selesai, kita ke Model kita.
Hal pertama yang kita perlu lakukan untuk controller kita buat sebuah file
dengan nama account.php dalam folder /system/applications/controller/.
Ketika udah selesai, masukkan kode berikut:

6
Fungsi Index
Fungsi berikut yang kita perlukan untuk membuat fungsi index.
Ini akan cukup mudah, karena semua yang perlu kita lakukan adalah
memeriksa untuk melihat apakan user masuk log atau tidak dan
menunjukkan mereka baik dashboard atau halaman login yang
sesuai.
Lihat kode berikut ini:

Details view
Anda juga akan melihat tampilan dengan nama 'details' untuk user jika mereka ke
halaman yang membutuhkan otentikasi tetapi mereka tidak terotentikasi.
Buat folder baru dalam /system/application/views/ beri nama accountkita akan
gunakan folder ini untuk menjaga semuanya terorganisasi.
Kemudian buat file dalam folder tersebut beri nama details.php file ini yang
akan kita gunakan untuk menampilkan ke pengguna pesan pertanyaan untuk
login atau registrasi account.

8
9

Fungsi Dashboard
Fungsi ini memberikan kita masalah kecil untuk diatasi.
Kita ingin dapat memanggil fungsi ini dari fungsi lain dalam class, seperti
yang telah kita lakukan dalam fungsi index.
Dalam kasus ini kita sudah memeriksa untuk melihat apakah user login atau
tidak, sehingga kita mungkin tidak menginginkan ini untuk dilakukan duak
kali.
Untuk mengatasi masalah ini, kita harus melempat bolean TRUE ke fungsi,
seperti yang telah kita lakukan sebuah pengecekan seperti yang anda lihat
dalam fungsi sebelumnya.
Mari kita lihat fungsi dashboard berikut.

10
Dashboard view
File view dashboard adalah file HTML sederhana.
Kita tampilkan tag heading dan menjelaskan ke user apa yang mereka
lihat. Kita juga menyediakan link logout.
Buat file baru dalam folder /system/application/views/account/ beri nama
dashboard.php, dan masukkan kode berikut ini:

11

Dashboard view (lanjut)

12
Fungsi Login
Selanjutnya, kita akan bangun fungsi login.
Hal ini memiliki lebih banyak kejadian sehingga kita akan
melangkah satu tahapan waktu.

13

Form Validasi
Hal pertama yang kita lakukan adalah mengatur beberapa
aturan validasi form
Anda akan melihat bahwa kita menyertakan beberapa callback
dalam aturan.
Callback adalah sebuah fungsi kustom yang kita tulis untuk
memvalidasi isi dari field form
Kita menjalankan semua XSS filter untuk memastikan bahwa semua
proses adalah aman.
Kita juga menetapkan dua variable class untuk username dan
password.
Hal ini agar kita dapat mudah mengakses username dan
password dalam pengecekan callback password, selama anda
hanya dapat mengirimkan satu parameter ke sebuah callback
nilai dari field form.

14
Form Validasi (lanjut)

15

Password check
Pengecekan Password melihat username dan password secara
bersamaan, untuk memastikan password yang benar diberikan
pada username.

16
Menjalankan Validasi
Hal berikutnya yang kita lakukan adalah untuk memeriksa
apakah validasi form telah berjalan sesuai proses atau belum.
Jika iya, hal ini berarti bahwa foem yang telah disampaikan dan
kita harus memproses informasinya. Kita seharusnya
menampilkan form ke user.

17

Login view
Buat sebuah file dengan nama login.php dalam sub direktori
view account, dan tambahkan kode berikut:

18
Login View (lanjut)

19

Success view
Buat file baru dalam sub direktory account dari viewberi nama
success.php.
Masukkan kode berikut ini dalam file:

20
Fungsi Register
Fungsi Register bekerja dengan cara yang sama seperti fungsi
login
Kita akan membaginya sama seperti yang kita lakukan pada
fungsi login

21

Validasi Form
Berikut adalah dafatar dari aturan validasi form yang kita tetapkan untuk
form register.
Sekali lagi semuanya dimaksukkan melalui XSS filter untuk memastikan
semua kemanannya.

22
Pengecekan User Yang Ada
Callback yang kita gunakan untuk memeriksa username tidak
sedang digunakan, tidak terlalu berbeda dengan callback yang
digunakan dalam fungsi login.

23

Pengecekan Email Yang sudah ada


Fungsi ini hampir sama dengan fungsi sebelumnya, perubahannya yang
kita gunakan kata email untuk mengganti username.
Dalam kasus lain hal ini bekerja dalam gaya yang identik.

24
Menjalankan Validasi
Hal selanjutnya yang perlu dilakukan adalah memeriksa apakah routine validasi
sedang berjalan. Jika tidak, kita akan meneampilkan ke user tampilan register.
Jika sedang berjalan, maka kita akan bertindak untuk meregister akun user.

25

Register view
Buat file baru dalam
direktori account dengan
nama register.php dan
masukkan kode berikut
ini kedalam file baru :

26
Register view (lanjut)
Form registrasi harus muncul serupa denan yang ditampilkan
pada screenshot berikut:

27

Error view
Kita tidak perlu sebuah file tampilan untuk banyak kesalahan untuk fungsi login, tetapi
kita lakukan untuk fungsi register.
Dalam skenario lain., hal itu tidak seperti yang akan orang lihat untuk kesalahan ini,
karena jika aplikasi tidak terkoneksi ke database codeigniter akan menampilkan error.
Namun, kita akan menutup segala kemungkingan. Membuat file batu dalam direktori
view account dengan nama index.php. Berikut isi filenya:

28
Fungsi Logout
Seperti halnya registrasi dan login, kita juga ingin mengijinkan
user kita untuk log out.
Berikut ini adalah cara kita melakukannya:

29

Logout view
Buat file baru sekali lagi dalam direktori view accout - dengan
nama logout.php dan masukkan kode berikut ini kedalamnya:

30
Tampilan logout akan muncul seperti yang ditampilkan pada
screenshot:

31

Kode Model
Model adalah sebuah potongan yang sangat penting dari
puzzle.
Jika anda mencoba untuk meregister sebuah akun user anda
akan melihat sebuah pesan kesalahan, karena model sekarang
tidak ada.
Buat file baru dalam direktori /system/application/models/, dan
beri nama account_model.php.

32
Model constructor
Model constructor akan terlihat seperti ini. Hal ini sangat
sederhana seperti pemanggilan sederhana pada parent class
construct dan memuat library database.

33

Membuat Fungsi
Membuat fungsi adalah sesederhana mendapatkannya,
terimakasih pada implementasi Codeigniter Active Record.
Kita dapat sederhana mengambil array melemparkannya dan
memasukkannya dalam database dengan menggunakan fungsi
insert().

34
Fungsi Login
Fungsi login membuat sebuah session baru untuk user dan
menambahkan usernama dan boolean logged_in, diset ke
TRUE
Sekali lagi, ha lini dibuat luar biasa mudah dengan CodeIgniter
Session library.

35

Fungsi Pengecekan Logged in


Fungsi ini memeriksa data session dari user untuk melihat
apakan mereka login atau tidak.
Jika mereka mengembalikan TRUE dan jika tika kita
kembalikan FALSE.

36
Menggunakan Twitter oAuth
oAuth adalah sebuah protokol terbuka untuk keamanan
otentikasi user melalui APIs.
Hal ini mengijinkan user untuk mendapatkan batasan akses ke
website dengan menggunakan pengenal Twitter.
Hal ini kedengarannya metode dari otentikasi user dan tidak
mengambil serlalu banyak perkerjaan untuk mendapatkannya.
Twitter oAuth digunakan oleh ratusan dari pihak ketiga client
twitter dan kombinasi hanya untuk memberikan anda ide
seberapa bergunanya hal tersebut.

37

Bagaimana oAuth Bekerja


Ketika user datang ke halaman login anda, anda mengirimkan sebuah
GET request ke Twitter untuk sekumpulan dari kode request.
Kode request ini digunakan untuk verifikasi user pada website twitter.
User kemudian pergi melalui twitter untuk diijinkan atau dilarang
mengakses aplikasi anda ke akun mereka
Jika mereka diijinkan akses aplikasi, mereka akan diambil kembali ke
aplikasi anda.
URL mereka dapatkan dikirim akan mempunyai sebuah oAuth token
yang ditambahkan diakhir. Hal ini digunakan dalam langkah selanjutnya.
Kembali ke aplikasi anda, anda kemudian mengirimkan GET request lain
untuk beberapa kode akses dari twitter.
Kode akses ini digunakan untuk memverifikasi bahwa user telah datang
langsung dari twitter, dan tidak mencoba untuk menipu token oAuth
dalam web browser mereka.

38
Registrasi Aplikasi Twitter
Sebelum kita menuliskan kode apapun, kita perlu untuk
mendafatarkan sebuah aplikasi dengan twitter.
Hal ini akan memberikan kita dua kode akses yang kita
butuhkan. Yang pertama adalah sebuah consumer key, dan
kedua adalah sebuah secret key.
Keduanya digunakan untuk identifikasi aplikasi kita, sehingga
jika seseorang posting pesan ke twitter melalui aplikasi kita,
nama aplikasi kita akan tampil disamping tweet user.
Untuk mendaftarkan aplikasi baru dengan twitter, anda perlu
mengunjungi http://www.twitter.com/apps/new. Anda akan
diminta untuk foto aplikasi anda dan informasi lain, seperti URL
website, callback URL dan deskripsi terkait lainnya.

39

Mendownload oAuth library


Sebelum kita dapat untuk menuliskan apapun dari library codeigniter
wrapper kita, kita perlu untuk mendownload oAuth PHP library. Hal ini
mengijinkan kita untuk menggunakan protokol oAuth tanpa meuliskan kode
dari goresan kita sendiri.
Anda bisa mencari PHP library pada website oAuth di www.oauth.net/code.
Scroll bawah ke PHP dan klik link untuk mendownloat basic PHP Library;
atau hanya kunjungi : http://oauth.googlecode.com/svn/code/php/ file
yang anda butuhkan bernama OAuth.php.
Download file ini dan simpan dalam folder system/application/libraries/
twitter/ anda akan butuh untuk membuat folder twitter. Kami hanya akan
membuat folder untuk setiap protokol yang berbeda sehingga kita dapat
dengan mudah membedakan antara mereka.
Setelah anda selesai, kita akan buat file library kita. Buat file baru dalam
folder system/application/libraries/, beri nama Twitter_oauth.php. File ini
akan berisikan fungsi untuk mendapatkan kdeuanya request dan token
akses dari twitter dan memverifikasi kredensial usernya.

40
Library base class
Kode berikut adalah versi dari base class dengan semua guts pulled
out.
Sederhana untuk memuat library oAuth dan men-setup sekumpulan
variable untuk menyimpan informasi tertentu didalamnya.
Dibawah ini, saya akan membahas untuk setiap variabel.

41

Controller base class


Controller adalah area utama dimana kita akan bekerja, sehingga hal
ini sangat kursial bahwa merancang cara terbaik untuk
menggunakannya oleh karena itu kita tidak perlu mengulang kode
kita.
Oleh karena itu, kita akan memiliki consumer key kita dan consumer
secret key dalam Controller.

42
Library constructor
Library constructor perlu diketahui apakah kita memiliki sebuah
otentikasi user atau tidak.
Pertama, kita setup sebuah instance baru dari class oAuth
Consumer, Membuat rincian aplikasi kita.
Kemudian kita cek untuk melihat apakah oAuth token telah
dilempat ke fungsi.
Jika mereka memiliki, hal itu berarti user tersebut telah dikembalikan
dari twitter;
Jika tidak, mereka hanya datang ke situs tersebut dan siap untuk
mengklik untuk men-otentikasi sendiri.
Kami melewati data ke fungsi sebagai sebuah array, karena ini
adalah satu-satunya jalan, codeigniter memungkinkan kita
melakukannya dengan $this->load->library function.

43

44
Meminta Token User
Hal pertama yang kita perlu lakukan untuk otentikasi user adalah untuk
meng-query twitter untuk meminta token.
Token ini digunakan untuk otentikasi user agar membiarkan twitter tahu
bahwa mereka datang dari aplikasi kita.
Mari kita lihat fungsi untuk meminta token:

45

Fungsi HTTP
Karena ini merupakan ketergantungan yang cukup besar untuk fungsi
sebelumnya, kita akan pergi melalui pembangunan disini.
Fungsi ini sedikit lebih komplek dibandingkan lainnya. Kita gunakan
cURL untuk menginisiasi request ke Twitter dan mengembalikan
semua nilai dari twiiter.
Jika anda sudah memiliki pengetahuan cURL, kemudian anda dapat
melewatkan penjelasan setelah kode blok berikut.

46
Fungsi HTTP (lanjut)

47

Fungsi Parse
Fungsi yang tergantung selanjutnya adalah salah satu yang
mengurai respon dari twitter ke dalam sebuah array yang dapat
benar-benar kita gunakan.

48
Fungsi Controller index
Seperti semua controller memiliki fungsi default yang disebut index,
ini adalah dimana kita akan memulai kode kita.
Fungsi index akan mendapatkan request token dari twitter dan
kemudian membangun sebuah URL darinya
URL akan pergi ke twitter dengan saru dari token yang melekat,
sehingga twitter mengetahui user berasal dari aplikasi kita.
Kita akan menyimpan token ini dalam sebuah session sehingga kita
dapat memverifikasi user ketika mereka kembali ke aplikasi kita dari
twitter.

49

50
get_authorize_URL function
Fungsi ini mengambil token yang dikirimkan kesana dan
manambahkannya ke Twitter URL. Ini cukup mudah.

51

File View Utama


Kita perlu untuk membuat folder untuk file view terkait Twitter.
Buat folder didalam system/application/views/ folder, beri nama
twitter.
Buat file dengan nama home.php dan ketik kode berikut.

52
Merubah Callback URL Anda
Setelah user mengunjungi aplikasi anda, anda dapat
memverifikasi mereka access token baru dengan twitter untuk
memastikan bahwa mereka datang dari twitter dan tidak
mencoba untuk menipu token untuk mendapatkan akses yang
tidak sah ke aplikasi anda.
Untuk hal ini, kita perlu untuk merubah callback URL sedikit.
Kita akan membuat sebuah fungsi dalam Controller twitter ikuta
yang akan menangani semua hal ini; ini akan
disebutaccess()ini adalah dimana anda perlu merubah
callback URL anda.
Seharusnya akan terlihat seperti ini:

53

Membuat Fungsi access


Fungsi Access melakukan beberapa hal yang sangat penting
untuk otentikasi user secara benar.

54
File view
File view yang kita gunakan sangat sederhana.
Kita melempar variabel $token ke file view; ini selanjutnya echo
nama tampilan user dalam judul dari halaman.

55

56
Mendapatkan access tokens
Mendapatkan access token dari Twitter membutuhkan dua
fungsi baru
Pertama, adalah fungsi get_access_tokens(), dimana hampir
identik dengan fungsi get_request_token().
Kemudian fungsi baru yang disebut parse_access() ini
banyak sekali kemiripan dengan fungsi parse_request(),
meskipun cara kerjanya sedikit berbeda.

57

get_access_tokens()

58
parse_access()
Fungsi ini mengambil pengembalian strang dari Twitter dan
membaginya pada setiap & dan =, membaginya kedalam
oasangan dari array keys dan values.
Fungsi kemudian mengembalikan array untuk digunakan dalam
class.

59

Logging out
Ketika user keluar dari aplikasi anda, anda perlu untuk
menghancurkan semua data session.
Hal ini dimaksudkan agar anda dapat dengan mudah membuat
sebuah session baru dari mereka, jika mereka ingin login lagi
dengan status bersih.
Pergi kedalam kode Controller anda sehingga anda dapat
mengaksesnya dari URI index.php/twitter/logout/.

60
File view untuk halaman ini cukup sederhana.
Buat file baru dalam folder view Twitter beri nama logout.php.

61

Fungsi Debug
Kita harus menambahkan fungsi debug untuk kemudahan
penggunaan.
Ketika fungsi debug dipanggil, kita ingin echo out URL dai API
terakhir yang dipanggil, dan kode status HTTP.

62
Menggunakan Facebook Connect
Facebook Connect adalah seperti Twitter oAuth, tetapi untuk
akun Facebook.
Tidak menggunakan oAuth protocol, sehingga kerjanya nampak
sedikit berbeda untuk developer.
Untuk user bagaimanapun juga berbeda secara marjinal.
Seperti dalam Twitter oAuth, users tidak perlu memasukkan
kredensial akun mereka ke website anda atau aplikasi
semuanya ditangani oleh Facebook.

63

Mendaftar Aplikasi Facebook


Anda perlu mendaftar sebuah aplikasi facebook baru sehingga
anda bisa mendapatkan API key dan Application Secret Key.
Bagian atas dari www.facebook.com/developers/ dan klik pada
tombol Set up New Application dalam atar ujung sebelah
kanan tangan anda.

64
Download Library Client
Ketika anda berada pada halaman aplikasi anda menampilkan semua
informasi aplikasi anda, scroll kebawah halaman untuk melihat
sebuah link ke download Library Client.
Setelah mendownloadnya, kemudian extrak.
Ada dua folder didalam folder facebook-platform, footprints dan php.
Kita hanya menggunakan folder php saja.
Buka folder PHP, terdapat dua file disini kita tidak perlu,
facebook_desktop.php dan facebook_mobile.php anda dapat
menhapusnya.
Akhirnya, kita dapat menyalin folder ini ke aplikasi kita. Tempatkan
pada folder system/application/libraries, dan kemudian ubah nama
folder menjadi facebook.
Hal ini membantu kita untuk menyimpan kode kita rapi dan terurut
dengan benar.

65

CodeIgniter Wrapper
Sebelum kita memulai pengkodean, kita perlu mengetahui apa
yang kita butuhkan untuk kode untuk membuat Facebook Client
Library bekerja dengan instalasi CodeIgniter installation kita.
Library Wrapper kita perlu untuk intansiasi class facebook
dengan API key kami dan Secret Application Key. Kita juga
menginginkannya untuk membuat sebuah session untuk user
ketia mereka login. Jika sebuah session ditemukan tetapi user
tidak terotentikasi, kita perlu menghancurkan session.
Anda harus membuat file baru dalam folder
system/application/libraries/ folder, beri
namaFacebook_connect.php. Disinilah kode library yang
diberikan berikutnya harus ditempatkan.

66
Class Base
Clas base untuk Facebook Connect Wrapper Library adalah
sangat sederhana:

67

Class constructor
Class constructor kami harus melakukan beberapa hal untuk
memungkinkan kita untuk mengotentikasi user anda
menggunakan Facebook Connect.

68
_session();
Fungsi ini mengelola session pengguna codeigniter. Perhatikan kode
berikut ini:

69

Controller
Controller yang kita gunakan untuk otentikasi facebook akan perlu
memanggil facebook connect wrapper, mengatur beberapa variabel lokal
untuk beberapat informasi user dan memuat sebuah file view.
File view akan berisikan elemen spesial HTML untuk menampilkan
informasi facebook.
Tag ini dikenal sebagai Facebook Markup Language (FBML).

70
Controller (lanjut)

71

File View
File View adalah sangat penting untuk kita dan perlu beberapa
penjelasan
Seperti yang anda harapkan dari sebuah aplikasi facebook
connect, logo akan ditempatkan pada halaman web.
Sebuah pop-up box akan muncul ketika anda men-klik nya,
mengijinkan anda untuk log in ke facebook dan mengijinkan akses
ke aplikasi.
Untuk melakukan hal ini, anda perlu tahu FBML. FBML adalah
superset dari HTML dan adds on ke fitur HTML, dasarnya
membiarkan anda mudah menambahkan rincian tertentu facebook
Contoh aplikasi yang sangat sederhana, tapi memberi anda
sekilas tentang FBML, memberikan gambaran tentang apa yang
dapat dilakukan dan bagaimana melakukannya.

72
File View (lanjut)

73

74
Akhir Modul 7
Local Training for IT Capacity Building
for Central & Local Government

Keamanan Aplikasi

Pemrograman Web - Mahir

MODUL 8

Ikhtisar Modul
Pertahanan CodeIgnite
Kebijakan Password yang Kuat
Menyimpan Password secara aman
Keamanan Database
Cross-site Scripting (XSS)
Update System

2
Kemanan Aplikasi
Memastikan bahwa aplikasi anda adalah seaman mungkin seperti
kemungkinan manusia adalah tidak berarti perbuatannya.
Ada begitu banya cara agar aplikasi anda dapat berkompromi bahwa sering
kali sulit untuk menjaga aplikasi anda terkunci seluruhnya sepanjang waktu.
Namun, terdapat langkah-langkah yang memudahkan anda untuk
mengurangi kemungkinan siapa saja dengan beberapa pengetahuan teknik
untuk mendapatkan akses yang tidak sah ke aplikasi anda, atau bagian dari
atau semua dari database anda.
CodeIgniter menangani beberapa langkah, anda tidak perlu melakukan
apapun untuk membuat mereka, mereka akan selalu berada disana
Namun beberapa dari pertahanannya butuh untuk diaktifkan, atau sebuah
tindakan diperlukan untuk mengambil keuntungan darinya.
Kami telah menyentuhnya dengan XSS Filter: dapat diaktifkan secara
permanen atau dapat digunakan atas dasar kasus per kasus untuk setiap
field form.

Pertahanan CodeIgniter
CodeIgniter datang dengan built-in security filter, beberapa dari
filter adalah dengan konvensi dan beberapa membutuhkan
konfigurasi.

4
Keamanan URI
Sebuah URI adalah semua yang datang seterlah alamat web anda. Ketika
menggunakan CodeIgniter, anda akan menerima sebuah URI yang terlihat seperti
ini:

Sebagai tindakan pencegahan keamanan, CodeIgniter hanya mengijinkan karakter


tertentu dalam URI anda.
Anda mungkin hanya memiliki karakter berikut dalam URI anda. Anda dapat
merubah ini dalam file application/config/config.php, untuk menambah atau
membuang karakter yang seharusnya diijinkan dalam URI anda, karakternya
seperti:
Huruf kecil dan Huruf Besar
Angka (09)
Tilde (~)
Garis Bawah (_)
Dash (-)
Period (.)
Titik dua(:)

Global data
CodeIgniter tidak mengijinkan query string untuk digunakan secara
default, class input dan security tidak diset $_GET array selama
inisialisasi sistem
Semua variabel global adalah tidak diset selama inisialisasi sistem,
kecuali yang ditemukan dalam $_COOKIE dan $_POST arrays.
Hal ini adalah efektif sama sperti mematikan register_globals.
Global variabel selalu menjadi resiko keamaan yang sangat tinggi,
sebagai variabel global dapat ditimpa dengan menggunakan script yang
berbahaya.
Hal ini mengijinkan pengguna untuk merubah jalan aplikasi anda
dimaksudkan untuk menjalankan atau merubah cara kerjanya.
Sebagai contoh, sebuah variabel global ditimpa dapat mengijinkan user
untuk memotong proses pendaftaran dan mendapatkan akses ke aplikasi
anda

6
Praktek Terbaik
Sebelum menerima semua jenis dari data ke dalam aplikasi
anda, entah itu dari kiriman form, data COOKIE, data URI, atau
bahkan data SERVER, anda dianjurkan oleh panduan user
untuk mengikuti tiga langkah panduan:
1. Filter data seolah-olah tercemar
2. Validasi data untuk memastikan bahwa itu seperti yang diharapkan
(panjang yang benar, jenis, ukuran dan seterusnya)
3. Escape data sebelum memasukkannya ke database anda

Filtering data
Kami telah menyinggung XSS filter sebelumnya. CodeIgniter
menyediakan Filter XSS yang sangat baik yang memfilter data
dari tiap teknik umum yang digunakan untuk memasukkan kode
JavaScript atau jenis dari kode lain dalam aplikasi anda.
Anda dapat memfilter semua jenis data melalui Filter XSS
dengan membukanya pada file
/system/application/config/config.php dan setting variabel
berikut:

Atau anda dapat memfilter data terpisah, dengan menggunakan


fungsi selanjutnya:

8
Validasi
Form Validation Library adalah tool terbaik yang CodeIgniter
tawarkan untuk memastikan bahwa data yang dikirimkan
adalah dari jenis yang tepat, ukuran dan bahkan panjangnya.

Escaping data
Kami telah menyentuh pada fungsi escaping data yang
diciptakan untuk porsi Record aktif dari library database.
Anda juga dapat melakukan escape data dengan menggunakan
fungsi :

Yang dapat digunakan ketika melakukan sebuah query SQL


menggunakan fungsi ini

10
Kebijakan Password Yang Kuat
Anda harus memastikan bahwa user anda selalu memiliki sebuah
password yang kuat.
Hal tersebut sangat mudah untuk membuat sebuah kebijakan password
dengan CodeIgniter, dengan menggunakan Form Validation Library
Sebagai contoh, anda dapat men-set panjang minimum dan maksimum
dari kolom password. Anda dapat juga mudah memastikan bahwa data
yang dimasukkan dalam kolom password dan konfirmasi password
adalah sama.
Sebuah contoh kebijakan password dapat berupa:
Panjang Minimum 6 Karakter
Panjang Maksimum 12 Karakter
Harus berupa alpha-numeric karakter, bukan symbols
Harus bukan password yang sangat umum digunakan
Harus bukan nama orang tersebut
Harus bukan nama user orang tersebut

11

Contoh Aturan Form Validation Library


Berikut ini apa yang mungkin terlihat pada aturan validasi untuk
password policy yang dinyatakan sebelumnya:

12
Anda akan melihat bahwa kita menggunakan tiga callback.
not_obvious() akan berupa sebuah fungsi untuk menentukan jika
password adalah satu dari password yang sering digunakan.
not_name() akan menentukan apakah password adalah nama orang
tersebut atau bukan.
not_username() akan menentukan apakah password adalah nama
user dari orang tersebut atau bukan.

13

14
15

16
17

Menyimpan Passwords Secara Aman


Password pengguna sangat mungkin data yang paling penting
yang anda simpan pada server anda, sehingga anda harus
memastikan bahwa anda telah mengambil langkah untuk
menyimpannya secara aman.
Kita akan membahas beberapa metode yang berbeda yang
dapat anda gunakan untuk menyimpan password secara aman.

18
Menyimpan Hashes
Menyimpan password sebagai hash mungkin adalah cara
termudah untuk menyimpan password pengguna, dan
digunakan oleh banyak website
Kebanyakan developer akan langsung menggunakan sebuah
hash MD5 karena hal tersebut adalah yang paling diketahui dari
jenis hash yang tersedia untuk developer.
Namun, saya merekomendasikan anda menggunakan hash
sha1, karena lebih panjang dari MD5 dan telah terbukti sulit
untuk menemukan plaintext dibandingkan dengan MD5 hash.

19

Keamanan Database
Hal lain bagian yang sangat penting dari keseluruhan
keamanan apliaksi adalah database anda.
Pastikan semua query adalah benar, semua data harus sudah
lolos sebelum anda menggunakannya dalam sebuah query,
dan jangan pernah mempercayai apapun inputan pengguna
akan semua bantuan, dengan menjaga database anda.

20
Escape queries
Kita telah berada pada method dari codeigniter yang digunakan
untuk escape data anda, pada awal bab ini.
Kali ini akan kita bahas bagaimana lolos dari bagian yang
berbeda dari sebuah query tanpa Codeigniter, karena ini adalah
kemampuan yang harus dimiliki setiap developer.
Pertama, semua nama tabel database dan nama field harus
lolos dengan menggunakan backtics (`).
Hal ini juga menghindari masalah dimana nama adalah kata
yang diperuntukkan. Hal ini sangat berguna ketika
menggunakan klausa WHERE yang digunakan pada field id
primary key. Berikut ini contohnya:

21

Kedua, semua variabel yang terkandung dalam sebuah query


harus benar-benar lolos dengan menggunakan satu dari
method:
Fungsi $this->db->escape()
Fungsi $this->db->escape_str()
Fungsi $this->db->escape_like_str()
Query bindings

22
Membatasi Akses Akun
Anda harus membuat sebuah akun pengguna baru untuk
database anda setiap kali aplikasi baru memiliki kebutuhan
khusus.
Sebagai contoh, jika anda menggunakan akun root untuk
aplikasi tetapi anda hanya melakukan operasi, read, write dan
delete kemudian anda tidak membutuhkan kemampuan untuk
create, edit atau remove tabel.
Alasan dibelakang ini adalah jika seseorang ingin mendapatkan
akses ke database anda dan mampu menjalankan query,
mereka tidak akan mampu menghapus tabel, seperti MySQL
(atau apapun database yang anda gunakan) akan membatasi
jenis query dari query yang akun pengguna dapat buat.

23

Kasus utama untuk titik ini akan menjadi SQL injection. SQL injection
adalah dimana sebuah string seperti OR, or =, dimasukkan dalam
sebuah form atau URL dimana hal tersebut akan dijalankan pada
database.
Hal ini biasanya akan mengembalikan pesan error yang dapat digunakan
pengguna jahat untuk kembali menggali dari bagian atau semua dari
database anda
Jika anda belum dapat secara benar meloloskan query anda kemudian
sebuah pengguna dapat menjalankan sebuah query seperti ini pada
database anda:

Hal ini akan mengijinkan mereka untuk benar-benar menghapus tabel


users dari database. Teteapi dengan membatasi akses ke akun database
kita dapat benar-benar menghentikan hal ini terjadi, karena query tidak
akan dapat berjalan dengan benar.

24
Cross-site scripting (XSS)
Cross-site scripting (XSS) adalah sebuah jalan untuk
memasukkan kode JavaScript jahat kedalam aplikasi anda.
Jenis eksploit ini dapat digunakan untuk membajak cookie user,
yang dapat secara efektif membiarkan pengguna
menginjeksikan kode mengambil ID tiap user pada website
anda, secara mudah dengan menghubungkan mereka ke situs
anda dengan kode yang ditambahkan didalamnya.

Anda juga dapat menggunakan XSS filter sebagai sebuah


aturan dengan Form Validation Library. Hanya menset aturan
terahir menjadi xss_clean.

25

Merubah Struktur File Default


Mengubah cara kerja aplikasi anda dapat menjadi cara yang baik untuk
mengamankan aplikasi anda.
Dengan CodeIgniter anda dapat merubah folder system dan
menempatkannya diatas root web, membuatnya tidak dapat diakses dari
browser windows.
Anda dapat mengganti nama folder application dan menariknya keluar dari
folder system
Melakukan hal ini mungkin menjaga aplikasi anda lebih aman daripada
hanya dengan menjaga struktur default.
Alasa utama dibalik ini adalah jika celah ditemukan dalam inti codeigniter
kemudian tidak ada yang bisa bertindak atasnya, karena anda telah
mengganti folder system anda dan tidak akan diakses oleh dia
bagaimanapun caranya.
Merubah nama folder application membuat orang mudah
mengidentifikasinya sebagai sebuah project codeigniter, sehingga
membatasi cara mereka yang mencoba untuk melanggar aplikasi.

26
Setelah anda mengubah nama folder application dan system dan
memindahkan keduanya (application keluar dari system , dan
system keluar dari web root), buka index.php dan ubah variabel
berikut:

Begini tampilan struktur file anda seharusnya:

27

Selalu up-to-date
Ingatlah untuk memperbarui aplikasi codeigniter dan versi dari
PHP (jika memungkinkan) untuk selalu up-to-date dan menutupi
patch keamanan.
Dengan menghapus folder system anda keluar dari web root,
anda mampu untuk menggunakan satu folder system untuk
semua aplikasi anda, hal ini membuatnya lebih mudah untuk
meng-upgrade beberapa aplikasi sekaligus tanpa repot sama
sekali.
Mengawasi website codeigniter dan twitter untuk update versi
terbaru.

28
Akhir Modul 8

Anda mungkin juga menyukai