PHP Saat Ini

2 Oktober 2016

PHP adalah bahasa skrip yang sangat sesuai digunakan untuk pengembangan Web. PHP merupakan Hypertext Prepocessor yang ditemukan oleh Rasmus Lerdorf dengan bahasa c sebagai basisnya.

Bahasa skrip merupakan bahasa pemrograman yang telah menyediakan fasilitas deskripsi dan enkripsi kode dalam satu proses rangkaian, dengan cara ini membuat kode dapat langsung dijalankan tanpa perlu diubah menjadi bentuk lain. Selain PHP bahasa skrip yang saat ini banyak digunakan antara lain Javascript dan perl.
php

Untuk dapat memulai php, anda perlu menggunakan server web dan php. Di internet telah banyak dikembangkan paket web server dengan php yang dapat anda gunakan. Paket tersebut antara lain:

  • AMPPS
  • XAMPP (untuk windows, Mac OS dan Linux)
  • WAMPP (untuk windows)
  • LAMP (untuk Linux)
  • MAMP (untuk Mac OS)
  • WampServer (untuk windows)
  • easyPHP (untuk windows)
  • USBWebserver
  • OpenServer (untuk windows)
  • PHPStudy (untuk windows)
  • WPN-XM (untuk windows)


Sejak versi 5.4.0 server php dapat dijalankan melalui command prompt dengan perintah:
php -S Localhost:8000
Setelah perintah diatas dijalankan, server akan menyiapkan port 8000 sebagai direktory yang bekerja sebagai root.

Versi PHP saat ini dapat diupdate dengan cara migrasi berikut versi yang dapat dimigrasi ke versi diatasnya:
5.2.x ke 5.3.x
5.3.x ke 5.4.x
5.4.x ke 5.5.x
5.5.x ke 5.6.x
5.6.x ke 7.0.x

Pada 30 July 2014 disepakati untuk melompati versi 6 untuk menghindari kebingungan. PHP6 dianggap spesial terlebih karena mendukung unicode. Unicode adalah tehnik mengatur kode biner untuk text dan bentuk tulisan lainnya. Tehnik ini dibuat untuk menjembatani karakter yang berbeda dengan karakter tulisan latin. Telan ada rilis resmi terkait PHP 6, banyak buku dan artikel yang telah menulis mengenai versi ini.

Contoh penulisan Skript PHP
Skript berikut menampilkan Hello World! pada layar.
<?php
echo 'Hello World!';
?>
Agar skrip dapat dijalankan anda perlu menyimpan kode tersebut dalam file hello.php pada direktori kerja server anda. Kemudian melalui command prompt dapat dijalankan dengan perintah php hello.php

Untuk menampilkan Informasi Pengaturan
Anda dapat membaca informasi pengaturan dengan skript sebagai berikut:
<?php
phpinfo();
?>
Simpan file dalam file phpinfo.php kemudian tempatkan dalam folder root server anda. Anda dapat memanggil melalui browser dengan alamat: 
http://localhost/phpinfo.php
Jangan lupa menghapus file tersebut untuk keamanan server anda.

Database yang Mendukung

Banyak Jenis database yang mendukung php baik relational dan non relational. Biasanya PHP dipaket dengan MySQL, Namun PHP sebenarnya juga sesuai bila dipasangkan dengan database yang lain seperti: PostgreSQL, SQLite, MicrosoftSQLServer, Oracle, IBM DB2 &Cloudscape, Apache Derby bahkan ODBC.

Versi PHP modern sudah mendukung PDO, Dan yangterbaru telah dilengkapi dengan PECL ekstensi sehingga memungkinkan untuk digunakan dengan NoSQL Database. Seperti dengan Apache Thirft untuk Apache Cassandra, MongoDB, Redis dan lainnya.

Dukungan SAPI

