Archive | March, 2012

Instalasi CodeIgniter + MVC

15 Mar

Code Igniter (CI) adalah salah satu dari webframework yang bisa digunakan dalam mengembangkan sebuah aplikasi web. CI menerapkan konsep MVC, dan cukup mudah dipelajari, sehingga banyak developer yang memanfaatkan framework ini. Dengan mencoba fitur dan library yang ada, saya yakin seorang programmer php / web developer akan sudah menguasai tool ini dalam kurang dari 24 jam belajar.

Langkah

  1. Download http://codeigniter.com/downloads/
  2. Copykan ke Folder aplikasi

Security

  1. Ubah Folder khusus CI. Folder khususnya adalah:
    1. System, misal di ubah menjadi r_system
    2. Application, misalnya di ubah menjadi r_application
  2. Buka file index.php
  3. Cari variabel:
    1. $system_folder , ubah isinya menjadi r_system
    2. $application_folder, ubah isinya menjadi r_application
  4. Metode lain, folder system dan application di letakkan di atas folder root / web root, sehingga tidak bisa di akses melalui http / browser.

Database Configuration

  • The config file is located at application/config/database.php.
$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “”;
$db[‘default’][‘database’] = “database_name”;
$db[‘default’][‘dbdriver’] = “mysql”;
$db[‘default’][‘dbprefix’] = “”;
$db[‘default’][‘pconnect’] = TRUE;
$db[‘default’][‘db_debug’] = FALSE;
$db[‘default’][‘cache_on’] = FALSE;
$db[‘default’][‘cachedir’] = “”;
$db[‘default’][‘char_set’] = “utf8”;
$db[‘default’][‘dbcollat’] = “utf8_general_ci”;
$db[‘default’][‘swap_pre’] = “”;
$db[‘default’][‘autoinit’] = TRUE;
$db[‘default’][‘stricton’] = FALSE;

MVC

CodeIgniter is based on the Model-View-Controller development pattern. MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.

  • The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your database.
    • Models are the place where you retrieve, insert, and update information in your database or other data stores. They represent your data.
  • The View is the information that is being presented to a user. A View will normally be a web page, but in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of “page”.
  • The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.

CodeIgniter has a fairly loose approach to MVC since Models are not required. If you don’t need the added separation, or find that maintaining models requires more complexity than you want, you can ignore them and build your application minimally using Controllers and Views. CodeIgniter also enables you to incorporate your own existing scripts, or even develop core libraries for the system, enabling you to work in a way that makes the most sense to you.

Application Flowchart

The following graphic illustrates how data flows throughout the system:


  1. The index.php serves as the front controller, initializing the base resources needed to run CodeIgniter.
  2. The Router examines the HTTP request to determine what should be done with it.
  3. If a cache file exists, it is sent directly to the browser, bypassing the normal system execution.
  4. Security. Before the application controller is loaded, the HTTP request and any user submitted data is filtered for security.
  5. The Controller loads the model, core libraries, helpers, and any other resources needed to process the specific request.
  6. The finalized View is rendered then sent to the web browser to be seen. If caching is enabled, the view is cached first so that on subsequent requests it can be served.

CodeIgniter URLs

The segments in the URL, in following with the Model-View-Controller approach, usually represent:

example.com/class/function/ID

  1. The first segment represents the controller class that should be invoked.
  2. The second segment represents the class function, or method, that should be called.
  3. The third, and any additional segments, represent the ID and any variables that will be passed to the controller.

Controller – Contoh halaman static dengan Controller

File ini di letakkan di folder controller. Nama file hars sama dengan nama class yang akan dibuat.

File ini dipanggil dengan cara : index.php/[nama controller]/[nama methode]/[argumen]

  1. Buat di application/controllers/pages.php
  2. Isi nya
<?php

class pages extends CI_Controller {

public function view($page = ‘home’)

{

Echo “hi there”;

}

}

  1. Buka : http://192.168.56.102/ci/index.php/pages/view

Contoh lain:

<?php

