Alhamdulillah, terhitung pada tanggal 3 Mei 2012, saya berhasil menyelesaikan sebuah produk , dan hari tersebut merupakan hari peresmian peluncurannya produk tersebut di internet. Produk tersebut berbasis website yang merupakan situs tutorial pemrograman (coding) berbahasa Indonesia.
Bagi Anda yang kebetulan sedang mencari suplier berbagai jenis souvenir promosi dan event, bisa cek di http://creative.edas-corp.com Edas creative merupakan suatu brand image sekaligus sub bisnis dari Edas corp yang berorientasi pada pembuatan produk-produk kreatif yang customizable sesuai dengan kebutuhan konsumen. Edas creative membuat dan menjual berbagai souvenir promosi, pernikahan, ulang tahun, event maupun acara [...] Related posts :
Jadwal pertandingan final liga champions 2012,  final akan dilaksanakan pada tanggal 19 Mei 2012 yang bertempat di Fußball Arena München (waktu setempat) Final liga champion kali ini mempertemukan Chelsea dan Bayern Munich, setelah sebelumnya chelsea mampu memukul barcelona dengan agregat 3-2, sedangkan Munchen  mengalahkan Real Madrid lewat adu penalti. Siapa jagoan kamu di final kali [...] Related posts :
Jadwal pertandingan final liga champions 2012,  final akan dilaksanakan pada tanggal 19 Mei 2012 yang bertempat di Fußball Arena München (waktu setempat) Final liga champion kali ini mempertemukan Chelsea dan Bayern Munich, setelah sebelumnya chelsea mampu memukul barcelona dengan agregat 3-2, sedangkan Munchen  mengalahkan Real Madrid lewat adu penalti. Siapa jagoan kamu di final kali [...] Related posts :
Akhir akhiri ini, saya banyak mendapati rekomendasi WAZZUB baik di FB, blog atau kaskus, lalu apa sih WAZZUB itu?? Banyak yang tergiur oleh wazzub yang mengklaim dirinya sebagai bisnis komunitas yang akan memberikan profit sharing bagi anggotanya. MUNGKINKAH? berikut satu postingan di home FB saya dari salah seorang teman yang diposting ke salah satu grup [...] Related posts :
Pengertian CyberSquatting dan CyberPiracy Yang dimaksud dengan cybersquatting  yang juga dikenal sebagai domain squatting adalah mendaftarkan situs memakai nama atau merek orang lain secara tanpa hak sebelum pemilik yang sah mendatarkan, kemudian berusaha untuk menawarkan situs tersebut kepada pemilik merek yang bersangkutan dengan harga yang sangat tinggi. Menurut Edmon Makarim,  cybersquatting merupakan suatu tindakan seseorang [...] Related posts :
Cheyuz's CSS Generator adalah sebuah generator CSS berbasis online yang dapat membantu Anda mereduksi proses pengetikan kode CSS. Dengan antarmuka WYSIWYG, Anda dapat dengan mudah menentukan, mengenali, dan mempelajari parameter-parameter CSS dengan cepat. Jadi, inilah waktu bagi Anda untuk mempelajari kode CSS!
Tulisan terusan dari tutorial: Tutorial CodeIgniter Dasar Part V – User Accounts Chapter 1, tentang account pada CI. Sesuai dengan janji saya, saya akan meneruskan tutorial untuk tahap pembuatan form registrasi dan controller untuk login dan logout.

Daripada ga ada kerjaan malem2 gini, lebih baik saya update blog ini ah…
Sebelum kita beranjak ke CI lagi, alangkah baiknya kita seling dulu dengan tulisan ini.. Yups, Tips menulis kode program PHP yang baik dan benar, hehe..

Penulisan kode yang baik akan sangat berguna jika program buatan kita akan diteruskan oleh programmer lain. Dengan kode yang baik dan rapi, kode dapat lebih enak dilihat dan orang lain (yang mau meneruskan pengetikan isi program) akan lebih mengerti dan memahami isi program. Jika kode dibuat acak-acakan alias ‘seenaknya saja’, maka orang yang melihat pun akan cenderung malas untuk melihat isi program dan bahkan tidak memahami struktur program yang dibuat.