Seperti banyak aplikasi yang lainnya, WebServer menyediakan API (Application Programming Intervace) untuk dikembangkan menggunakan pihak ketiga. PHP dapat dijadikan modul untuk ditempel di suatu web server. Tidak semua web server menyediakan slot untuk ditambahkan modul. Server Slot yang disediakan oleh web server dikenal dengan SAPI (Server API). Dengan SAPI, php dapat berjalan pada Web Server yang berbeda layaknya bahasa server scripting yang digunakan saat ini. List web Server yang mendukung SAPI antara lain:

  • Apache HTTP Server (versi 1.3x, 2.x)
  • Microsoft IIS
  • thttpd (tiny/turbo/throttling HTTP server)
  • Caudium
  • AOLServer 3.1 
  • Netscape Enterprise Web Server

dan lain-lain


Framework

PHP memiliki banyak macam Objek Oriented Web Application Framework yang telah mendukung berbagai fungsi Aplikasi web modern. Beberapa framework tersebut diantaranya:

  • Agavi
  • Aura
  • CakePHP
  • CodeIgniter
  • Fat-Free
  • Flow3
  • FuelPHP
  • Kohana
  • Laravel
  • Limonade
  • Lithium
  • Nette
  • Phalcon
  • Symfony
  • xAjax
  • Yii
  • Zend Framewok
  • Zeta

dan masih banyak lagi


Content Management System (CMS)

Selain framework, PHP juga memiliki banyak CMS  yang dapat digunakan orang awam (bukan programmer). Beberapa dari CMS tersebut merupakan produk Sumber terbuka (Open Source) dan sebagian yang lain proprietary. Diantara CMS tersebut antara lain:

  • CMS Made Simple
  • Drupal
  • Joomla
  • WordPress
  • OpenCart
  • Magento

dan masih banyak lagi


Object Relational Mapping (ORM)

ORM merupakan salah satu cara untuk menjembatani perbedaan objek dengan struktur tabel di database dan bisnis objek di applikasi. Beberapa ORM di PHP antara lain:

  • Doctrine
  • Eloquent
  • Propel
  • Redbean

dan masih banyak lagi yang lain.
Bagaimana? anda tertarik belajar PHP?

Status CodeIgniter Sekarang

8 Agustus 2016

Sekarang code igniter sudah mencapai versi ke 3.1.0. Codeigniter versi terbaru memiliki  paket yang lebih ringkas dari pada versi pendahulunya. Versi terbaru memiliki ukuran paket file 2 Mb dan sudah termasuk user guidenya. Ukuran yang ideal untuk framework php dengan segala kelebihannya termasuk kecepatannya yang stabil. 

Baik versi 2.x.x maupun sampai versi 3.10 ini, CodeIgniter support dengan HMVC. Dan sudah saya coba dengan migrasi versi CodeIgniter menggunakan HMVC hasilnya mulus tanpa rintangan yang berarti. Ada perbedaan sedikit dengan codeigniter versi 2.xx namun pada tulisan kali ini tidak membahas perbedaan tersebut. Kali ini tentang status codeigniter. Setelah Ellislab mengumumkan melepas CodeIgniter untuk berganti pemilik ada sedikit rasa was-was bagi pengembang sofware yang terlanjur jatuh cinta pada codeigniter.

CodeIgniter sekarang telah dimiliki oleh British Columbia Institute of Technology dan hasilnya CodeIgniter masih dikembangkan. Mungkin ada yang belum tahu bila CodeIgniter sebenarnya beberapa kali berganti tipe lisensi. Yaitu pertama tipe OSL Open Software License yang menimbulkan kontroversi berbagai kalangan komunitas pengembang. Kemudian berganti GPL lalu sekarang berlisensi MIT.
codeigniter

Lalu Apa Bedanya lisensi-lisensi Tersebut?
GPL
pengguna boleh menggunakan untuk tujuan komersil, memodifikasi dan menggunakan paten tanpa harus mendistribusi ulang hasil yang dibuat dengan software lisensi ini. Namun penguna harus menyertakan library asli tidak seluruhnya, menyertakan lisensi si pembuat, serta menyertakan apa saja yang sudah dimodifikasi. Namun pengguna tidak boleh menuntut pembuat bila ada kekurangan ataupun kesalahan. Perlu diketahui bila menggunakan lisensi GPL maka pengguna boleh memodifikasi dan menjualnya.