class pages extends CI_Controller

{

public function view($page = ‘home’)

{

echo “memanggil halaman $page”;

}

}

?>

Dipanggil dengan : http://192.168.56.102/ci/index.php/pages/view/admin

  • Methode default yang dipanggil adalah : index, jadi jika methode tidak disebutkan, yang akan di jalankan adalah’index’
  • The controller is what will become the center of every request to your web application.
  • In very technical CodeIgniter discussions, it may be referred to as the super object

View

  • Disimpan di folder application/views
  • Contoh, kita akan membuat template halaman, yang terdiri dari header, dan footer
  • application/views/templates/header.php, isi
<html>

<head>

<title><?php echo $title ?> – CodeIgniter 2 Tutorial</title>

</head>

<body>

<h1>CodeIgniter 2 Tutorial</h1>

  • application/views/templates/footer.php
<strong>&copy; 2011</strong>

</body>

</html>

  • Controller Logic
public function view($page = ‘home’)

{


    if ( ! file_exists(‘application/views/pages/’.$page.’.php’))

    {

        // Whoops, we don’t have a page for that!

        show_404();

    }


    $data[‘title’] = ucfirst($page); // Capitalize the first letter


    $this->load->view(‘templates/header’, $data);

    $this->load->view(‘pages/’.$page, $data);

    $this->load->view(‘templates/footer’, $data);

}

  • Di application/views/pagess/contoh.php
<?php

echo “ini halaman contoh <br>”;

?>

  • The controller is now functioning! Point your browser to [your-site-url]index.php/pages/view to see your page. When you visit index.php/pages/view/about you’ll see the about page, again including the header and footer.

Dynamic Content – Model

  • Instead of writing database operations right in the controller, queries should be placed in a model, so they can easily be reused later.
  • Models are the place where you retrieve, insert, and update information in your database or other data stores. They represent your data.
  • Tabel contoh :
CREATE TABLE news ( 
    id int(11) NOT NULL AUTO_INCREMENT, 
    title varchar(128) NOT NULL, 
    slug varchar(128) NOT NULL, 
    text text NOT NULL, 
    PRIMARY KEY (id), 
    KEY slug (slug) 
);
  • Buat file : application/models/news_model.php
<?php

class news_model extends CI_Model {

public function __construct()

{

$this->load->database();

}

public function get_news($slug = FALSE)

{

if ($slug === FALSE)

{

$query = $this->db->get(‘news’);

return $query->result_array();

}
$query = $this->db->get_where(‘news’, array(‘slug’ => $slug));

return $query->row_array();

}

}

?>

Menampilkan News

  • Buat file di application/controllers/news.php
<?php

class news extends CI_Controller {

public function __construct()

{

parent::__construct();

$this->load->model(‘news_model’);

}

    public function index() 
{ 
    $data['news'] = $this->news_model->get_news(); 
    $data['title'] = 'News archive'; 
    $this->load->view('templates/header', $data); 
    $this->load->view('news/index', $data); 
    $this->load->view('templates/footer'); 
} 
    public function view($slug) 
    { 
        $data['news'] = $this->news_model->get_news($slug); 
    } 

}

?>

  • You now need to create a view to render the news items. Create application/views/news/index.php
<?php foreach ($news as $news_item): ?>

<h2><?php echo $news_item[‘title’] ?></h2>

<div id=”main”>

<?php echo $news_item[‘text’] ?>

</div>

<p><a href=”news/<?php echo $news_item[‘slug’] ?>”>View article</a></p>

<?php endforeach ?>

  • add some code to the controller and create a new view
public function view($slug) 
{ 
    $data['news_item'] = $this->news_model->get_news($slug); 
    if (empty($data['news_item'])) 
    { 
        show_404(); 
    } 
    $data['title'] = $data['news_item']['title']; 
    $this->load->view('templates/header', $data); 
    $this->load->view('news/view', $data); 
    $this->load->view('templates/footer'); 
} 
  • The only things left to do is create the corresponding view at application/views/news/view.php
