Selasa, 22 November 2011

Installasi XAMPP di Ubuntu 11.10

Sebelum installasi, download XAMPP for Linux di sini. Lalu pindahkan file xampp yang berbentuk .zip ke /home . Setelah itu, buka terminal di ubuntu.

Setelah terminal terbuka ketikkan:
sudo su
kemudian masukkan password ubuntu anda.

Setelah itu lakukan pengekstrakan file dengan mengetikannya pada terminal:
sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt
Kemudian tunggu hingga ekstraksi selesai. Jika sudah, xampp akan terinstall di dalam /opt/lampp.

Untuk menjalankannya kita ketikkan kodingan seperti ini di terminal:
sudo /opt/lampp/lampp start

Untuk menjalankannya yaitu dengan membuka browser dan mengetikkan alamat url:
http://localhost/xampp
maka akan menampilkan:

XAMPP pun siap untuk digunakan.


Sumber:
http://romanistielf.wordpress.com/2011/11/11/installasi-xampp-di-ubuntu-11-10/

Cara install Apache, MySQL, PHP dan PhpMyAdmin di ubuntu 11.10

Baru saja upgrade ubuntu saya dari 11.04 ke ubuntu terbaru 11.10 seperti biasa sekedar berbagi yang saya ketahui tentang cara install dan konfigurasi Apache, MySQL PHP, dan PHPMyAdmin di ubuntu 11.10. Untuk itu simak langkah-langkahnya di bawah ini.




Install Apache
Untuk install apche masuk ke terminal dan ketikkan
    sudo apt-get install apache2
masukkan password super user anda
Do you want to continue [Y/n]? y
Setelah itu selesai instalasinya, buka browser dan masukkan alamat ini
    http://localhost 
Install PHP 
Selanjutnya adalah menginstall PHP, ketikkan perintah berikut di terminal
sudo apt-get install php5 libapache2-mod-php5
seperti biasa system akan meminta anda untuk memasukkan password super user.
Do you want to continue [Y/n]? y
Tekan y untuk menyutujui. Setelah selesai instalasi PHP. Sekarang anda restart apache-nya dengan perintah
sudo /etc/init.d/apache2 restart
untuk menguji berhasil atau tidaknya PHP yang baru saja kita install, buatlah sebuah file dan simpan di /var/www/nama_file_anda.php atau coba ketikkan perintah ini di terminal anda
sudo gedit /var/www/phpinfo.php
Maka setelah anda memasukkan password super user, muncullah jendela beru yang berupa text editor. masukkan kode dibawah ini lalu simpan dokumen.
<?php phpinfo() ?>
Selanjutnya anda langsung buka browser, dan masukkan alamat berikut
http://localhost/phpinfo.php
Apabila semuanya berhasil maka akan tampak seperti ini. Untuk saat ini instalasi PHP sudah selesai, lanjut ke langkah berikutnya


Install MySQL
MySQL disini berhubungan dengan database kita, jadi untuk menginstallnya anda hanya perlu mengetikkan perintah berikut ke terminal
sudo apt-get install mysql-server
password super user dibutuhkan untuk menginstall MySQL, seperti biasa masukkan password anda dan tekan enter
Do you want to continue [Y/n]? y <- tekan y
Setelah beberapa saat akan muncul perintah untuk memasukkan password buat user 'root'. User dan password ini digunakan apabila anda menggunakan MySQL, jadi ingat baik-baik password anda.
Ulangi password yang anda masukkan
Sampai disini Install MySQL selesai, selanjutnya komponen terahir yang perlu di install untuk membangun webserver yaitu PhpMyAdmin

Install PhpMyAdmin
Ketikkan perintah ini diterminal
sudo apt-get install phpmyadmin
setelah memasukkan password super user, maka setelah beberapa saat akan muncul perintah untuk memasukkan web server yang digunakan untuk menjalankan PhpMyAdmin, karna diawal kita menginstall apache2, otomatis pilihlah apache2 sebagai web servernya

dan pilih No ketika mengkonfigurasi phpmyadmin

selanjutnya, ketik perintah di terminal
sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf.d
 Restart apache2
sudo /etc/init.d/apache2 restart
untuk melihat hasilnya, masukkan alamat dibawah ini ke browser. Login lah sebagai root dengan password yang telah anda buat.

selesai sudah Cara install apache, mysql, php dan phpmyadmin di ubuntu 11.10, walaupun masih awam dalam sistem operasi linux namun tidak mengecilkan semangat untuk saling berbagi. Semoga bermanfaat