MIT 
pada lisensi ini pengguna dapat melakukan apapun pada kode program. Namun pada lisensi ini pengguna diwajibkan mencantumkan lisensi dan copyright pembuat. Pada lisensi ini pengguna juga tidak boleh menuntut apabila ada kekurangan maupun kesalahan. Pada lisensi ini kita boleh memodifikasi sehingga menjadi aplikasi tertutup misalkan dengan melakukan enkripsi pada bagian tertentu. Yang tetap terbuka adalah core intinya.

Jadi dengan CodeIgniter anda dapat membuat perangkat lunak yang dapat anda proteksi sourcecodenya dengan pengamanan milik anda Sendiri. Jadi CodeIgniter mendukung untuk pembuatan aplikasi yang dapat dijual lagi tanpa membuka seluruh kode yang telah dibuat. 
Berikut ini ringkasan tabel lisensi dan  jenis penggunaanya:
code igniter


Cara memperbaiki Undefined Variable dan Undefined Index PHP Error

30 Juli 2016

Membuat website ataupun aplikasi berbasis web menggunakan php pasti tidak akan melewatkan yang namanya variable. Namun setelah program dicoba dirunning di browser terkadang menampilkan error. Ketika menjalankan kode php terkadang ada tampilan pemberitahuan error seperti dibawah ini:

Notice: Undefined variable: nama_variable in c:\xampp\htdocs\contoh\index.php on line 10
atau
Notice: Undefined index: nama_index c:\xampp\htdocs\contoh\index.php on line 11
pada baris tersebut dituliskan skrip seperti berikut:
echo "variabel saya adalah: ". $nama_variable;
echo "index value adalah: ". $array_contoh["nama_index"];

Apa eror tersebut dan mengapa ditampilkan eror tersebut padahal dijalankan dengan versi php sebelumnya dan xampp versi sebelumnya tidak masalah? dan bagaimana cara memperbaiki eror tersebut?

a PHP error was encountered 

handling undefined index error

Undefined Variable

Pada server-server versi lawas biasanya setting php.ini mengindahkan adanya varibel yang belum didefinisikan. Dengan begitu error tidak akan muncul. Penggunaan nilai default secara langsung pada setting server pada versi-versi sebelumnya menjadi suatu masalah ketika diakses pada file-file yang lain dengan nama variabel sama. Selain itu penggunaan nilai default menjadi masalah yang serius pada keamanan dengan setting php.ini register_globals on. Eror notice akan bekerja memberikan sebuah peringatan apabila ada varibel yang belum didefinisikan nilainya. Untuk melakukan pemeriksaan apakah sebuah variable ataupun array sudah didefiniskan atau belum dapat menggunakan fungsi isset().

Walaupun sejatinya PHP tidak mengharuskan deklarasi variabel, namun disarankan untuk melakukan pengisian variabel awal walaupun hanya berupa nilai nol (0) ataupun string kosong (""). Hal ini perlu dilakukan untuk menghindari resiko celah keamanan atau bug pada program yang disusun dari banyaknya logika pada file saling berhubungan. 

Cara untuk menangani masalah undefined variable ini antara lain:
Disarankan:
1.Mendeklarasikan variabel. contohnya ketika anda ingin mengirim string dari sebuah form maka bila isian masih kosong anda dapat dengan mudah melakukan pengecekan.
Contoh:
$value = "";
// pemeriksaan menggunakan fungsi isset()
$value = isset($_POST['value']) ? $_POST['value'] : '';
// pemeriksaan menggunakan fungsi empty()
$value = !empty($_POST['value']) ? $_POST['value'] : '';
2. Melakukan setting custom error handler pada E_NOTICE dan meredirect pesan dari pesan default
set_error_handler('myHandlerForMinorErrors',E_NOTICE | E_STRICT)
3. Menonaktifkan E_NOTICE dengan cara berikut:
error_reporting(error_reporting() & ~E_NOTICE)
4. Melewatkan error dengan @operator
5. Pada codeIgniter setting environment = "PRODUCTION"