<?php 
echo '<h2>'.$news_item['title'].'</h2>'; 
echo $news_item['text']; 

Create Form

  • To input data into the database you need to create a form where you can input the information to be stored. This means you’ll be needing a form with two fields, one for the title and one for the text. You’ll derive the slug from our title in the model.
  • Create the new view at application/views/news/create.php
<h2>Create a news item</h2>

<?php echo validation_errors(); ?>

<?php echo form_open(‘news/create’) ?>

<label for=”title”>Title</label>

<input type=”input” name=”title” /><br />

<label for=”text”>Text</label>

<textarea name=”text”></textarea><br />

<input type=”submit” name=”submit” value=”Create news item” />

</form>

  • form_open() function, is provided by the form helper and renders the form element and adds extra functionality, like adding a hidden CSFR prevention field.
  • validation_errors() function, is used to report errors related to form validation.
  • news controller
public function create() 
{ 
    $this->load->helper('form'); 
    $this->load->library('form_validation'); 
     
    $data['title'] = 'Create a news item'; 
     
    $this->form_validation->set_rules('title', 'Title', 'required'); 
    $this->form_validation->set_rules('text', 'text', 'required'); 
     
    if ($this->form_validation->run() === FALSE) 
    { 
        $this->load->view('templates/header', $data);     
        $this->load->view('news/create'); 
        $this->load->view('templates/footer'); 
         
    } 
    else 
    { 
        $this->news_model->set_news(); 
        $this->load->view('news/success'); 
    } 
} 
  • you can see a condition that checks whether the form validation ran successfully. If it did not, the form is displayed, if it was submitted and passed all the rules, the model is called. After this, a view is loaded to display a success message.
  • Create a view at application/view/news/success.php
  • Open up the model created earlier and add the following
public function set_news() 
{ 
    $this->load->helper('url'); 
     
    $slug = url_title($this->input->post('title'), 'dash', TRUE); 
     
    $data = array( 
        'title' => $this->input->post('title'), 
        'slug' => $slug, 
        'text' => $this->input->post('text') 
    ); 
     
    return $this->db->insert('news', $data); 
} 
  • The third line contains a new function, url_title(). This function – provided by the URL helper – strips down the string you pass it, replacing all spaces by dashes (-) and makes sure everything is in lowercase characters. This leaves you with a nice slug, perfect for creating URIs.

Controller dengan tidak memakai konsep MVC

public function lihat()

{

$this->load->database();

$query = $this->db->query(‘select * from news’);
if ($query->num_rows() > 0)

{

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

{

echo $row->title.” *** “.$row->slug.” *** HH *** “.$row->text.”<br>”;

}

}

}

PHP Dasar

Koneksi ke Tabel

<?php

$cnn = mysql_connect(“localhost”,”root”,”dvo”) or die(“Could not connect to db”);

if ($cnn) mysql_select_db(“arsip01”);

?>

$sql = “select id_bagian, nm_bagian from bagian order by id_bagian”;

$hasil = mysql_query($sql) or die(“SQL error- $sql”);

if ($hasil==false) exit;

$no1 = 1;

while ($row=mysql_fetch_row($hasil))

{

Echo $row[0].”-“. $row[1];

}

Melakukan input data ke tabel

$sql = “query”

$hasil = mysql_query($sql) or die(“”);

Advertisements

LAMPP – Linux WebServer

15 Mar

Lampp adalah webserver yang berjalan di OS linux. Berikut adalah panduan untuk melakukan instalasi Lampp di Ubuntu.

Langkah Instalasi webServer di Linux

Cek / Set IP Address WebServer

  1. Lakukan Instalasi Ubuntu
  2. Cek setting IP Ubuntu, Langkah
    1. Buka menu Application, accessories, terminal
    2. Ketikkan ifconfig, cek setting untuk eth0 atau eth1 (tergantung Network card yang dipakai untuk akses web Server), sesuai dengan gambar berikut
    3. cek setting melalui terminal, ketikkan ping [IP Address], dalam contoh:
      ping 192.168.56.101
    4. Jika diperlukan, lakukan Setting ulang IP Address, diusahakan IP Address untuk webServer adalah Static. Jika telah melakukan Setting IP Address, lakukan restart Network dengan perintah :
      1. sudo /etc/init.d/networking restart