Senin, 21 November 2011

Tutorial Dasar Koneksi PHP dan Mysql

Pada tutorial kali ini, kita akan mencoba melakukan operasi – operasi dasar pada PHP MySQL.
1. Membuat koneksi
<?php
$hostmysql = “localhost”;
$username = “mysqlusername”;
$password = “mysqlpassword”;
$database = “namadatabase”;

$conn = mysql_connect(“$hostmysql”,”$username”,”$password”);
if (!$conn) die (“Koneksi gagal”);
mysql_select_db($database,$conn) or die (“Database tidak ditemukan”); >

Penjelasan Script:
a. mysql_connect
digunakan untuk membuat koneksi dari PHP ke server MySQL. Data mengenai hostname, mysql username, dan password yang digunakan telah diwakilkan oleh variabel $hostmysql, $username, $password. Penulisannya akan sama dengan:
mysql_connect(“localhost”,”username”,”password”);
b. mysql_select_db
untuk memilih database yang akan digunakan.
c. if (!$conn) die (“Koneksi gagal”);
jika koneksi gagal dibuat (!$conn), maka akan muncul pesan kesalahan
Setiap operasi PHP yang berhubungan dengan MySQL, akan membutuhkan sintaks diatas. agar lebih mudah, lebih baik disimpan terlebih dahulu dengan nama konfig.php. Jika sintaks tersebut dibutuhkan lagi, maka kita melakukan include terhadap file konfig.php tersebut.
2. Membuat tabel pada MySQL
<?php
include (“konfig.php”);
mysql_query(“CREATE TABLE user (
namadpnVARCHAR(20),
namablkg VARCHAR(20),
negara VARCHAR(20))”); ?>

Penjelasan script:
1. include (“konfig.php”);
perintah include digunakan untuk mengikut sertakan sebuah file (pada contoh diatas adalah file konfig.php).
2. mysql_query
format umum dari perintah ini adalah mysql_query(string dari query).
mysql_query akan sering dijumpai pada artikel kali ini.
3. Memasukkan data pada tabel
<?php
include (“konfig.php”);
$insert = “INSERT INTO users (namadpn,namablkg,negara)
VALUES (‘Saya’,'Sendiri’,'Indonesia’)”;
mysql_query($insert) or die (“tidak dapat memasukkan data ke tabel”);?>

4 . Menampilkan data dari tabel
<?php
include (“konfig.php”);
$query = “SELECT * FROM user”;
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
echo “Jumlah data: $numrows <br>”;
echo “Nama Depan: $row[namadpn] <br>”;
echo “Nama Belakang: $row[namablkg] <br>”;
echo “Negara: $row[negara]“;
} ?>

Penjelasan script:
1. mysql_num_rows
digunakan untuk menghitung jumlah baris yang didapat dari hasil eksekusi query (mysql_query).
2. while ( ) {
}
digunakan untuk melakukan perulangan selama data yang yang diinginkan masih ada. (dalam contoh diatas: akan menampilkan semua isi dari table).
3. mysql_fetch_array
menampilkan data dari tabel dalam bentuk array
Untuk penggunaan lainnya (hapus, update, dsb) yang berubah hanya string query-nya saja.

Sabtu, 19 November 2011

Insert CSS dan JavaScript di CI.

Insert CSS dan Java Script di CI di letakkan di view, yaitu dengan cara :
- Insert CSS :
<link rel=”stylesheet” href=”<?=base_url();?>css/mainutama.css” type=”text/css”
media=”screen, projection” />


Pada script di atas, file css dengan nama file:mainutama.css yang berada di folder css di insert.
Letak folder css sendiri ada nya di root.



- Insert JavaScript :
<script type="text/javascript" src="<?=base_url();?>javascript/addhtmlcontrols.js"></script>
Pada script di atas, file javascript dengan nama file:addhtmlcontrols.js yang berada di folder
javascript di insert. Letak folder javascript sendiri ada nya di root.

Jumat, 18 November 2011

Library Uploading File di Framework CI

