Anda di halaman 1dari 100

Disusun oleh Guson Kuntarto

Universitas Multimedia Nusantara

PHP Security: Introduction. Konfigurasi server. SQL injection. XSS & Securing Session. Golden Rules -> Filter & Escape. Magic Quotes.

XML and PHP Regular Expression (POSIX and PERL) PEAR Debugging PHP6

PART I

Pada pertemuan ini akan dibahas tentang.


Pengantar XML, meliputi.
Sintaks XML, Bagaimana membuat dokumen XML.

PHP mem-parsing dokumen XML (DOM XML). Men-generate dokumen XML menggunakan PHP. Pemanfaatan dokumen XML di dalam aplikasi web (RSS).

XML (eXtensible Markup Language) adalah satu dari sekian banyak teknologi untuk sharing data antara komputer dan aplikasi. XML menyediakan sebuah format guna menyimpan tidak hanya informasi akan tetapi informasi tentang informasi (metainformation). Sama seperti HTML, XML berbasis Standard Generalized Markup Language (SGML).

XML, diatur oleh sebuah konsorsium di bawah World Wide Web Consortium (W3C), dengan beberapa tujuan sebagai berikut.
Sebagai sebuah standar, bukan sebagai proprietary technology yang hanya dimiliki oleh satu perusahaan saja. Dapat secara fleksibel menyimpan bermacam-macam informasi. Dapat secara mudah dibaca oleh manusia dan komputer. Dapat memeriksa keabsahan (validity) dan integritas (integrity)

Sebuah kode HTML<strong>XML</strong> mengindikasikan bahwa kata XML harus ditampilkan sebagai emphasized text. XML menggunakan tags (< >) untuk enkapsulasi potongan informasi. Berbeda dengan HTML tags, XML tags tidak akan tampil seperti HTML. Karena tujuan dari HTML adalah menyajikan informasi sedangkan XML adalah identifikasi informasi.

XML opened by Mozilla Firefox 3.6.13

HTML opened by Mozilla Firefox 3.6.13

PHP memiliki support built-in untuk XML dalam bentuk ekstensi. XML disusun (compiled) dalam secara default, sehingga tidak diperlukan konfigurasi tambahan untuk menggunakan XML. Tampilan phpinfo() guna memeriksa xml

Document Object Model (DOM) adalah sebuah interface yang berguna untuk mengijinkan elemen dokumen XML di baca dan diupdate oleh sebuah program. Setiap elemen dari dokumen muncul sebagai object dengan methods dan attributes yang dapat dimanipulasi oleh program.

Implementasi DOM yang paling populer adalah JavaScript di dalam browser yang dapat meng-update konten dari sebuah laman HTML. Dari perspektif PHP, DOM memungkinkan penanganan dokumen XML sebagai struktur data biasa.

Memeriksa ketersedian library XML-DOM dalam PHP melalui phpinfo().

Contoh. Books.xml Parent tags <books> memiliki set tags <book>. Di mana tag <book> terdiri dari tags <author>, <publisher>, dan <title>.
author Christopher Cosentino Advanced PHP for Web Professionals Prentice Hall PTR

book

publisher

title books author

Leon Atkinson Core PHP Programming, Third Edition Prentice Hall PTR

book

publisher

title

Books.xml

Kode untuk membaca books.xml dan menampilkan isi menggunakan DOM ditampilkan di bawah ini (xml_dom.php).

Penjelasan xml_dom.php
1. Dimulai dengan tag php, 2. Membuat instance (object) baru (new) dari

sebuah DOMDocument. 3. Lalu, memuat (loading) books.xml ke dalam object menggunakan method load.

Penjelasan xml_dom.php (line 5 15)


Script menggunakan method getElementsByName untuk mengambil list semua elemen. Dalam loop book, script menggunakan method getElementsByName untuk mengambil nodeValue untuk setiap node tag yaitu author, publisher, dan title. nodeValue adalah teks dalam node.

Penjelasan xml_dom.php (line 17 -19) Script kemudian menampilkan nilai-nilai $title, $author, & $publisher. End of loop, dan tutup tag php. Hasil di browser