Instalasi XAMPP Linux (webserver)

Instalasi

  1. Download master LAMPP di http://www.apachefriends.org/en/xampp-linux.html#374
  2. copykan master xampp-linux.tar ke lokasi sementara. Misal, copykan ke folder home
  3. buka terminal, lakukan extract instalasi XAMPP, ketikkan
    sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt
    XAMPP akan terinstall di folder [root]/opt
  4. lakukan startup XAMPP, dari terminal ketikkan
    sudo /opt/lampp/lampp start, seperti pada tampilan berikut

  5. Lakukan pengecekan bahwa service xampp sudah berjalan, buka browser, pada bagian address, ketikkan IP Server, jika sukses akan muncul

Autorun Service LAMPP

  1. Agar Service LAMPP berjalan pada saat OS Startup, buka menu System, Preferences, Startup Application.
    1. Muncul window berikut
    2. Klik ADD, muncul window
      Pada bagian name, isikan XAMPP,
      pada bagian command, isikan gksu /opt/lampp/lampp start ;
      pada bagian comment isikan: start xampp, jika sudah, klik ADD, dan tekan close

Penyiapan Folder aplikasi web

  1. Folder aplikasi Web akan terletak di /opt/lampp/htdocs/
  2. Di Linux, setiap folder memilki hak akses tertentu. Kita harus menset hak akses di folder aplikasi web agar bisa di akses oleh aplikasi LAMPP. Caranya:
    1. Buka Terminal, ketikkan sudo chmod 777 -R /opt/lampp/htdocs/

Fitur LAMPP

Beberapa layanan yang terdapat di LAMPP

  1. Apache WebServer
  2. DBMS mySQL
  3. FTP – proFTPD

Setting configurasi php.ini

Untuk melakukan perubahan setting configurasi php.ini, langkahnya:

  1. Login dalam Server Ubuntu
  2. Buka terminal, dari menu Accessoris, Terminal
  3. Masuk ke folder /opt/lampp/etc, perintah terminal :
    cd opt/lampp/etc
  4. Buka file php.ini, dengan perintah
    sudo nano php.ini
  5. Simpan file, caranya Ctrl+X, pilih yes, tekan ENTER
  6. Restart LAMPP, dengan perintah:
    sudo /opt/lampp/lampp restart

LAMPP Security

  1. Buka terminal, ketikkan Sudo /opt/lampp/lampp security
  2. Setting security sesuai dengan tampilan berikut, ingat password yang dientrikan, untuk password root mySQL, isikan ocals99 :
  1. Untuk ujicoba aplikasi, buka browser, masukkan address [ip server]/index.html

Remote Desktop

Agar server bisa diremote, langkahnya:

  1. Login di Ubuntu
  2. Buka menu Preferences, Remote Desktop
  3. Lakukan setting sesuai dengan gambar berikut:
  4. Lakukan instalasi TightVNC, bisa didapatkan di http://www.tightvnc.com/download.php
  5. Jalankan TighVNC Viewer
  6. Untuk b isa di remote, posisi di Ubuntu harus Lock Screen

FTP

Jika diperlukan, aplikasi bisa diupdate, bisa dilakukan dengan FTP. Langkahnya:

  1. Lakukan instalasi winscp, bisa didapatkan di http://winscp.net/eng/index.php
  2. Jalankan aplikasi winscp, isi setting koneksi sesuai tampilan berikut:
  3. Hostname isikan IP server, isi username dan password, sesuaikan protocol, klik login. Jika tidak melakukan perubahan security, user name : nobody, password : lampp
  4. Jika login sukses, anda akan langsung masuk ke folder : /opt/lampp/htdocs/