Adalah library untuk upload file ke server dan di simpan di folder tertentu. Folder tempat
penyimpanan file di buat write accessible. Ukuran max di php.ini juga di atur agar sesuai
dengan yang kita inginkan. Perhatikan baris berikut pada php.
file_uploads=on // Buat menjadi on
post_max_size = 2M // Edit ukuran file nya sesuai dengan yang anda inginkan.
upload_tmp_dir=”/opt/lampp/htdocs” // Folder ini harus write accssible
Setting upload nya adalah sbb :
   $config['upload_path']='./uploads/';  // Folder penyimpanan file. Musti Write accessible
   $config['allowed_types']='gif|jpg|png';
   $config['max_size']='100';
   $config['max_width']='1024';
   $config['max_height']='768';
 
  $this->load->library('upload',$config);
  // Jika kita meletakkan library uploading file di dalam file autoload.php, maka syntax di bawah
      ini  yang perlu kita taruh :
      $this->upload->initialize($config);
$this->upload->do_upload()
      Fungsi : Untuk melakukan eksekusi uploading file
      Contoh :
     <?php
      class Upload extends Controller {
function Upload()
{
parent::Controller();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width']  = '1024';
$config['max_height']  = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);

}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
}
?>
 Agar form dapat melakukan uploading file, maka tipe enctype suatu form haruslah berbentuk
multipart/form-data.
 <form method=”post” enctype=”multipart/form-data”>

Membuat “Hello World” di framework CI

Berikut kita akan mempraktekan pemrograman php dengan CI. Kita akan menampilkan tulisan
“Hello World” ke dalam browser kita.
Langkah-langkah nya adalah sbb :
a.) Buka Text Editor anda. Lalu buatlah sebuah controller di dalam direktory CI anda, yaitu di :
      system/application/controllers.
b.) Tulis lah code sbb :
<?php
class Hello extends controller
{
    function index()
    {
       $this->load->view('helloview');
    }  
}
?>
Beri nama file hello.php.
      Yang musti di perhatikan :

  • Nama class harus di awali huruf besar.
  • Nama class harus sama dengan nama file.
  • Function index adalah function default. 
Di url tidak perlu di tuliskan nama function index nya. Kalau nama function selain index, perlu di tulis di url nya.
c.)  Buat file baru dengan nama helloview.php di system/application/views
      Tulis code sbb :
     <?
           echo “Hello World”;
      ?>
d.) Misal base_url : http://localhost/ci, maka jalankan di url anda menjadi :
http://localhost/ci/hello. Maka akan muncul hasil nya.
2. Membuat Form dengan CI
    Form pada CI dapat di buat dengan menggunakan helper atau  dengan syntax html biasa.
Pada kesempatan kali ini, kita akan mencoba membuat form dengan menggunakan helper.
   Buatlah sebuah controller. Ketik code berikut :
<?php
class Form extends Controller
{
    function index()
    {
       $this->load->view('form');
    }
function jumlah()
    {
        $angka1=$this->input->post('angka1');
        $angka2=$this->input->post('angka2');
        $hasil=$angka1+$angka2;
        echo "Hasil nya adalah : $hasil";
        echo "<br />".anchor("form/index","Kembali");
    }
} ?>

Beri nama file “form.php”.
Buat sebuah view dengan nama “form.php” . Ketikkan code sbb :
<html>
<head>
   <title>Membuat Form input penjumlahan dengan CI</title>
</head>
<body>
<table>
<? echo form_open('form/jumlah');
      $data1=array(
                    'name' => 'angka1',
                    'size'=>'15');
       echo "<tr><td>Angka 1</td><td> :</td><td>".form_input($data1)."</td></tr>";
        $data2=array(
                    'name' => 'angka2',
                    'size'=>'15');
       echo  "<tr><td>Angka 2</td><td> :</td><td> ".form_input($data2)."</td></tr>";
       echo  "<tr><td>".form_submit('mysubmit','Ok') ;
       echo    " ".form_reset('mysubmit','Clear')." </td></tr>";
?>
</table>
</body>
</html>
Pada contoh di atas kita load helper di file autoload.php untuk load secara otomatis.
$this->load->helper('form');
Helper yang kita gunakan, kita input di view. Syntax yang di gunakan adalah :
- form_open ('form/jumlah')
Syntax di atas sama dengan syntax html berikut :
<form method=”post” action=”http://localhost/ciprivate/index.php/form”>
atau, gunakan base_url(), untuk mengantisipasi perubahan pada url.
<form method=”post” action=”<?=base_url();?>index.php/form”>
Nilai base_url() di atas mengambil nilai base_url di file config.php .
- form_input ('username','sofwan')
Minimal, kita memasukkan nama field dan value pada syntax form_input.
Jika menggunakan parameter yang lebih banyak, yaitu :
$data1=array(
                    'name' => 'angka1',
                    'size'=>'15');
                     echo form_input($data1);