Bagaimana jika diinginkan menulis XML menggunakan DOM ? Script PHP berikut menunjukkan bagaimana menulis dokumen XML menggunakan library DOM.

xml_dom_writing.php
Array dari books, yang Terdiri dari title, author, dan Publisher. Di mana semua elemen Diberikan value. Membuat instance $doc dari DOMdocument Membuat root node yaitu Books dengan cara createElement(books), dan menambahkan Child node dari root node: appendChild($r)

xml_dom_writing.php
Untuk setiap (foreach) book dibuat elemen menggunakan method createElement untuk author, title, dan publisher. Element tersebut merupakan child Dari root <book>. Dan guna menambahkan value text node untuk setiap nodesnya digunakan method createTextNode Value createTextNode diambil dari array yang telah dideclare sebelumnya.

Langkah terakhir untuk setiap node <book> di re-attach Ke dalam root node <books>

Preview on webbrowser

Bagaimana jika tidak ada akses untuk menggunakan XML DOM library? Parsing document XML dapat dilakukan dengan menggunakan regular expressions.

PART II

Regular expression menyediakan fondasi guna pencocokan (match) data menurut aturan sintaks yang didefinisikan. Regular expression tidak lebih dari sebuah pola (pattern) dari sebuah karakter, yang digunakan untuk pencocokan sebuah teks.

PHP memiliki library yang mendukung implementasi regular expression:


POSIX (Portable Operating System Interface for Unix) dan PERL.

Bracket [] digunakan untuk mewakili suatu list/ range karakter yang akan dicocokkan. Contoh:
[0-9] mencocokan sembarang digit desimal dari 0 s/d 9 [A-Za-z] mencocokan sembarang karakter dari huruf besar A sampai dengan huruf kecil z.

Quatifiers, kadang kala kita ingin membuat regular expression untuk mencari karakter berdasarkan posisi.
Contoh, pencarian string yang mengandung satu atau lebih huruf p, atau pencarian string yang mengandung setidaknya dua huruf p, bahkan string yang diawali dan diakhiri dengan huruf p

Contoh: p+ mencocokan sembarang string yang mengandung paling sedikit satu huruf p. p* mencocokan sembarang string yang mengandung zero atau lebih dari satu huruf p. p? mencocokan sembarang string yang mengandung zero atau satu huruf p. p{2} mencocokan sembarang string yang mengandung dua huruf p.

Contoh: p{2,3} mencocokan sembarang string yang mengandung dua atau tiga huruf p. p$ mencocokan sembarang string yang diakhiri dengan huruf p. ^p mencocokan sembarang string yang diawali dengan huruf p. [^a-zA-Z] mencocokan sembarang string yang tidak mengandung sembarang karakter dari a s/d z dan A s/d Z. <b>(.*)</b> mencocokan sembarang string yang berada dalam tag <b> dan</b>

Predefined charcter range, antara lain.