Catatan: sangat disarankan untuk memilih opsi nomor satu

Undefined Index

Pesan ini akan muncul apabila anda mencoba untuk mengakses variabel array yang belum diberikan index. Agar anda dapat melakukan pemeriksaan pada array dapat dilakukan dengan pemeriksaan sebelum array digunakan. Contohnya sebagai berikut:
Cek index sudah ada sebelum anda menggunakan. Silahkan menggunakan fungsi isset() atau array_key_exists();
$nilai = isset ($array['index_array']) ? $array['index_array']:'';
$nilai = array_key_exists ($array['index_array']) ? $array['index_array']:'';

Sebagaimana kita ketahui bahwa $_POST / $_GET / $_SESSION akan dikenal sebagai array.  Untuk $_POST dan $_GET anda harus memeriksa apakah index sudah ada atau belum sebelum anda menggunakannya. Untuk $_SESSION anda harus yakin bahwa session sudah didahului dengan skrip session_start() dan index sudah didefinisikan.

CodeIgniter - Only variable references should be returned by reference

21 Juli 2016

Perkembangan server web yang dibundling dengan database misalkan kasus upgrade produk Xampp terkadang menyebabkan aplikasi php yang telah kita bangun sebelumnya menjadi error. Pada CodeIgniter versi 2.1.4  terkadang ditemui adanya error pada server xampp baru seperti 5.6.8 keatas. Eror tersebut tampil dengan mode development pada konstanta Environment. Bunyi erornya yaitu: 

A PHP Error was encountered

Severity: Notice

Message: Only variable references should be returned by reference

Filename: core/common.php

Line Number: 257

Untuk mengatasi eror ini dapat dilakukan dengan mengubah baris 257 pada file core/Common.php, yang aslinya:

return $_config[0] =& $config;


diubah menjadi seperti berikut:
$_config[0] =& $config;
return $_config[0];
only variable references should be returned by reference

Sebaiknya bila server diupdate CodeIgniter juga diupdate ke versi yang sesuai, sehingga keamanan, kecepatan dan performanya lebih baik. 

Menonaktifkan Windows 7 Counterfiltering

3 Mei 2016

Ketika menggunakan windows 7 yang belum diaktifkan serial number yang sesuai seringkali anda akan mendapatkan pesan dari windows berupa counter filtering. Kasus seperti ini seringkali terjadi bila anda menginstall software OS Windows yang bajakan atau salah dalam memasukkan serial number. Namun windows 7 masih memperbolehkan penggunanya untuk melakukan proses komputasi walaupun dengan seringkali diberikan peringatan dan juga layar hitam dibagian wallpaper. 
windows counterfiltering

Untuk mengatasi hal tersebut diatas, ada beberapa cara yang dapat dilakukan tanpa harus melakukan crack ataupun memasukkan serial number hasil generate dari software generator. Caranya adalah dengan mematikan kinerja aplikasi pemberi peringatan yaitu pada WgaTray.exe and WgaTray.dll.
Caranya antara lain sebagai berikut:
Cara 1 dengan perintah sederhana

  1. panggil command prompt bisa dari search ataupun klik pada start menu>accessories>cmd lalu run as administrator
  2. ketikkan perintah SLMGR/REARM tunggu sebentar setelah itu windows akan menampilkan pesan sukses
  3. Restart


Cara 2 dengan perintah agak panjang
panggil command prompt seperti diatas yaitu sebagai administrator
masuk ke c:/Windows/System32/

  1. hentikan proses dengan mengetikkan taskkill -im wgtray.exe
  2. hapus file dengan perintah del wgtray.exe
  3. hapus dll file dengan del wgalogon.old