- form_submit('my submit','OK');
                      identik dengan :
                     <input type=”submit” value=”OK”>
         
- form_reset
         Sama penggunaan nya dengan form_reset.

Mengenal dan Instalasi Code Ignite


PHP adalah sebuah bahasa pemrograman web yang popular, tangguh dan dapat di peroleh
secara gratis. Belajar PHPcukup menyenangkan, karena bahasa ini tergolong mudah untuk di
pelajari. Untuk mempermudah dan mempercepat pengembangan aplikasi dengan PHP, banyak
bermunculan framework PHP, satu di antara nya adalah Code Igniter

Code Igniter (CI) (www.codeigniter.com) adalah salah satu framework php yang tangguh dan
popular. Code Igniter tergolong framework dengan ukuran kecil dan cukup mudah di kuasai. CI
juga datang dengan manual yang tergolong lengkap.

CI adalah sebuah php framework yang berupa kumpulan folder dan file php, java script,css,txt
dan file berbasis web lainnya dengan setting tertentu untuk menggunakannya dan menyediakan
library dan helper yang dapat di manfaatkan di dalam pemrograman php.
CI di jalankan under web dan harus dengan web server. Program CI cukup di letakkan di
bawah folder directory web server anda.
Berikut adalah struktur file CI :


1. Membuat “Hello World” di CI
  Berikut kita akan mempraktekan pemrograman php dengan CI. Kita akan menampilkan tulisan
“Hello World” ke dalam browser kita. 
Langkah-langkah nya adalah sbb :
a.) Buka Text Editor anda. Lalu buatlah sebuah controller di dalam direktory CI anda, yaitu di :
      system/application/controllers.
b.) Tulis lah code sbb :
<?php
class Hello extends controller
{
    function index()
    {
       $this->load->view('helloview');
    }  
}
?>
Beri nama file hello.php.
      Yang musti di perhatikan :
  • Nama class harus di awali huruf besar.
  • Nama class harus sama dengan nama file.
  • Function index adalah function default. Di url tidak perlu di tuliskan nama

function index nya. Kalau nama function selain index, perlu di tulis di url nya.
c.)  Buat file baru dengan nama helloview.php di system/application/views
      Tulis code sbb :
     <?
           echo “Hello World”;
      ?>
d.) Misal base_url : http://localhost/ci, maka jalankan di url anda menjadi :
http://localhost/ci/hello. Maka akan muncul hasil nya


Rabu, 16 November 2011

Membuat Form ComboBox Dinamis dari Database (Mysql) dengan PHP

Combobox merupakan salah satu element form yang sering digunakan dalam aplikasi – aplikasi pendaftaran, pada umumnya combobox digunakan untuk memilih salah satu option dimana terdapat banyak option yang ada. Value dalam combobox sebenarnya dapat ditulis langsung dalam html, namun, bagaimana jika data yang ingin ditampilkan sangat banyak atau tergantung pada kondisi tertentu?
Misalkan, kita ingin menampilkan pilihan kota – kota yang ada dalam negara Indonesia, maka kota yang ditampilkan juga merupakan kota yg berada dalam Indonesia.
Misalkan, user ternyata berasal dari Inggris, maka kota yang ditampilkan juga merupakan kota yg berada dalam negara Inggris.
Kita memerlukan combobox dinamis.
Ok, langsung praktik saja.
Step 1 : Persiapkan Database
  1. Buat database dengan nama db_tutorial
  2. Siapkan tabel dengan nama tb_kota, dengan struktur tabel seperti gambar dibawah ini.
  3. Insert kan beberapa sample data, seperti gambar dibawah
  4. Done!
Step 2 : Persiapkan Folder Kerja
  1. Buat folder dengan nama tutorphp dalam document root anda
  2. Simpan semua file dalam tutorial ini dalam folder tersebut.
Step 3 : Membuat script koneksi ke Database
  1. Ketikkan script berikut,
    <?php
    $host = "localhost";
    $user = "root";//adjust according to your mysql setting
    $pass = ""; //adjust according to your mysql setting, i use no password here
    $dbName = "db_tutorial";
    mysql_connect($host, $user, $pass);
    mysql_select_db($dbName)
    or die ("Connect Failed !! : ".mysql_error());
    ?>
    
  2. simpan dengan nama connect.php