OK, berikut ini adalah beberapa aturan bagaimana cara pengetikan kode program pada PHP yang mana peraturan ini sudah terstandarisasi, jadi semua orang akan sepakat untuk menuruti aturan ini. Catatan: setiap aturan pada setiap framework mungkin berbeda

Penamaan Class

SALAH:

class superclass

BENAR:

class Super_class
class SuperClass

CONTOH:

class Super_class {
 
	function __construct()
	{
 
	}
}
class SuperClass {
 
	function __construct()
	{
 
	}
}

Penamaan Function

SALAH:

function fileproperties()		// tidak deskriptif, membutuhkan underscore
function fileProperties()		// tidak deskriptif dan menggunakan CamelCase
function getfileproperties()		// Lebih baik!  Tetapi masih menggunakan underscore
function getFileProperties()		// menggunakan CamelCase
function get_the_file_properties_from_the_file()	// Terlalu banyak kata (njelimet)  

:P

BENAR:

function get_file_properties()	// Deskriptif, ada pemisahan dengan underscore, dan huruf kecil semua

Penamaan Variable

SALAH:

$j = 'foo';		// satu huruf lebih baik digunakan untuk variable yang digunakan pada pengulangan
$Str			// ada huruf yang kapital, ini bukan objek!
$bufferedText		// menggunakan CamelCasing, dan dapat dipendekkan tanpa menghilangkan maksud semantik
$groupid		// dua kata tapi tidak memakai underscore, tidak deskriptif
$name_of_last_city_used	// terlalu njelimet lagi  ???

BENAR:

for ($j = 0; $j < 10; $j++)
$str
$buffer
$group_id
$last_city

Constants

SALAH:

myConstant	// tidak ada underscore dan tidak full kapital
N		// Jangan ada constant yang menggunakan satu karakter
S_C_VER		// tidak deskriptif

BENAR:

MY_CONSTANT
NEWLINE
SUPER_CLASS_VERSION

TRUE, FALSE, dan NULL

Harus menggunakan full karakter kapital (uppercase)

SALAH:

if ($foo == true)
$bar = false;
function foo($bar = null)

BENAR:

if ($foo == TRUE)
$bar = FALSE;
function foo($bar = NULL)

Operator Logika

SALAH:

if ($foo || $bar)
if ($foo AND $bar)  // OK tapi tidak direkomendasikan untuk IDE yang mengandung syntax highlighting
if (!$foo)
if (! is_array($foo))

BENAR:

if ($foo OR $bar)
if ($foo && $bar) // recommended
if ( ! $foo)
if ( ! is_array($foo))

Whitespace

Jangan ada ‘spasi’ sebelum tag

SALAH:

 
  
<?php
	// ...ada whitespace sebelum php dibuat
?>

BENAR:

<?php
	// ...Tidak ada whitespace sebelum php dibuat
?>

Code Indenting

Tabulasi pada penulisan kode program

KURANG BAIK:

function foo($bar) {
	// ...
}
 
foreach ($arr as $key => $val) {
	// ...
}
 
if ($foo == $bar) {
	// ...
} else {
	// ...
}
 
for ($i = 0; $i < 10; $i++)
	{
	for ($j = 0; $j < 10; $j++)
		{
		// ...
		}
	}

BAIK:

function foo($bar)
{
	// ...
}
 
foreach ($arr as $key => $val)
{
	// ...
}
 
if ($foo == $bar)
{
	// ...
}
else
{
	// ...
}
 
for ($i = 0; $i < 10; $i++)
{
	for ($j = 0; $j < 10; $j++)
	{
		// ...
	}
}

Bracket dan Parenthetic Spacing

SALAH:

$arr< $foo > = 'foo'; //ada spasi di dalam bracket

BENAR:

$arr<$foo> = 'foo'; // tidak ada spasi di dalam bracket