[:alpha:]: huruf kecil dan huruf besar alphabetical characters [:alnum:]: huruf kecil dan huruf besar alphabetical characters dan numerical digits. Dapat pula ditetapkan [A-Za-z0-9]. [:cntrl:]: Control characters seperti tab, escape, atau backspace. [:punct:]: Punctuation characters, termasuk ~ ` ! @ # $ % ^ & * ( ) - _ + = { } [ ] : ; ' < > , . ? dan /. [:graph:]: Printable characters yang ditemui pada range ASCII 33 to 126.

PHP menawarkan tujuh functions untuk pencarian string menggunakan POSIX-style regular expressions, antara lain.
ereg(), eregi(), eregi_replace(), ereg_replace(), dan sql_regcase().

ereg() case-sensitive, sedangkan untuk caseinsensitive adalah eregi(). Format:


boolean ereg(string pattern, string string [, array regs]) boolean ereg(string pattern, string string [, array regs])

Contoh:

Output di webbrowser

ereg_replace() case-sensitive, sedangkan untuk caseinsensitive adalah eregi_replace(). Function mirip seperti ereg() dan eregi(), tidak hanya mencari tetapi dapat menggantikan pola dengan string pengganti Format:
string ereg_replace(string pattern, string replacement, string string) string eregi_replace(string pattern, string replacement, string string)

Contoh:

Output di webbrowser

sql_reqcase() function ini digunakan ketika menggunakan aplikasi PHP untuk berkomunikasi dengan aplikasi lain yang hanya support case-sensitive regular expression saja. Format:
string sql_regcase(string string)

Contoh:

Output di webbrowser

Perl dikenal sebagai the most powerful parsing languages. Menyediakan secara lengkap regular expression yang dapat dipergunakan untuk mencari (search) dan menggantikan (replace) bahkan untuk string pattern yang rumit sekalipun. Developer PHP memanfaatkan keunggulan perl, dengan menyediakan Perl regular expression sintaks availabel untuk pengguna PHP.

Ada kemiripan antara Perl dan POSIX, dimana perl regular expression dapat menggunakan quantifier sebagaimana yang telah dipergunakan oleh POSIX. Selain quantifier, dikenal istilah modifier. Modifier berfungsi untuk menyembunyikan interpretasi dari regular expression. Contoh modifier:
i menjalan pencarian case-insensitive s memerlakukan string sebagai single line, mengacuhkan newline character yang ditemui. x mengacuhkan white space dan komentar

Modifiers diletakkan secara langsung setelah regular expression. Sintaks


/string/modifier

Contoh
/wmd/i Mencocokan WMD, wMD, WMd, wmd, dan variasi lainnya dari string wmd

Selain modifier, dikenal juga istilah metacharacters. Metacharacter adalah karakter abjad yang didahului dengan backslash yang memiliki arti khusus. Contoh
\A: mencocokan hanya pada awal sebuah string. \d: mencocokan digit character. Sama halnya dengan [0-9]. \D: mencocokan nondigit character. \s: mencocokan whitespace character. \S: mencocokan nonwhitespace character.

PHP menawarkan tujuh function untuk pencarian string menggunakan perlcompatible regular expression, yaitu.
preg_grep(), preg_match(), preg_match_all(), preg_quote(), preg_replace(), preg_replace_callback(), and preg_split()

preg_match() berfungsi mencari string dengan pola tertentu, jika string ditemukan maka pencarian dihentikan dan return 1. Sebaliknya return 0.
Sintaks: (case-sensitive)
int preg_match(search_pattern, your_string)

preg_match_all() digunakan untuk mencari string secara keseluruhan untuk pola tertentu dan menyimpan seluruh hasilnya dalam array.
Sintaks: (case-sensitive)
int preg_match_all (pattern, string, $array, optional_ordering, optional_offset)

Contoh: preg_match

Hasil di browser

Contoh: preg_match_all

Hasil di browser

preg_replace() berfungsi mencari dan mengganti string atau array. Sebagai contoh mencari kata him lalu menggantikannya dengan kata her.
Sintaks: (case-sensitive)
preg_replace ( search_for, replace_with, your_data , optional_limit, optional_count )

Contoh: preg_replace

Hasil di browser

preg_grep() berfungsi mencari array dengan pola tertentu lalu return menjadi sebuah array baru sesuai dengan proses filtering.
Sintaks:
preg_grep ( search_pattern, $your_array, optional_inverse )

Contoh: preg_grep()

Hasil di browser

preg_split () digunakan untuk mengambil string, dan memasukkannya ke dalam array. String tersebut dipecah menjadi nilai yang berbeda dalam array berdasarkan masukan Anda.
Sintaks:
preg_split ( split_pattern, your_data, optional_limit, optional_flags )

Contoh: preg_split()

Keterangan: PREG_SPLIT_NO_EMPTY no empty results are returned - 1 = no limit (default)

Hasil di browser

PART III

Good programmers write solid code, while great programmers reuse the code of good programmers.......

Bagi PHP programmers, PEAR adalah akronim dari PHP Extension and Application Repository. PEAR adalah cara yang paling efektif di dalam mencari dan memakai ulang (reusing) Kode PHP yang solid. Terinspirasi dari CPAN (Comprehensive Perl Archive Network), Project PEAR dimulai tahun 1999 oleh PHP developer Stig Bakken, Rilis pertama pada PHP version 4.3.0.

PEAR dikemas dalam packages. Bagaimana cara memeroleh packages tersebut?


Visit http://pear.php.net/packages.php, lalu download packages yang diinginkan.

PEARs package

Jika anda menggunakan XAMPP, package PEAR telah terinstal di dalam folder C:\Program Files (x86)\xampp\php\pear Periksa pula phpinfo().

Beberapa package yang populer


1. AUTHENTICATION 2. PAYMENT 3. HTML_AJAX 4. TEXT_CAPTCHA 5. IMAGE 3D 6. More...............

Captcha adalah jenis tes tantangan-respon yang digunakan dalam komputasi untuk memastikan bahwa respon ini tidak dihasilkan oleh komputer Guna membuat captcha, diperlukan beberapa package PEAR, yaitu.
TEXT_CAPTCHA ver 0.4.1 IMAGE_TEXT ver 0.6.0 FONTS

Example: Generating Captcha using PEAR

Package PEAR lainnya adalah membuat citra 3D. Guna membuat citra 3D, diperlukan beberapa package PEAR, yaitu.
IMAGE_3D ver 0.4.1

Example

PART IV

DEBUGGING

Debugging adalah proses mencari dan mengurangi bugs (defects) di dalam program komputer. Debugging menjadi lebih susah ketika bermacam subsistem digabungkan, perubahan di salah satu subsistem dapat menyebabkan bugs . It is a common issue that fixing a bug can produces more bugs
71

Cara termudah untuk menampilkan pesan kesalahan (error dan warning messages) dengan cara mengaktifkan line di bawah ini (php.ini). Terdapat empat belas level error reporting. Seperti yang ditunjukkan pada slide berikut.

72

level error reporting

73

Beberapa contoh penggunaan.


Show all errors, except for notices and coding standards warnings error_reporting = E_ALL & ~E_NOTICE Show all errors, except for notices error_reporting = E_ALL & ~E_NOTICE | E_STRICT Show only errors error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR

74

Syntax Errors
Syntactical errors atau parse errors secara umum disebabkan kesalahan pengetikan (typo) kode program. Sebagai contoh, missing semicolon, quotation mark, brace atau parentheses.

Warning
Warnings berbeda dengan syntax errors. PHP dapat mengatasi kesalahan dengan peringatan (warning). Peringatan muncul ketika kesalahan terjadi. Sebagai contoh, disebabkan oleh penulisan jumlah parameter yang salah ketika memanggil sebuah function.
75

Notices
Notices are not going to halt the execution of your code either, but they can be very important in tracking down a pesky bug. Often youll find that code thats working perfectly happily in a production environment starts throwing out notices when you set error_reporting to E_ALL. For example, undefined variable or index in a array
76

Fatal Errors
Fatal Errors terdengar sangat painful tetapi paling mudah diselesaikan (resolve). Umumnya, fatal error muncul ketika sebuah undefined class atau function dipanggil.

77

Logic Errors
Secara umum, bug seperti ini yang sulit untuk diatasi (resolve). Penyebab utama adalah kesalahan kalkulasi formula/ angka/ logic steps.

78

Jika anda menggunakan XAMPP, dimana web server yang dipergunakan adalah apache (mis: ver 2.2.2), Maka web server harus diberikan hak untuk menulis log ke dalam file yang telah ditentukan. Log ditulis pada folder di bawah ini. C:\Program Files (x86)\xampp\apache\logs

Contoh: error.txt
error logging (error)

Error logging (notice)

Secara umum, debuggers adalah software tools yang dapat programmer untuk
memantau eksekusi sebuah program, menghentikan (stop) eksekusi, mengulangi (re-start) eksekusi, mengatur (set) breakpoints, merubah nilai dalam memory,

81

Secara umum terdapat dua metode guna debugging server-side code. 1. Dapat menggunakan Integrated Development Environment (IDE) yang memiliki built-in debugger atau log.
2.

Menggunakan web browser dengan menginstal add-on sebagai debugger. Cara termudah untuk debugging aplikasi tanpa memodifikasi konfigurasi server. Contoh: FirePHP 0.5.0
82

Apa saja yang dibutuhkan?


Firefox 3.5 higher (contoh: 3.6.13) Firebug 1.6.0 FirePHP 0.5.0 FirePHPCore 0.3.2

Proses instalasi firebug dan firePHP

Pastikan proses instalasi firebug & firePHP pada firefox sukses

Download FirePHPCore 0.3.2

Letakkan folder firePHPcore didalam folder yang akan didebug, mis: htdocs/webprog/week14/firePHPcore/ Buatlah file mis: debug_01.php guna melakukan uji coba debugging. Struktur kode php ditunjukkan pada slide berikut.

Debug_01.php

Aktifkan panel firebug (F12) pada web browser firefox. Pastikan panel firebug, Net dan Console aktif

Hasil debugging script debug_01.php

Jika di klik pada

Maka akan muncul variable viewer

FirePHP memerbolehkan untuk log Firebug Console menggunakan PHP method call. Dimana, semua data dikirim menggunakan satu set X-FirePHP-Data response headers Untuk kepentingan tersebut, PHP memiliki library yang menyediakan function guna menangani pengiriman data ke client side, yaitu fb().

Contoh: debug_02.php

Tampilan web browser firefox

Diperlukan xDebug, hanya running untuk PHP versi 5.2.x dan 5.3.x. Tidak disarankan untuk menggunakan xampp dibawah versi 1.7.0, di mana PHP bundle paling di bawah 5.2.x. Tutorial untuk menginstall xDebug:
http://netbeans.org/kb/docs/php/configure-php-environmentwindows.html

Diperlukan xDebug, hanya running untuk PHP versi 5.2.x dan 5.3.x. Tidak disarankan untuk menggunakan xampp dibawah versi 1.7.0, di mana PHP bundle paling di bawah 5.2.x. Tutorial untuk menginstall xDebug:
http://netbeans.org/kb/docs/php/configure-php-environmentwindows.html

Tutorial untuk melakukan Debugging kode PHP menggunakan NetBeans IDE


http://netbeans.org/kb/docs/php/debugging.html

PART V

PHP 6 support Unicode (UTF-8), ini berarti PHP mampu menangani karakter dari segala jenis bahasa di dunia ini. Seiring dengan class libraries yang terus berkembang, besar kemungkinan akan dijumpai dua libraries menggunakan nama class yang sama. Pada PHP versi terdahulu, hal ini tidak dimungkinkan dalam satu file PHP mengakses dua class yang memiliki nama yang sama. PHP 6 overcome masalah ini dengan Namespace.

Didukung dengan XMLWriter dan XMLReader, class berbasis Object-oriented yang dapat membaca dan menulis dokumen XML. SOAP extension ON by default. Pada PHP versi 5 SOAP extension diperkenalkan melalui PEAR library dan tidak diset sebagai default. Pada versi 6, memungkinan platform (java, .NET) yang berbeda dapat memiliki interoperabilitas.

Fitur yang dihapus


Magic Quotes Register global ereg(), eregi(), ereg_replace(), dan ereg_replacei() sama dengan preg_match() dan preg_replace() FreeType 1 and GD 1.

XML and PHP Regular Expression (POSIX and PERL) PEAR Debugging PHP6

Bradley, A., 2010, Introduction to Preg PHP, URL:


http://php.about.com/od/advancedphp/ss/php_preg.htm

Dorn, C., 2010, FirePHP: Print to Firebug Console from PHP, URL: http://code.google.com/p/firephp/ firePHP, URL: http://www.firephp.org/HQ/Learn.htm Gilmore, 2008, Beginning PHP and MySQL: From Novice to Professional, Third Edition , Apress. Good, N. A., 2008, The Future of PHP, URL:
http://www.ibm.com/developerworks/opensource/library/os-php-future/

Herrington, J., 2005, Reading and writing the XML DOM with PHP, IBMs technical library, URL:
http://www.ibm.com/developerworks/library/os-xmldomphp/

PHP PEAR, URL: http://pear.php.net/packages.php/

Anda mungkin juga menyukai