Step 4 : Membuat form combobox dinamis
  1. Ketikkan script berikut,
    <form name='form' method='post' action='prosescombo.php'>
    <h3> Choose Your City</h3>
    <select name="kota">
    <option value=0 selected>- city -</option>
    <?php
    include 'connect.php';
    $q = mysql_query("select * from tb_kota where negara = 'Indonesia' "); //choose the city from indonesia only
    
    while ($row1 = mysql_fetch_array($q)){
      echo "<option value=$row1[kota]>$row1[kota]</option>";
    }
    ?>
    </select>
    <input type="submit" name="submit" value="Submit">
    </form>
    
  2. simpan dengan nama formcombo.php
Step 5 : Membuat menampilkan pilihan
  1. Ketikkan script berikut,
    <?php
    $kota = $_POST['kota'];
    
     if ($kota == '0') {
      echo "anda belum memilih";
     } else
      echo "anda memilih ".$kota;
    ?>
    
  2. simpan dengan nama prosescombo.php
Step 6 : Testing Code
  1. Pergi ke http://localhost/tutorphp/formcombo.php. Anda akan melihat form seperti dibawah. Pilih salah satu option (Disini saya memilih Solo)
  2. Klik Submit dan anda akan melihat hasilnya
OK. Haaaaaaaapppy Coding! :D

Senin, 14 November 2011

INSTALL TWITTER CLIENT APPLICATION IN UBUNTU 11.10