SALAH:

function foo ( $bar )
{
 
}

BENAR:

function foo($bar) // tidak ada spasi di dalam parameter
{
 
}

SALAH:

foreach( $query->result() as $row )

BENAR:

foreach ($query->result() as $row)

Private dan Public Method

convert_text()		// public method
_convert_text()		// private method

Short Open Tags

SALAH:

<? echo $foo; ?>
 
<?=$foo?>

BENAR:

<?php echo $foo; ?>

Satu Statemen pada Satu Baris

SALAH:

$foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);

BENAR:

$foo = 'this';
$bar = 'that';
$bat = str_replace($foo, $bar, $bag);

Strings

SALAH:

"My String"					// tidak ada variable yang diparsing, lebih baik satu tanda kutip
"My string $foo"				// membutuhkan kurung kurawal
'SELECT foo FROM bar WHERE baz = \'bag\''	// jelek

CORRECT:

'My String'
"My string {$foo}"
"SELECT foo FROM bar WHERE baz = 'bag'"

Query SQL

SALAH:

$query = mysql_query("select foo, bar, baz, foofoo, foobar as raboof, foobaz from exp_pre_email_addresses where foo != 'oof' and baz != 'zab' order by foobaz limit 5, 100"); //susah dibaca

BENAR:

$query = mysql_query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz
				FROM exp_pre_email_addresses
				WHERE foo != 'oof'
				AND baz != 'zab'
				ORDER BY foobaz
				LIMIT 5, 100"); //lebih mudah dibaca

Fiuh.. akhirnya selesai juga..  :)
Itulah beberapa aturan2 standar yang dipakai untuk programmer PHP..  ;)

Silakan komentar dan tanggapannya  ;D

~ Cheyuz

Sebenarnya ini adalah salah satu permintaan dari pembaca, yaitu membuat tutorial bagaimana membuat penanganan akun di dalam CI.. Kali ini kita menggunakan Codeigniter versi 2.x ke atas… (bukan untuk CI 1.7.x), lihat perbedaan CI 2.x dengan CI v1.7.x di sini

Sebelum kita mengenal lebih jauh, sebaiknya kita mengenal pemahaman dari segi konsep bagaimana akun dibuat.. Mulai dari konsep session, register, login, dan logout..

Baik, kita jelaskan satu persatu ya.. Dengan bahasa saya sendiri, mudah2an temen2 mengerti ya… hehe..

Session

Session adalah sebuah varibel yang diletakkan di server. Dengan begitu, PHP bisa mengambil nilai yang tersimpan di dalam variable tersebut meskipun kita membuka halaman baru di browser. Biasanya session akan hilang jika anda menutup browser atau dengan time out yang ditentukan. Session sangat diperlukan untuk penanganan login user/pengguna, yang mana nantinya beberapa data penting pengguna disimpan di dalam variable session, seperti status login, id user, nama user, dan nama group (group = kategori user). Oleh karena itu, ketika tab baru dibuka pun kita masih bisa mengakses data kita dengan asumsi kita sudah login ke dalam aplikasi tersebut.

Register

Register adalah bagaimana kita mendaftarkan user ke dalam database. Database mempunyai data user yang sewaktu2 dapat dipakai untuk login user. Proses dari register hanyalah penambahan data user ke dalam database dari form registrasi yang nanti kita buat.

Login

Login adalah proses di mana proses pengecekan user dilakukan. Pengecekan dilakukan untuk memeriksa apakah username dan password cocok atau tidak, jika ada dalam database dan cocok maka data akan dimasukkan ke dalam session, status login diset menjadi TRUE, dan data session lainnya akan diisikan dengan data user yang ada di dalam database.

Logout

Logout adalah sebaliknya dari Login. Logout adalah proses penghancuran data di variable session, yang berarti data2 di variable session dihapus. Jika data session dihapus, maka statusnya sekarang adalah tidak login, jadi bisa disebut ‘keluar dari sistem’.

 