PHP Programmer Mengatasi SQL Injection

8 April 2016

PHP merupakan Hypertext Prepocesor yang banyak digunakan untuk membuat website lengkap dengan databasenya. Dalam membuat website banyak masalah yang sering muncul. Salah satu masalah website yang sudah online adalah serangan dari luar sistem. Penyerang dapat menyerang melalui berbagai cara, salah satu cara yang sering digunakan adalah SQL Injection.

Banyaknya website yang menuliskan sql injection tutorial juga menjadi pemicu orang untuk mencoba melakukan serangan. Walaupun seringkali bukan untuk merusak, tetapi hanya untuk menguji cara yang telah dituliskan di sql injection tutorial tersebut. Seiring dengan naiknya traffick pengunjung website, seringkali intensitas serangan juga semakin meningkat.

Agar dapat mengatasi sql injection maka programmer php harus mengetahui cara yang tepat agar mampu melindungi website yang sudah dibangun dengan susah payah agar tidak mudah diretas. Bila kita teliti lebih dalam, sql injection dapat dilakukan melalui parameter yang dikirim kemudian ditangkap dan kemudian query sql yang akan menjalankannya. Bila parameter tidak cocok dengan query yang menangkapnya, maka sql injection akan susah dilakukan.
php programmer - sql injection

Cara agar website tidak mudah diserang menggunakan SQL Injection antara lain menggunakan parameter query dan prepare steatments. Alasannya karena dua cara tersebut di parsing oleh database dengan cara yang terpisah, sehingga tidak memungkin bagi penyerang menjalankan SQL Injection. Keuntungan menggunakan prepare steatments ada dua yaitu:
  1. Query yang disiapkan (diparsing) sekali tetapi dapat digunakan berkali-kali
  2. Lebih aman terhadap SQL Injection
Prepare Statement dan parameter query pada umumnya bisa digunakan dalam dua kondisi, yaitu:
Menggunakan PDO (PHP Data Objects)
PDO merupakan cara yang ramping (simple) untuk mengakses database. PDO memberikan kemudahan pada programmer untuk menuliskan kode lebih hemat dan praktis. PDO juga dapat digunakan pada banyak jenis database selain MySQL. Sebelum digunakan PDO perlu diaktifkan. Dengan menggunakan PDO programmer php dapat menggunakan prepare steatmen untuk mengirim parameter kedalam SQL. Contoh penggunaanya sebagai berikut:
<?php
$stmt=$dbh->prepare("INSERT INTO REGISTRY(name, value) VALUES(:name,:value)");

$stmt->bindParam(':name'$name);$stmt->bindParam(':value'$value);
?>

Menggunakan MySQLi
Berbeda dengan PDO yang dapat digunakan pada berbagai macam database, MySQLi khusus untuk database MySQL. Contoh penggunaan sebagai berikut:
<?php
if (!($stmt $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) {
    echo 
"Prepare failed: (" $mysqli->errno ") " $mysqli->error;
}
?>

Menghapus Network Adapter Setting Windows

3 April 2016

Terkadang kita melakukan koneksi terhadap suatu jaringan dengan network adapter yang terinstall secara otomatis. Suatu ketika network adapter setting ini menjadi tidak terpakai, sehingga anda ingin menghapusnya. Namun untuk menghapus ternyata tidak bisa dengan mudah. Tidak bisa langsung dihapus.
network adapter setting


Agar kita dapat menghapusnya berikut beberapa langkah yang dapat kita lakukan

  1. panggil command prompt atau tekan tombol windows+ctrl-Q ketik cmd
  2. ketik set devmgr_show_nonpresent_devices=1 lalu tekan enter
  3. ketik DEVMGMT.MSC tekan enter
    hapus network adapter setting
  4. Anda akan mendapati sebuah tampilan device manager lalu klik kanan pada network uninstall
    hapus network adapter setting
  5. Setelah itu kembali ke jendela network adapter lalu hapus dengan delete

    hapus network adapter setting