Turpial is Open Source twitter client application writes with python, though my opinion turpial is the best twitter client application ever which run in Ubuntu compared with Choqok, qtwit even gwibber. Turpial have good a appearance (some point having good icons), performance (you have a lot of setting inside), and User Friendly GUI that make us quickly to understand some function that available. 
Turpial 1.5
What features inside turpial 1.5 ?
Turpial 1.5 have a great features inside, therefore we call it 'the best twitter client application' in ubuntu, the features are :
  • Turpial support single column view and multicolumn view (if you are using Multicolumn view it's look like tweetdeck).
  • Colored tweets according to their status (yellow when read. blue when unread, etc).
  • Besides of twitter, tupial has Support with Identi.ca.
  • Enhanced Notifications (with further options).
  • Autoscrolling
  • Customizable image hosting place for uploaded images.
  • Customizable preferred service for shorten url service.
Turpial with Multicolumn view uploading some Images

Download/Install Turpial 1.5 via PPA
Turpial now comes to version 1.5, for ubuntu user you can install turpial via PPA that maintain byeffie-jayx, do following to install turpial 1.5 in Ubuntu 11.10 Oneiric :
  • sudo add-apt-repository ppa:effie-jayx/turpial
  • sudo apt-get update
  • sudo apt-get install turpial

UBUNTU 11.10 IN MACBOOK PRO

After that, we google it to find more information, here summary of Install Ubuntu 11.10 Oneiric Ocelot in MacBook Pro.

Unlike Ubuntu 11.04, Ubuntu 11.10 Oneiric Ocelot recognize almost all hardware of MacBook Pro and some of them works out of the box without any setting such us : VGA Intel HD, Multitouch Trackpad, FacetimeHD Camera, Sound, CardReader, Monitor brightness and Keyboard Bakclight. When I was looking for any reference on the net some errors that we encountered among others Bluetooth and MacBook Pro Wireless. Here some required setting to install Ubuntu 11.10 in Macbook Pro

Instal Ubuntu 11.10 MacBook Pro
before it's start, you should read my previous article here, step by step to install Ubuntu 11.10 on MacBook Pro was actually same as there, some things you need to change is the ISO, change the ISO with Ubuntu 11.10 for MAC (64-bit), download through following address :
Download Ubuntu 11.10 ISO for Mac 64bit

Fix Setting MacBook Wireless 
Some of MacBook Pro Series having a trouble in wireless, there are two option regarding this problem. you can use third party application/driver emulator like ndiswrapper or do patching the kernel, but we suggest you to do the last option that is patching the kernel, because people having trouble like system suddently freeze, and over heating when use ndiwswrapper. Read my following article to fix Broadcom BCM4331 Problem (use in MacBook Pro 8.1).
Setting MacBook Pro Wireless

Fix Setting MacBook Bluetooth
Some MacBook Pro having problem with the Bluetooth (ex:MacBook Pro 6.0) but not all, If you experience this install btusb-dkms from MacTel PPA, do as following :
  • sudo add-apt-repository ppa:mactel-support && sudo apt-get update
  • sudo apt-get install btusb-dkms
Note: some people having trouble with Bluetooth in Ubuntu 11.10 (not only MacBook), as we mention today, there is update for Bluetooth tools and daemons, Bluetooth ALSA daemons, and Bluetooth printerdriver for CUPS. So  update immediately after finish installing Ubuntu 11.10.

Fix Setting Mouse and Touchpad
Your MultiTouch and trackpad is works, right ? to get more setting of them go to System Settings > Mouse and Touchpad. See the image bellow.

Ubuntu 11.10 setting multitouch setting for MacBook Pro

Some additional application which help you to configure multitouch is Touchégg, Touchégg is a multitouch gesture recognizer for GNU/Linux that allows associating actions to each gesture.


Touchégg GUI Interface
Touchégg is available in both 32bit and 64bit as deb, download and install Touchégg as following
  • wget http://touchegg.googlecode.com/files/touchegg_0.2-maverick_amd64.deb
  • wget http://touchegg.googlecode.com/files/touchegg-gui_0.2-maverick_amd64.deb
  • sudo dpkg -i touchegg_0.2-maverick_amd64.deb && sudo dpkg -i touchegg-gui_0.2-maverick_amd64.deb

Fix for Touchpad Trouble in Ubuntu 11.10

One of the issues introduced by Ubuntu 11.10 on my Eee PC 901 is touchpad dragging. The tap-and-drag gesture, for moving the cursor with the mouse button depressed, is too sensitive. I have to tap as fast I can to activate the gesture every time.
Today I pursued the bug report for this issue to find a fix. It didn’t take long to find a workaround using synclient, which is a utility for manipulating options for Synapticstouchpads. Run this command to get the timeout before a tap is interpreted as a single tap:
synclient | grep "SingleTapTimeout"
On my system this option was set to 180, which is too fast. Run this command to double the timeout to 360:
synclient SingleTapTimeout=360
At this point, tap-and-drag should be much easier like in Ubuntu 11.04. But for me, it highlighted a second problem: there was a slight delay before any regular tap would register on the screen. This was very visible in the file browser, where there was a visible delay between tapping a file and that file becoming selected.
Enabling the “FastTaps” option fixes the delay issue:
synclient FastTaps=1
Now on top of touchpad dragging being fixed, the whole system feels more responsive! I hope that I haven’t been using Ubuntu on this netbook with FastTaps disabled all these years. All of the synclient options are documented in the synaptics manpage.
Changes made by synclient are not persistent across reboots. The proper way to set these options would be using Xorg configuration files. For now, I’ve just added the twosynclient commands to Startup Applications to run automatically when I log in.

Jumat, 11 November 2011

Script PHP Pengolah Password dengan MD5

Setiap password pengguna aplikasi hendaknya dienkripsi untuk keperluan faktor keamanan. Mengapa password harus dienkripsi? atau apa sih enkripsi itu?
Enkripsi adalah teknik penyandian pesan, yang semula pesan tersebut dapat dibaca dan bermakna, setelah dienkripsi menjadi tidak terbaca dan tidak bermakna.
Apabila password tidak dienkripsi, maka dapat dengan mudah dibaca, dan digunakan oleh orang lain yang tidak berhak untuk masuk ke dalam sistem atau aplikasi.
Dalam pemrograman PHP, tentu kita tidak asing dengan perintah atau function md5(). Fungsi ini sering digunakan para programmer untuk mengenkripsi password sebelum hasil enkripsi tersebut disimpan dalam database sistem, ketika registrasi user baru. Hasil enkripsi md5() berupa suatu string acak dengan panjang 32 karakter (256 bit).
Namun sudah amankah penggunaan md5() ?  Artikel ini akan membahasnya, serta memberikan tips bagaimana cara membuat script PHP yang baik untuk mengolah password.

Biasanya, struktur kode untuk mengenkripsi password dengan md5 dan menyimpannya ke dalam database (pada registrasi user baru) adalah sebagai berikut:
<?php
// input username baru
// input password asli baru ($passAsli)
$passEnkrip = md5($passAsli);
/* procedure simpan data username
dan password hasil md5() yaitu $passEnkrip ke db */
?>
Sedangkan struktur code untuk loginnya adalah
<?php
// input login username
// input login password asli ($passAsli)
// ambil $passEnkrip dari pengecekan username dari dbase 
if (md5($passAsli) == $passEnkrip)
{
 // login sukses
 // procedure jika login sukses
}
else {
 // login gagal
 // procedure jika login gagal
}
?>
Lantas… benar-benar sudah amankah penggunaan md5() dengan struktur kode di atas?

Beberapa periode yang lalu, mungkin penggunaan struktur seperti di atas sudah dirasa aman. Namun saat ini tidak aman lagi, karena sudah banyak tool untuk mendekripsi hasil enkripsi md5(). Salah satu toolnya seperti yang ada di situs http://md5.rednoize.com. Apa akibatnya jika password sudah berhasil didekripsi? tentu website kita sudah tidak menjadi aman.
Lalu apakah md5() tidak bisa digunakan lagi? Kiita tetap menggunakan md5() namun perlu sedikit kreatif. Maksudnya adalah bahwa kita perlu mengkombinasikan penggunaan md5() dengan pengacak, misalnya kita gunakan md5() berulangkali, atau menggabungkan password asli dengan suatu string tertentu lalu dienkripsi.

Berikut ini contoh struktur code untuk menyimpan password terenkripsi menggunakan pengacak :
<?php
// input username baru
// input password baru ($passAsli)
$pengacak = "AJWKXLAJSCLWLW";
$passEnkrip = md5($pengacak . md5($passAsli) . $pengacak );
/* procedure simpan data username
dan password $passEnkrip ke db */
?>
Sedangkan berikut ini adalah struktur untuk loginnya :
<?php
// input login username
// input login password asli ($passAsli)
// ambil $passEnkrip dari pengecekan username dari dbase
$pengacak = "AJWKXLAJSCLWLW";
if (md5($pengacak . md5($passAsli) . $pengacak) == $passEnkrip)
{
 // login sukses
 // procedure jika login sukses
}
else {
 // login gagal
 // procedure jika login gagal
}
?> 
Anda dapat mengubah isi pengacak atau mungkin mengubah format enkripsinya menjadi model lain, misalnya menggabungkan 3 atau lebih md5() dalam enkripsi. Dalam hal ini, hanya kita yang tahu format enkripsi atau pengacaknya. Intinya adalah jangan mengenkripsi password menggunakan md5() secara langsung, karena hal ini rawan untuk dihack pada saat ini.

Mudah-mudahan artikel ini membantu…

Perbedaan Echo atau Print dalam script PHP

Apa perbedaan echo dan print dalam bahasa pemrograman PHP ? Kita seringkali menggunakan echo (atau print) tapi tidak mengetahui apa perbedaannya antara dua syntax tersebut.
Print dapat berlaku seperti sebuah fungsi artinya print memiliki return value berupa boolean jika sukses sedangkan echo tidak. Echo langsung meng-output-kan parameter yang diberikan. Oleh karena itu, kita dapat melakukan
<?php
$a = “Hello”;
$b = ” World”;
echo $a, $b;
?>
tetapi tidak dapat melakukan
print $a, $b;
karena malah akan menghasilkan parse error.

Contoh lain, kita dapat melakukan ini

($var) ?print 'true':print 'false';
dan tidak dapat melakukan ini
($var) ?echo 'true':echo 'false';
melainkan harus
echo ($var) ? 'true' : 'false';
Dan, echo lebih cepat 20% dari print
Namun echo tidak mempunyai varian. Maksudnya echo hanya menampilkan string, jika kita menginputkan varibel berupa array atau object, echo hanya menampilkan keterangan bahwa variabel tersebut adalah array, atau object. Lain halnya dengan print, print memiliki varian print_r() yang mampu memecah array dan menampilkan key-key (disebut juga indeks array) dan value dari array tersebut. Begitupula jika print_r() kita beri variabel input berupa Object. Selain print_r(), print memiliki varian printf($format, $string) untuk menampilkan string dengan format tertentu yang kita definisikan.

Kamis, 10 November 2011

Buat Backlink, pakai www atau tidak ?

Saat Anda mempublikasikan sebuah website, ketahuilah bahwa secara otomatis Anda memiliki 2 alamat sekaligus, yaitu : http://nama-website.com dan http://www.nama-website.com.
Yang satu dengan memakai www dan yang satu tidak. Keduanya memang memiliki konten web yang sama tetapi akan menghasilkan tinjauan Search Engine yang berbeda dari segi backlink.
Coba cek backlink situs Anda dengan menggunakan Backlinkwatch. Maka jumlah backlink website Anda berbeda antara memakai www dengan tidak memakai www.
Lalu, saya memakai yang mana dan apa resikonya ? Saya sebagai jasa website pun pernah mengalami kebingungan seperti Anda, berikut hasil yang telah saya pelajari dan praktikkan mengenai aturan membuat backlink dan kode 301 redirect pada file htaccess.
Prinsip yang harus Anda pegang mulai sekarang : Tidak ada keharusan secara mutlak, Anda memakai yang mana, yang penting konsisten.
Sebagai referensi bacaan, Anda dapat melihat pada http://forum.imfreakz.com/archive/index.php/t-10.html dan http://www.webmasterworld.com/apache/3223535.htm
  • Langkah pertama, Anda harus membuat file .htaccess, berikut ini : .file htaccess dengan Notepad, simpan terlebih dahulu dengan nama htaccess.txt
  • Rename htaccess.txt menjadi .htaccess. Jika tidak bisa, coba baca mengubah nama file htaccess.txt menjadi .htaccess pada localhost .
  • Jika Anda menetapkan dari mula memakai www, maka untuk backlink pakailah juga www. Daftarkan di Google webmaster, sitemap, website lain, dsb dengan memakai www. Jangan lupa untuk menambahkan kode 301 redirect pada file .htaccess, berikut ini : (Misal http://metadesain.com langsung mengarah ke http://www.metadesain.com )
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^metadesain.com [NC]
RewriteRule ^(.*)$ http://www.metadesain.com/$1 [L,R=301] 

Sebaliknya juga demikian, jika merasa lebih nyaman tanpa www, tambahkan kode 301 redirect berikut di file .htaccess, sebagai berikut: (Misal http://www.metadesain.com langsung mengarah ke http://metadesain.com)
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.metadesain.com [NC]
RewriteRule (.*) http://metadesain.com/$1 [L,R=301] 
  • Setelah ambil keputusan, Anda memilih yang mana, maka tetapkan pilihan anda seterusnya untuk pendaftaran Google webmaster, backlink dan lainnya. Selamat mencoba!!
Di sini saya share bahwa Dulu Kesalahan fatal saya ,saya tidak konsisten dari awal dalam pendaftaran google webmaster dan backlink-backlinknya. Pada backlink-backlink yang saya buat, ada yang dengan memakai www, dan ada yang tidak. Selain itu, mengganti-ganti alamat url dalam pendaftaran di Google webmaster bisa berakibat buruk.
Ini yang terjadi saat saya cek:
http://metadesain.com--> backlink > 250
http://www.metadesain.com --> backlink < 30
Kemudian di tengah- tengah tahun, saya coba coba pakai kode redirect untuk mengubah dari http://metadesain.com ke http://www.metadesain.com, namun saya lupa kalau di webmaster google dan yahoo serta di backlink2 yang lain, saya sebagai jasa website mendaftarkan dengan tidak pakai www. Akibatnya seperti yang dikatakan di sebuah forum, page rank saya turun saat Google mengindeks ulang. Ingat ! Fungsi Redirect adalah mengabaikan url yang lama, dan mengarahkan url lama Anda kepada url yang baru.
Jadi jika kita sudah men-set up htaccess seperti di atas, diharapkan Google akan mengerti url mana yg harus diperhatikan dari situs kita. Karena setiap link masuk seperti contoh kasus di atas akan di redirect secara permanen ke halaman yang kita inginkan, menggunakan www ataupun non www. Ingat !! Pada dasarnya, seberapa banyak backlink yang mengarah ke alamat situs yang anda inginkan dan seberapa besar kualitas backlink Anda itu akan mempengaruhi pagerank situs Anda.
Ini ada contoh kasus di forum:
" Jadi inget kasus beberapa hari lalu. Ada seseorang bertanya kenapa saya sudah mati-matian link building, bayar jasa sana-sini, tapi site gak naek-naek. Usut punya usut ternyata tidak ada sinkron alias koordinasi antara jasa pembuat website dengan jasa optimasi SE. Situs (ber engine wordpress) disetting menggunakan www. sedang link building diarahkan ke domain tanpa www. Lah piye, yang banyak backlink yang tanpa www, sedangkan yang terindex yang memakai www.

Dalam kasus ini dilema. Mereset hasil index yang jelas berpotensi terkena dampak duplicate content atau link building ulang. maknyos kerja maning ...

Untuk menghindari hal tersebut terjadi, konsep awal harus benar-benar matang. Konsistensi, mau pake www atau gak sejak awal! "