OK, langsung saja kita berangkat ke CI… ;)

Buat Table

Sebelum ke pembuatan model, controller, dan view tentu saja yang harus dilakukan pertama kali adalah pembuatan database, dalam hal ini kita akan membuat sebuah table user yang berisi id_user, nama_lengkap, username, password, dan group… Saya kasih contoh sederhana seperti ini, yang mana sebetulnya masih bisa dikembangkan, misalnya penambahan status, verifikasi email, reset password, dan sebagainya… Tapi berhubung tidak memungkinkan dan terlalu rumit, maka saya buat contoh sederhana aja.. :)

Buat table user dengan mengcopy syntax SQL berikut ke PhpMyAdmin kamu beserta data sample:

CREATE TABLE  `user` (
`id_user` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nama_lengkap` VARCHAR( 100 ) NOT NULL ,
`username` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
`group` VARCHAR( 20 ) NOT NULL
) ENGINE = INNODB;
 
 
INSERT INTO  `user` (
`id_user` ,
`nama_lengkap` ,
`username` ,
`password` ,
`group`
)
VALUES
 (NULL , 'Cecep Yusuf', 'cheyuz', MD5('cheyuz') , 'admin'),
 (NULL , 'Ayu Dwi S', 'ayue', MD5('ayue') , 'operator');
Catatan: group adalah kategori dari user tersebut, misalnya: administrator, operator, member, dan sebagainya.

Buat Model Account

Sebelum kita membuat controller dan view untuk registrasi, login, dan logout, pertama2 kita harus membuat modelnya terlebih dahulu.. model apakah itu? Yup, model untuk account nya… kita buat account_model.php di direktori /application/models/

account_model.php

<?php
 
/**
 * @author cheyuz
 */
class Account_model extends CI_Model
{
    private $table = 'user'; //isi nama table user di sini
 
    function __construct()
    {
        parent::__construct();
    }
 
}

Di dalam class Account_model terdapat variable private $table, yang nantinya function2 di bawah akan mengakses variable itu, dari table mana data didapatkan.
Setelah class dibuat, maka harus dibuat fungsi2 dalam class tersebut. Fungsi2 yg perlu kita buat adalah function register, login, dan logout, juga ada fungsi2 tambahan lainnya.

Tambahkan function register di dalam class tersebut:

...
    function register($data)
    {
    }
...

di dalam function register terdapat parameter $data. Parameter ini adalah berupa array yang mana nantinya data dari form registrasi dimasukkan ke dalam database, maka di dalam function register() ditambahkan kode berikut ini:

...
    function register($data)
    {
        $this->db->insert($this->table, $data);
    }
...

Setelah function register dibuat, maka selanjutnya tambahkan function login di dalam class tersebut:

...
    function login($username, $password)
    {
    }
...

Di atas terlihat bahwa ada dua parameter, yaitu $username dan $password. Ini berguna buat nanti kita cek apakah usernamenya ada atau tidak, cocok atau tidak dengan passwordnya. Dan setelah itu isi function tersebut dengan kode di bawah ini:

...
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
    }
...

$data adalah seleksi dari syntax SQL:

SELECT * FROM `user` WHERE `username`= $username AND `password` = md5($password)

Kemudian hasil tersebut dicek apakah ada dan cocok username dengan passwordnya atau tidak, ada berarti jika banyak baris lebih dari 0 (nol menyatakan bahwa tidak ada yang terseleksi).
Nah di bawah ini cara ngeceknya memakai if…

        ....
 
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
 
        ....

berikut ini adalah function login() secara lengkap:

    ...
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
 
        //dicek
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
    }
    ...

Nah, kemudian setelah itu dibuat function logoutnya…
Ingat bahwa logout adalah menghapus session, maka scriptnya sederhana, cukup dengan function $this->session->sess_destroy();

    ...
    function logout()
    {
        $this->session->sess_destroy();
    }
    ...

Sehingga kode PHP lengkapnya untuk class Account_model adalah sebagai berikut:

<?php
 
/**
 * @author cheyuz
 */
class Account_model extends CI_Model
{
    private $table = 'user'; //isi nama table user di sini
 
    function __construct()
    {
        parent::__construct();
    }
 
    function register($data)
    {
        $this->db->insert($this->table, $data);
    }
 
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
 
        //dicek
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username,
                'nama_lengkap' => $user->nama_lengkap,
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
    }
 
    function logout()
    {
        $this->session->sess_destroy();
    }
}

Untuk menggunakannya, caranya cukup dengan meload model tersebut, kemudian masukkan variable post dari form login ke dalam parameter dari function login() di model account_model…

Salah satu contoh penggunaan di controller:

...
    function masuk()
    {
        $post = $this->input->post('login');
        if($post==NULL)
        {
            $this->load->view('login');
        }
        else
        {
            if($this->account_model->login($post['username'], $post['password']))
            {
                 redirect('member');
            }
            else
            {
                 redirect('member/login');
            }
        }
    }
...
}

Kode di atas hanya contoh saja, contoh lengkapnya akan dilanjutkan pada tutorial ini juga (part II)… cape hehe mau lanjut kerja dulu.. :P
Pada tutorial selanjutnya saya lanjut lengkap dengan form registrasi, form login, controller: daftar, masuk, dan keluar sistem….

coming soon ya.. ;)

~ Cheyuz

Baru update lagi nih ….
Ada waktu kosong pas lagi ngerjain skripsi, ya udah saya update aja ni blog… hehehe..
Kali ini saya akan membeberkan beberapa perubahan pada Framework Codeigniter v2.x dengan versi sebelumnya, versi 1.7.x (yg berakhir di v1.7.3)
CI merupakan sebuah framework PHP yang sudah banyak digunakan oleh perusahaan profesional untuk membangun sebuah aplikasi web. Ada banyak tutorial yang ada di internet yang bisa kita lihat dan lakukan untuk pengembangan aplikasi web, dan salah satunya adalah di situs ini hehe. Namun apakah tutorial tersebut sesuai dengan versi CI yang kita pakai? soalnya ada beberapa tutorial yang masih menggunakan CI versi 1.7.x ke bawah, sedangkan mulai dari versi 2.0 CI mengalami banyak perubahan.

Berikut ini adalah beberapa perubahan yang penting diketahui pada CI versi 2.x dengan versi 1.7.x:

  1. Sudah tidak mendukung PHP 4, minimal membutuhkan PHP 5.1
  2. Direktori “Plugins” dihapus, sepenuhnya dibuat di Helpers. Beberapa plugins yg ada sebelumnya sudah dijadikan helper.
  3. Ditambah library baru, yaitu Drivers
  4. Terdapat Application Packages
  5. Mendukung full query string
  6. Pada model dan controller, ada awalan CI_[nama_class], yaitu CI_Model dan CI_Controller
  7. Folder Application sudah berada di luar system
  8. Ditambahkan library Security, untuk keamanan dan filter
  9. Base_url sudah otomatis jika dikosongkan
  10. Terdapat kompatibilitas Command line untuk cron jobs

Dan masih banyak lagi.. yg di atas hanya sebagian besar yang memang patut diketahui, hehe…
Versi terakhir CI saat ini adalah versi 2.0.2..

Untuk lebih lengkapnya temen2 bisa lihat di sini:
http://codeigniter.com/user_guide/changelog.html

Visit Indonesia 2011.. Salah satu yang tengah giat dipromosikan Departemen Kebudayaan dan Pariwisata Republik Indonesia sebagai tujuan wisata adalah Pulau Komodo. Gagal Menjadi Salah satu dari 7 Keajaiban dunia yang baru, tak menjadikan pulau ini kehilangan pesonanya Detail Tentang Pulau Komodo klik lihat Lihat » Kendurkan syaraf dan bebaskan pikiran Anda untuk berpetualang di tempat yang [...] Related posts :
© 2011 CHEVONEST Suffusion theme by Sayontan Sinha