Beranda · Contact Us · Downloads

Perintah dan Keterangan Linux

Bekerja dengan linux berarti harus siap bertemu dengan baris perintah di terminal. Berikut saya bagikan sedikit dasar-dasar command linux :

1. sudo/su 
Digunakan untuk login sebagai root/pengguna tertinggi.
Sintaks : sudo su

2.  login
Digunakan untuk login sebagai user lain, namun harus menjadi user root dahulu untuk menjalankan perintah ini.
Sintaks : login namauser
Contoh : login oravis

3. cd
Digunakan untuk pindah direktori.
Sintaks : cd alamat_direktori
Contoh : cd /var/www

4. pwd
Digunakan untuk memperlihatkan di direktori mana kita berada sekarang.
Sintaks : pwd

5. ls
Digunakan untuk melihat isi sebuah direktori.
Sintaks : ls

6. cp
Digunakan untuk melakukan copy file.
Sintaks : cp /direktori/file_yang_ingin_dicopy /direktori_tujuan
Contoh : cp /etc/file1.txt /var/www

7. mv
Digunakan untuk memindahkan, cut atau rename file.
Sintaks : mv /direktori/file_yang_ingin_dicut /direktori_tujuan(cut)
               mv /direktori/file_yang_ingin_direname nama_baru_file (rename)
Contoh : mv /etc/file1.txt /var/www
               mv /etc/file1.txt file2.txt

8. mkdir
Digunakan untuk membuat folder baru.
Sintaks : mkdir nama_folder
Contoh : mkdir folder1

9. rmdir
Digunakan untuk menghapus folder.
Sintaks : rmdir nama_folder
Contoh : rmdir folder1

10. touch
Digunakan untuk membuat file baru.
Sintaks : touch nama_file
Contoh : touch file1.txt

11. rm
Digunakan untuk menghapus file.
Sintaks : rm nama_file
Contoh : rm file1.txt

12. more
Digunakan untuk menampilkan isi sebuah file.
Sintaks : more nama_file
Contoh : more file1.txt

13. echo
Digunakan untuk menuliskan sesuatu kata atau kalimat ke sebuah file.
Sintaks : echo "isi_pesan" >> nama_file
Contoh : echo "Hai ini adalah contoh pesan">> file1.txt

14. adduser
Digunakan untuk menambah user baru.
Sintaks : adduser nama_user
Contoh : adduser retnoagus

15. addgroup
Digunakan untuk menambah group baru.
Sintaks : addgroup nama_group
Contoh : addgroup group1

16. lsusb
Digunakan untuk melihat perangkat usb yang sedang terkoneksi ke komputer.
Sintaks : lsusb

17. lspci
Digunakan untuk melihat perangkat pci yang sedang terkoneksi ke komputer.
Sintaks : lspci

18. top
Digunakan untuk melihat proses yang sedang berjalan, seperti Task Manager pada windows.
Sintaks : top

19. cpuinfo
Digunakan untuk melihat spesifikasi komputer.
Sintaks : more /proc/cpuinfo

20. meminfo
Digunakan untuk melihat status RAM
Sintaks : more /proc/meminfo

21. clear
Digunakan untuk membersihkan layar.
Sintaks : clear

22. halt
Digunakan untuk mematikan komputer, namun harus sebagai root.
Sintaks : halt

23. reboot
Digunakan untuk merestart komputer, namun harus sebagai root.
Sintaks : reboot

24. exit
Digunakan untuk keluar dari terminal.
Sintaks : exit

25. wget
Digunakan untuk mendownload dari terminal.
Sintaks : wget link_download
Contoh : wget  www.cs.com/cssetup.exe

26. ifconfig
Digunakan untuk melihat konfigurasi ethernet/kartu jaringan.
Sintaks : ifconfig

27. apt-get
Digunakan untuk memperoleh paket/software dari repository ubuntu secara online.
Sintaks : apt-get nama_paket
Contoh : apt-get update (untuk melakukan update repository)
               apt_get wine (untuk mendapatkan paket wine)

28. tar
Digunakan untuk melakukan ekstrak file.
Sintaks : tar [parameter] nama_file
Contoh : tar -xzvf oravis-pemrograman-v1.tgz

29. nautilus
Digunakan untuk membuka tampilan GUI secara langsung.
Sintaks : nautilus
Contoh : sudo nautilus (menggunakan mode GUI dengan status root)

30. df -h
Digunakan untuk melihat sisa kapasitas harddisk.
Sintaks : df -h

31. who
Digunakan untuk melihat nama login kita.
Sintaks : who

32. cat
Digunakan untuk membuka file.
Sintaks : cat file1.txt

33.  date
Digunakan untuk melihat tanggal.
Sintaks : date

34. cal
Digunakan untuk melihat calender.
Sintaks : cal

35. hostname
Digunakan untuk menampilkan nama komputer.
Sintaks : hostname

36. free
Digunakan untuk melihat free memory.
Sintaks : free

37. history
Digunakan untuk melihat perintah apa saja yang pernah diketikkan

38. deluser
Digunakan untuk menghapus user dari sistem
Sintaks : deluser [namauser]


Itulah beberapa perintah dasar linux yang saya bagikan. Semoga membantu.
Good Luck!

Artikel keren lainnya:

Yii: Menampilkan data hasil query ke dalam tabel

 Bagaimana caranya menampilkan data hasil query ke dalam tabel?
Berikut saya akan memberikan contoh kecil bagaimana caranya menampilkan data hasil dari sebuah query ke dalam tabel di Yii. Yang pertama disiapkan adalah ketersediaan data yang akan ditampilkan ke dalam tabel. Di sini saya memanfaatkan CSqlDataProvider untuk menarik data.

Berikut data yang saya siapkan :
<?php 
    $kd_service= $model->kd_service;
    $detail= new CSqlDataProvider(
            "select d.kd_barang,d.qty,d.kd_dservice,
                    b.nama_barang,b.merek,b.harga,
                    (b.harga*d.qty) as subtotal
             from     dservice d, barang b
             where     d.kd_barang=b.kd_barang
                    and kd_service = '".$kd_service."'");
    $details= $detail->getData(); 
?>
Setelah datanya siap, langkah selanjutnya menyiapkan kolom dimana data akan ditampilkan. Perhatikan script sederhana di bawah ini : 
Membuat kerangka tabel 

<table class="table table-striped table-hover table-bordered table-condensed">
      <thead>
        <tr>
          <th width=40px></th>
          <th>No</th>
          <th>Kode Barang</th>
          <th>Nama Barang</th>
          <th class="text-center">Qty</th>
          <th class="text-right">Harga</th>
          <th class="text-right">Subtotal</th>
        </tr>
      </thead>
      <tbody>
Menampilkan data ke dalam array

<?php    
$total=0;
$no=0;
for ($i=0; $i<count($details); $i++){
$no++;
        echo '<tr>
        <td>'
        //menampilkan tombol update & delete
        .CHtml::link('<i class="fa fa-trash-o"></i>&nbsp;&nbsp;','#', 
        array('submit'=>array('dservice/delete','id'=>$details[$i]['kd_dservice']),
        'confirm'=>'Are you sure to delete this item?','status'=>'a')).
        CHtml::link('<i class="fa fa-pencil"></i>','#', 
        array('submit'=>array('dservice/update','id'=>$details[$i]['kd_dservice']),
        )).
        '</td>
            <td>'.$no.'</td>
            <td>'.$details[$i]['kd_barang'].'</td>
            <td>'.$details[$i]['nama_barang'].'</td>
            <td class=text-center>'.$details[$i]['qty'].'</td>
            <td class=text-right> Rp '.$details[$i]['harga'].'</td>
            <td class=text-right>Rp '.$details[$i]['subtotal'].'</td>
        </tr>
        ';
        //menghitung nilai subtotal
        $total=$total+$details[$i]['subtotal'];
    }
?>
menampilkan bagian bawah tabel

        <tr>
            <td colspan=5>
            <th>Total</th>
            </td>
            <th class="text-right">
            <?php echo 'Rp '.$total; ?></th>
        </tr>
        <tr>
            <td colspan=5>
            <th>Biaya Service</th>
            </td>
            <th class="text-right">
            <?php echo 'Rp '.$model->biaya_service ; ?></th>
        </tr>
        <tr>
            <td colspan=5>
            <th>Grand Total</th>
            </td>
            <th class="text-right">
            <?php $grandtotal= $model->biaya_service + $total ; 
            echo 'Rp '.$grandtotal ;?></th>
        </tr>
</table>
Silahkan salin semua kode di atas dan simpan di sebagai views/namamodel/view.php


Good Luck!

Artikel keren lainnya:

Yii: Export Data into Excel

Setelah sukses mencoba import data excel ke dalam database pada artikel sebelumnya, kali ini saya akan berbagi tentang export data ke dalam excel. Bagaimana caranya?

Berbekal dari pengalaman yang ada saya melakukan pencarian di google hingga akhirnya saya menemukan salah satu cara sederhana untuk export data ke dalam excel. Thanks to developers :)

Caranya cukup mudah tinggal menyalin kode di bawah ini lalu menyimpannya di dalam components. Bagi yang mau mengunduhnya silahkan klik link download
<?php
//protected/components/ExcelExporter.php
class ExcelExporter
{
        const CRLF = "\r\n";

        /**
         * Outputs active record resultset to an xml based excel file
         *
         * @param $filename - name of output filename
         * @param $data - active record data set
         * @param $title - title displayed on top
         * @param $header - boolean to show/hide header
         * @param $fields - array of fields to export
         */
        public static function sendAsXLS($filename, $data, $title = false, $header = false, $fields = false)
        {
                $export = self::xls($data, $title, $header, $fields);
                self::sendHeader($filename, strlen($export), 'vnd.ms-excel');
                echo $export;
                Yii::app()->end();
        }

        /**
         * Send file header
         *
         * @param $filename - filename for created file
         * @param $length - size of file
         * @param $type - mime type of exported data
         */
        private static function sendHeader($filename, $length, $type = 'octet-stream')
        {
                if (strtolower(substr($filename, -4)) != '.xls')
                        $filename .= '.xls';

                header("Content-type: application/$type");
                header("Content-Disposition: attachment; filename=$filename");
                header("Content-length: $length");
                header('Pragma: no-cache');
                header('Expires: 0');
        }

        /**
         * Private method to create xls string from active record data set
         *
         * @param $data - active record data set
         * @param $title - title displayed on top
         * @param $header - boolean to show/hide header
         * @param $fields - array of fields to export
         */
        private static function xls($data, $title, $header, $fields)
        {
                $str = '<html>' . self::CRLF
                . '<head>' . self::CRLF
                . '<meta http-equiv="content-type" content="text/html; charset=utf-8">' . self::CRLF
                . '</head>' . self::CRLF
                . '<body style="text-align:center">' . self::CRLF;

                if ($title)
                        $str .= "<b>$title</b><br /><br />" . self::CRLF
                        . Yii::t('main', 'export_lines') . ': ' . count($data) . '<br />' . self::CRLF
                        . Yii::t('main', 'export_date') . ': ' . Yii::app()->dateFormatter->formatDateTime($_SERVER['REQUEST_TIME']) . '<br /><br />' . self::CRLF;

                if ($data)
                {
                        $str .= '<table style="text-align:left" border="1" cellpadding="0" cellspacing="0">' . self::CRLF;

                        if (!$fields)
                                $fields = array_keys($data[0]->attributes);

                        if ($header)
                        {
                                $str .= '<tr>' . self::CRLF;
                                foreach ($fields as $field)
                                        $str .= '<th>' . $data[0]->getAttributeLabel($field) . '</th>' . self::CRLF;
                                $str .= '</tr>' . self::CRLF;
                        }

                        foreach ($data as $row)
                        {
                                $str .= '<tr>' . self::CRLF;
                                foreach ($fields as $field)
                                        $str .= '<td>' . $row->$field . '</td>' . self::CRLF;
                                $str .= '</tr>' . self::CRLF;
                        }

                        $str .= '</table>' . self::CRLF;
                }

                $str .= '</body>' . self::CRLF
                . '</html>';

                return $str;
        }
}

Langkah selanjutnya membuat action untuk export data
public function actionExport()
    {
        $data=Mahasiswa::model()->findAll();
        $fields=array(
            'field1',
            'field2',
        );
   
        ExcelExporter::sendAsXLS('Mahasiswa', $data, true, $fields);
    }

Hasilnya :





Good Luck!

Artikel keren lainnya:

Yii: Import Data from Excel into MySQL Database

Pada artikel sebelumnya saya sudah membahas langkah-langkah mengupload file (klik di sini) dan langkah untuk membaca file excel (klik di sini). Kali ini saya akan mencoba membahas sedikit tentang bagaimana import data dari excel dan memasukkannya ke dalam database.

Berikut sekenario yang akan dijalankan :
  • Upload file excel
  • Membaca data dari file excel dan menginputkannya ke dalam database
  • Unlink file excel
1. Pertama buatlah halaman untuk upload file, definiskan model beserta atributnya :
//models/ImportForm.php
<?php
class ImportForm extends CFormModel{
    public $file_excel;
   
    public function rules(){
        return array(
            array('file_excel','file','types'=>'xls',
            'allowEmpty'=>false),
        );
    }
   
    public function attributeLabels(){
        return array(
        'file_excel'=>'File',
        );
    }
}
?>
 2. Di dalam view, buatlah form upload

//views/mahasiswa/_formimport.php
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'import-form',
    'enableAjaxValidation'=>false,
    'htmlOptions'=> array('enctype'=>'multipart/form-data'),
)); ?>


<div class="row">
        <?php echo $form->labelEx($model,'file_excel'); ?>
        <?php echo $form->Filefield($model,'file_excel'); ?>
        <?php echo $form->error($model,'file_excel'); ?>
    </div>
......
//views/mahasiswa/import.php
<h1>Import Mahasiswa</h1>
<?php $this->renderPartial('_formimport', array('model'=>$model)); ?>
 
3. Langkah terakhir adalah membuat action import, perhatikan kode di bawah ini :
public function actionImport()
{
 $model=new ImportForm;
 require_once Yii::app()->basePath.'/../upload/excel_reader2.php';

       
   if (isset($_POST['ImportForm']))
   {
     $a=$model->validate();
     if ($a) {
       //upload file
       $model->attributes=$_POST['ImportForm'];
       $file=CUploadedFile::getInstance($model,'file_excel');
       $file->saveAs(Yii::app()->basePath.'/../upload/import.xls');
                   
       //Read excel to array
       $path=Yii::app()->basepath.'/../upload/import.xls';
       $data = new Spreadsheet_Excel_Reader($path);
       $nim=array();
       $nama=array();
       $alamat=array();
                       
       $berhasil=0;
       $gagal= 0;
       //insert into database
       for ($j=2; $j <= $data->sheets[0]['numRows']; $j++)
          {
             $nim[$j]=$data->sheets[0]['cells'][$j][1];
             $nama[$j]=$data->sheets[0]['cells'][$j][2];
             $alamat[$j]=$data->sheets[0]['cells'][$j][3];
               
             $model= new Mahasiswa;
             $model->nim=$nim[$j];
             $model->nama=$nama[$j];
             $model->alamat=$alamat[$j];
             $model->create_time=new CDbExpression('now()');
             $model->save();
              
               //hitung record
               if(!$model->save()){
                 $gagal++;
               } else {
                 $berhasil++;
               }  
          }
        Yii::app()->user->setFlash('sukses',$berhasil.' record
        berhasil disimpan dan '.$gagal.' record gagal disimpan..');
        //hapus file excel
        unlink ($path);
        $this->redirect(array('admin'));
       }
    }
    $this->render('import',array('model'=>$model));
}

Hasilnya :





Good Luck!

Artikel keren lainnya:

Yii: Membaca Excel menggunakan Php Excel Reader

Php-excel-reader memiliki kemampuan untuk membaca format binary dari file XLS dan menampilkannya sesuai dengan isi dan formatnya. 


1. Pertama silahkan unduh library php-excel-reader terlebih dahulu, klik download

2. Kemuadian siapkan file .xls (Excel 97-2003 workbook).

3. Letakkan file xls dan excel_reader2.php di dalam folder webaccess
    Di sini saya meletakkannya di dalam folder C:\wamp\www\Helloword\upload

4. Silahkan pahami kode di bawah ini :
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once Yii::app()->basePath.'/../upload/excel_reader2.php';
$example = Yii::app()->basePath.'/../upload/transactions.xls' ;
$data = new Spreadsheet_Excel_Reader($example);
?>
<html>
<head>
<style>
table.excel {
    border-style:ridge;
    border-width:1;
    border-collapse:collapse;
    font-family:sans-serif;
    font-size:12px;
}
table.excel thead th, table.excel tbody th {
    background:#CCCCCC;
    border-style:ridge;
    border-width:1;
    text-align: center;
    vertical-align:bottom;
}
table.excel tbody th {
    text-align:center;
    width:20px;
}
table.excel tbody td {
    vertical-align:bottom;
}
table.excel tbody td {
    padding: 0 3px;
    border: 1px solid #EEEEEE;
}
</style>
</head>

<body>
<?php echo $data->dump(true,true); ?>
</body>
</html>

 Hasilnya :


Catatan :
  1. Jika menemukan error function split() is deprecated silahkan modifikasi excel_reader2.php, replace kata split dengan explode
  2. Jika menemukan error Assigning the return value of new by reference is deprecated silahkan modifikasi excel_reader2.php
    ganti kode berikut
    $this->_ole =& new OLERead();

    dengan
    $t = new OLERead();
    $this->_ole =& $t;


Good Luck!

Artikel keren lainnya:

Yii: Upload File menggunakan model

Banyak cara yang bisa digunakan untuk sekedar menggunggah file ke dalam sistem. Salah satunya yang akan saya bahas di sini yaitu upload file menggunakan model. Di sini saya memanfaatkan class CUploadedFile yang sudah disediakan oleh yii.

1. Model
Langkah pertama yang mesti dilakukan adalah mendefinisikan attribut di dalam class yang digunakan. Kemudian definisikan pula validasi rulenya untuk memastikan extensi file yang bisa diunggah.
class Mahasiswa extends CActiveRecord
{
    public $image; 
    //......

public function rules()
    {
        return array(
          array('image','required','on'=>'create'),
          array('image','file','types'=>'jpg, gif, png',
            'allowEmpty'=>true,
            'maxSize'=>1024*1024*1,
            'tooLarge'=>'File terlalu besar, maksimal file 1 MB.'),
            //.......
          );
    }
}
2. View
Di dalam class form tambahkan kode untuk menampilkan field untuk mengunggah file.
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'mahasiswa-form',
    'enableAjaxValidation'=>false,
    'htmlOptions'=> array('enctype'=>'multipart/form-data'),
)); ?>

<div>
    <?php echo $form->labelEx($model,'image');?>
    <?php echo $form->fileField($model,'image');?>
    <?php echo $form->error($model,'image');?>
</div>  
 
...........
 3. Controller
Kemudian di dalam controller definisikan action method
if(isset($_POST['Mahasiswa']))
   {
    $model->attributes=$_POST['Mahasiswa'];
    $gambar=CUploadedFile::getInstance($model,'image');
    $model->image=CUploadedFile::getInstance($model,'image');
    $nm_file=$model->image;

    if($model->save()){
      $gambar->saveAs(Yii::app()->basePath.'/../images/'.$nm_file);
      $this->redirect(array('view','id'=>$model->nim));
    }
}
Setelah berhasil mengunggah file, langkah selanjutnya adalah menampilkannya di view. Untuk menampilkan file gambar bisa menggunakan kode di bawah ini :
array('type'=>'raw',
      'label'=>'Foto',
      'value'=>html_entity_decode(CHtml::image(<Url_File>,'alt',
          array('width'=>85, 'height'=>85)))
),

Hasilnya :







Good Luck!

Artikel keren lainnya:

Yii: Menampilkan Google Captcha (reCAPTCHA)

Pada artikel kali ini saya akan membahas sedikit tentang bagaimana menggunakan google captcha (reCAPTCHA) di aplikasi web yii. Dengan bantuan extensions recaptcha kita hanya perlu melakukan sedikit perubahan/penambahan kode untuk menggunakannya.

Silahkan download file extensions recaptcha terlebih dahulu dengan klik download, kemudian ekstrak file tersebut di folder /protected/extensions.

Berikutnya adalah melakukan registrasi ke http://recaptcha.net/ untuk mendapatkan Site key dan Secret key. Site key digunakan untuk menyajikan ke user, sedangkan Secret key digunakan untuk komunikasi antara aplikasi dan google.

Untuk menggunakannya silahkan lakukan perubahan di model, view, serta controller :

1. Model, definisikan attribut beserta rulenya :
//protected/models/LoginForm.php
class LoginForm extends CFormModel
{
    public $validasi;
........

public function rules(){
  return array(           
    array('validasi',
    'application.extensions.recaptcha.EReCaptchaValidator',
    'privatekey'=>'<--masukkan Secret Key di sini-->'),

    array('validasi',
    'application.extensions.recaptcha.EReCaptchaValidator',
    'privatekey'=>'
ENVII_CAPTCHA_PRIVATE_KEY',
    'on'=>'registerwcaptcha'),

    ......
  );
}
 2. View
<?php
$this->widget('application.extensions.recaptcha.EReCaptcha',
   array('model'=>$model, 'attribute'=>'validasi',
      'theme'=>'red', 'language'=>'en',
      'publickey'=>'<--masukkan Site Key di sini-->')); ?>
 <?php echo Chtml::error($model,'validasi'); ?>
3. Controller
public function actionRegister()
    {
        $form = new user();
        $form->scenario = 'registerwcaptcha';
        if($form->validate())
        {
            $form->scenario=NULL;
            $form->save();
        }
    }

Untuk melihat hasilnya pastikan komputer Anda terhubung dengan internet. Koneksi internet tersebut dibutuhkan untuk komunikasi antara aplikasi dan google.




Good Luck!


Artikel keren lainnya:

Yii: Menambahkan Captcha di Halaman Login

Sebelum memulai saya akan memberikan sedikit ulasan tentang apa itu captcha. Kalau Anda pernah mengisi formulir di internet, pasti Anda pernah menjumpai gambar tulisan/huruf-huruf bengkok yang mungkin akan membuat Anda bingung lalu kemudian disuruh mengisikan huruf-huruf tersebut ke dalam kotak isian. Lalu apa huruf-huruf itu? Itukah yang disebut captcha? Lalu apa itu Captcha?

CAPTCHA merupakan singkatan dari Completely Automated Public Turing test to tell Computers dan Humans Apart. Captcha itu sendiri berguna untuk memastikan bahwa respon yang dihasilkan hanya boleh dibuat oleh manusia, bukan dari komputer atau lebih tepatnya untuk menghindari bot. Untuk lebih jelasnya silahkan tanya mbah google...

Kembali ke topik pembahasan, berbeda dengan Captcha di atas saya akan menggunakan captcha bawaan dari yii. Untuk menambahkan captcha di halaman login dibutuhkan sedikit ubahan coding, diantaranya :

1. Melakukan ubahan pada model 
    Tambahkan attribute berikut pada model:
//protected/models/LoginForm.php
class LoginForm extends CFormModel
{
    public $verifyCode;
    Membuat validasi rule
public function rules()
    {
        return array(
            //verifycode needs to be entered correctly
            array('verifyCode','captcha','allowEmpty'=>
            !CCaptcha::checkRequirements()),
2. Melakukan konfigurasi pada view
//protected/views/site/login.php
    <?php if (CCaptcha::checkRequirements()):?>
    <div class="row">
        <?php echo $form->labelEx($model,'verifyCode');?>
        <div>
        <?php $this->widget('CCaptcha');?>
        <?php echo $form->textField($model,'verifyCode');?>
        </div>
        <div class="hint">Please enter the letters as they are shown in the image above.
        <br/>Letter are not case-sensitive.</div>
        <?php echo $form->error($model,'verifyCode');?>
    </div>
    <?php endif;?>
3. Mengaktifkan captcha di controller
//protected/controllers/SiteController.php
public function actions()
    {
        return array(
            // captcha action renders the CAPTCHA image displayed on the contact page
            'captcha'=>array(
                'class'=>'CCaptchaAction',
                'backColor'=>0xFFFFFF,
            ),
Berikut hasilnya :


Good Luck!



Artikel keren lainnya:

Yii: Menampilkan Last Login di Halaman Utama

Untuk menampilkan last login pastikan Anda sudah membuat fungsi login dengan database. Jika belum silahkan membuatnya terlebih dahulu, berikut tutorial membuat login dengan database.

Siapkan/tambahkan field yang nantinya akan digunakan untuk menyimpan record :
FieldType
last_login_timedatetime
Langkah selanjutnya adalah melakukan sedikit ubahan authenticate() pada UserIdentity.
$this->setState('LastLogin', date("D, d M Y H:i:s",
strtotime($user->last_login_time)));
$user->saveAttributes(array('last_login_time'=>
date("Y-m-d H:i:s", time()),));
   
Maksud dari kode di atas yaitu mengambil nilai awal last_login_time dari database dan disimpan ke atribut LastLogin.  Kemudian last_login_time di database diperbaharui dengan nilai current time.
Untuk memanggil atribut tersebut bisa dilakukan dengan perintah :
Yii::app()->user->LastLogin;

Berikut saya contohkan :
<h1>Welcome to <i><?php echo CHtml::encode(Yii::app()->name); ?></i></h1>
......
<?php if(!Yii::app()->user->isGuest): ?>
<p>You last logged in on <?php echo Yii::app()->user->LastLogin; ?></p>
<?php endif; ?>

 
Jika berhasil login maka hasilnya adalah :


Good Luck!




Artikel keren lainnya:

Yii: Menampilkan Pesan Menggunakan setFlash

Yii menggunakan setFlash() untuk menampilkan pesan kepada user. Dimana setFlash ini bekerja dalam session yang artinya pesan akan ditampilkan dalam satu session dengan satu atau beberapa request dari user yang sama. Secara default pesan akan dihapus dari session setelah berhasil ditampilkan kepada user.

Hasil dari generate perintah yiic webapp menghasilkan CSS dimana secara default di dalamnya terdapat tiga class flash message yaitu flash-error, flash-notice, flash-success.

Untuk menggunakannya silahkan tuliskan pesan di controller :
Yii::app()->user->setFlash('error','error Hello world!');
Yii::app()->user->setFlash('notice','notice Hello world!');
Yii::app()->user->setFlash('success','success Hello world!');
Dan menampilkannya di view :
<h1> Hello World! </h1>
<?php if(Yii::app()->user->hasFlash('error')): ?>
<div class="flash-error">
   <?php echo Yii::app()->user->getFlash('error'); ?>
</div>
<?php endif; ?>

<?php if (Yii::app()->user->hasFlash('notice')): ?>
<div class="flash-notice">
    <?php echo Yii::app()->user->getFlash('notice'); ?>
</div>
<?php endif; ?>

<?php if (Yii::app()->user->hasFlash('success')): ?>
<div class="flash-success">
    <?php echo Yii::app()->user->getFlash('success'); ?>
</div>
<?php endif; ?>

Berikut hasilnya :


Untuk menambahkan efek fade-out silahkan tambahkan kode berikut di dalam view :
<?php
    Yii::app()->clientScript->registerScript(
    'myHideEffect',
    '$(".flash-error").animate({opacity: 1.0},
    5000).fadeOut("slow");',
    CClientScript::POS_READY
        );
?>



Good Luck!







Artikel keren lainnya:

Yii: Membuat sendiri Action Change Password

Untuk membuat sendiri action change password hal yang saya lakukan adalah :
  1. Membuat model PasswordForm untuk mendefiniskan attribut beserta rule
  2. Membuat _formpassword sebagai halaman form
  3. Membuat changepassword sebagai view, dan
  4. Membuat actionchangepassword sebagai action controller

1. Membuat model PasswordForm. Simpan sebagai /protected/models/PasswordForm.php
    Definisikan attribute beserta rule :
<?php
class PasswordForm extends CFormModel{
    public $oldpass;
    public $newpass;
    public $confirm;
   
    public function rules(){
        return array(
            array('oldpass, newpass, confirm','required'),
        );
    }
   
    public function attributeLabels(){
        return array(
        'oldpass'=>'Password Lama',
        'newpass'=>'Password Baru',
        'confirm'=>'Konfirm Password Baru',
        );
    }
}
?>
2. Membuat _formpassword sebagai halaman form.
    Untuk membuat form ini bisa mellihat/mengcopy dari form lain yang sudah ada.
    Simpan sebagai /protected/views/user/_formpassword.php dan isikan dengan kode berikut ini :
<div class="row">
    <?php echo $form->labelEx($model,'oldpass'); ?>
    <?php echo $form->passwordField($model,'oldpass',
        array('size'=>30));?>
    <?php echo $form->error($model,'oldpass'); ?>
</div>
   
<div class="row">
    <?php echo $form->labelEx($model,'newpass'); ?>
    <?php echo $form->passwordField($model,'newpass',
        array('size'=>30));?>
    <?php echo $form->error($model,'newpass'); ?>
</div>
   
<div class="row">
    <?php echo $form->labelEx($model,'confirm'); ?>
    <?php echo $form->passwordField($model,'confirm',
        array('size'=>30));?>
    <?php echo $form->error($model,'confirm'); ?>
</div>
3. Membuat view changepassword.
    Sama seperti halnya di atas, untuk membuat view ini bisa melihat/mengcopy dari view lain yang 
    sudah ada. Simpan sebagai /protected/views/user/changepassword.php
<?php
$this->breadcrumbs=array(
    'Users'=>array('index'),
    'Change Password',
);
?>

<h1>Change Password</h1>
<?php if(Yii::app()->user->hasFlash('error')): ?>
<div class="flash-error">
    <?php echo Yii::app()->user->getFlash('error'); ?>
</div>
<?php endif; ?>
<?php $this->renderPartial('_formpassword',
array('model'=>$model)); ?>
4. Membuat actionchangepassword
    Untuk membuatnya cukup definisikan actionchangepassword di dalam UserController.
    Tambahkan di dalam /protected/controllers/UserController.php kode di bawah ini :
public function actionChangepassword($username){
    $model = new PasswordForm;
    $modeluser = $this->loadModel(Yii::app()->user->id);
    if (isset($_POST['PasswordForm'])){
        $old = 'Helloword'.sha1($_POST['PasswordForm']['oldpass']);
        $new = 'Helloword'.sha1($_POST['PasswordForm']['newpass']);
        $konfirm = 'Helloword'.sha1($_POST['PasswordForm']['confirm']);
        if ($modeluser->password===$old){
            if ($old!=$new){
                if($new===$konfirm){
                    $modeluser->password=$new;
                    if($modeluser->save()){
                        $this->redirect(Yii::app()->homeUrl);
                    }
                } else{
                    Yii::app()->user->setFlash('error','Silahkan konfirmasi password baru Anda!');
                }
            } else{
                Yii::app()->user->setFlash('error','Maaf, password baru tidak boleh sama dengan password lama!');
            }
        }else{
            Yii::app()->user->setFlash('error','Periksa kembali password lama Anda!');
        }
    }
        $this->render('changepassword',array(
            'model'=>$model,
        ));
}

Silahkan pahami kode di atas :p . Dan berikut beberapa tampilan yang berhasil saya screenshot :





Good Luck!

Artikel keren lainnya:

Yii: Confirm Password

Konfirmasi password bertujuan untuk menghindari terjadinya kesalahan dalam penulisan password. Tidak jarang ketika mengisikan password pada form pendaftaran seperti pembuatan email kita akan diminta untuk memasukkan password sebanyak dua kali untuk konfirmasi kecocokan penulisan password.

Sebelumnya saya sudah pernah membuat ilustrasi penambahan user disertai username dan password untuk login ke sistem (klik di sini), hanya saja pada saat itu belum ada konfirmasi password. Baiklah, saya akan mencoba menambahkan konfirmasi password. Saya menggunakan usermodel yang sama seperti sebelumnya.

Sekenario yang saya gunakan :
"Ketika create dan update user di situ ada field password dan confirmpassword. Ketika create kedua field harus diisi (required), dan ketika update confirmpassword boleh kosong (password sama) atau masukkan password baru dan konfirmasi (confirmpassword harus diisi)."
 Langkah pertama buat attribute baru di dalam user model.
class User extends CActiveRecord
{
    public $repeat_password;

    .......
 kemudian definisikan rule
public function rules(){
    return array( 
        array('password','length', 'max'=>100),
        array('repeat_password','compare',
                'compareattribute'=>'password',
                'message'=>'password do not match','on'=>'create'),
        array('repeat_password','required','on'=>'create'),
        .....
ketika mendefinisikan model on untuk fungsi create ('on'=>'create'), gunakan :
public function actionCreate()
    {
        $model=new User('create');
        ....
Kemudian tambahkan field confirmpassword di _form.php
<div class="row">
    <?php echo $form->labelEx($model,'repeat_password'); ?>
    <?php echo $form->passwordField($model,'repeat_password',
        array('size'=>30,'maxlength'=>100)); ?>
    <?php echo $form->error($model,'repeat_password'); ?>
</div>
Mofidikasi action Update
public function actionUpdate($id) {
    $model=$this->loadModel($id);
    //mengambil nilai password
    $password=$model->password;
    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];
        $pass='Helloword'.sha1($_POST['User']['password']);
     $repeat='Helloword'.sha1($_POST['User']['repeat_password']);
        if($password===$_POST['User']['password']){
            $model->password=$password;
            if($model->save())
            $this->redirect(array('view','id'=>$model->id));
        } else if($password!=$pass) {
            if ($repeat===$pass){
                $model->password=$pass;
                if($model->save())
                $this->redirect(array('view','id'=>$model->id));
            }
            else {
            Yii::app()->user->setFlash('confirm','Konfirmasi password baru!');
            }
        }else {
            $model->password=$pass;
            if($model->save())
                $this->redirect(array('view','id'=>$model->id));
        }
    }
    $this->render('update',array(
            'model'=>$model,
        ));
}
Dan berikut adalah tampilan ketika create dan update :






Silahkan rubah dan pelajari script di atas..

Good Luck!

Artikel keren lainnya:

Yii: Custom AccessRules Menggunakan Expression Function()

Pada artikel sebelumnya sudah dibahas bagaimana Membuat Custom accessRules menggunakan extends CWebUser. Dimana dalam pengerjaannya begitu kompleks mulai dari membuat UserLevel, WebUser, hingga menentukan class apa yang harus digunakan. 

Kali ini saya akan mencoba membuat custom accessrules sederhana dengan menggunakan function(). Sekenario yang digunakan sama seperti sebelumnya yaitu user level terdiri dari Administrator, Keyuser, dan Enduser.
  • Enduser hanya diperbolehkan melakukan action create
  • Keyuser hanya diperbolehkan melakukan action create dan update
  • Administrator bisa melakukan semuanya termasuk create, update, delete, hingga mengakses halaman admin.
Pastikan Anda sudah mempunyai user model database (klik disini). Kemudian create user dengan level yang berbeda-beda 
+----------+---------------+
| username | level         |
+----------+---------------+
| user1    | enduser       |
| keyuser1 | keyuser       |
| admin1   | administrator |
+----------+---------------+
Pastikan konfigurasi protected/components/UserIdentity.php sudah benar 
        .............
        if (isset($user)){
            if($pass === $user->password){
                $this->_id=$user->id;
                $this->setState('_level', $user->level);
                .............   
Langkah selanjutnya adalah melakukan sedikit perubahan dengan menambahkan function() pada controller model yang akan digunakan.

//protected/controllers/MahasiswaController.php
public function accessRules()
    {
        return array(
            array('allow', 
                'actions'=>array('index','view'),
                'users'=>array('*'),
            ),
            array('allow',
                'actions'=>array('create'),
                'expression'=>function() {
                    return Yii::app()->user->_level=='enduser';

                }
            ),
            array('allow',
                'actions'=>array('create','update'),
                'expression'=>function(){
                    return Yii::app()->user->_level=='keyuser';

                }
            ),
            array('allow',
              'actions'=>array('admin','create','update','delete'),
                'expression'=>function(){
                return Yii::app()->user->_level=='administrator';

                }
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

Good Luck!

Artikel keren lainnya:

Yii: Membuat Custom accesRules

Acces rules berguna untuk mendefinisikan action apa saja yang bisa dilakukan oleh masing-masing user. Di sini saya akan memberikan contoh kecil membuat custom access rules
Sekenarionya adalah user terdiri dari 3 level yaitu Administrator, Keyuser, dan Enduser, dimana :
  • Enduser hanya diperbolehkan melakukan action create.
  • Keyuser hanya diperbolehkan melakukan action create dan update.
  • Administrator bisa melakukan semua hal yang dilakukan Enduser dan Keyuser termasuk  delete dan mengakses halaman admin.

Artikel keren lainnya:

Yii: Membuat Login dengan Database

Setiap kali membuat aplikasi, sebenarnya Yii sudah menyediakan menu login. Namun terbatas hanya 'admin/admin' atau 'demo/demo'. Bisa saja kita menambahkan username dan password lain, caranya tinggal tambahkan di protected/components/UserIdentity.php

 public function authenticate()
    {
        $users=array(
            // username => password
            'demo'=>'demo',
            'admin'=>'admin',
        );


Akan tetapi hal tersebut sangat berisiko tinggi terhadap keamanan suatu aplikasi.  Maka dari itu untuk mempermudah dan memperkecil risiko tersebut dibuatlah login dengan database. Untuk membuat login dengan database, hal yang harus dipersiapkan adalah aplikasi itu sendiri dan tentunya database.

Saya menggunakan aplikasi Helloword yang sudah terhubung dengan database coba. Siapkan tabel yang akan dijadikan tempat untuk menyimpan username dan password yang akan kita buat nantinya :
FieldTypeNullKeyDefaultExtra
idint(11)NoPRINULLauto
namavarchar(30)No
NULL
usernamevarchar(30)NoUNINULL
passwordvarchar(100)No
NULL
levelenum('administrator','keyuser','enduser')No
NULL
Buatlah operasi CRUD untuk tabel tersebut dan create user :
Saya akan coba menambahkan fungsi hash generator menggunakan sha1 ketika create user untuk password di atas. Caranya buka protected/controllers/UserController.php dan tambahkan di actionCreate dan actionUpdate kode berikut ini :

$model->attributes=$_POST['User'];
            $model->password='Helloword'.sha1($model->password);
            if($model->save())

Simpan dan jalankan create user kembali, perhatikan hasilnya :

Setelah berhasil create user dengan menggunakan hash generator sha1, langkah selanjutnya adalah melakukan sedikit perubahan pada UserIdentity.php. 

public function authenticate(){
$user = User::model()->findByAttributes(array('username'=>$this->username));
$pass = 'Helloword'.sha1($this->password);
        if (isset($user)){
            if($pass === $user->password){
                $this->setState('id', $user->id);

                $this->setState('_level', $user->level);
                $this->errorCode=self::ERROR_NONE;           
            }else{
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
            }
        } else{
         $this->errorCode=self::ERROR_USERNAME_INVALID;
        }
        return !$this->errorCode;
    }   


Simpan dan buka aplikasi Helloword, silahkan login dengan username dan password yang sudah dibuat sebelumnya ketika mencoba create user.

$this->setState('id', $user->id);
$this->setState('_level', $user->level);

Kode di atas menyimpan id beserta level, yang nantinya akan kita gunakan untuk membuat custom accesrules.


Good Luck!


Artikel keren lainnya:

Yii: Membuat Operasi CRUD Sederhana


Apa itu CRUD?

CRUD merupakan kependekan dari Create Read Update Delete. Dimana operasi CRUD ini sering digunakan dalam pemrograman database.

Untuk membuat CRUD persiapkan telebih dahulu database beserta tabelnya yang akan menjadi objek pengoperasian CRUD, dan pastikan konfigurasi modul gii dalam aplikasi yang kita gunakan sudah aktif.

'modules'=>array(
            'gii'=>array(
                  'class'=>'system.gii.GiiModule',
                  'password'=>'Helloword',
                  'ipFilters'=>array('127.0.0.1','::1'),
            ),
      ),

Pertama siapkan terlebih dahulu database dan tabelnya :

mysql> use coba;
Database changed
mysql> desc tbl_mahasiswa;
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| nim    | char(10)     | NO   | PRI | NULL    |                |
| nama   | varchar(50)  | NO   |     | NULL    |                |
| alamat | varchar(100) | NO   |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+


Kemudian buatlah konfigurasi untuk melakukan koneksi ke database mysql,
Buka Webroot/nama_aplikasi/protected/config/main.php
Cari tulisan //database setting are configured in database.php
Jika Anda menemukan tulisan 'db'=>require(dirname(__FILE__).'/database.php'), 
silahkan hapus kode tersebut dan tuliskan kode berikut ini :


'db'=>array(
        'class'=>'CDbConnection',
        'connectionString'=>'mysql:host=127.0.0.1;dbname=coba',
        'username'=>'root',
        'password'=>'',
        'tablePrefix'=>'tbl_',
        'emulatePrepare'=>true,
        ),

Setelah membuat koneksi ke database silahkan buka aplikasi helloword dan pastikan tidak ada error. Kemudian buka modul gii dan masukkan password, ketikkan di browser :





Untuk membuat crud kita harus membuat modelnya terlebih dahulu, klik model generator. masukkan nama tabel, klik preview dan generate.



Lihat gambar di atas, model Mahasiswa berhasil dibuat. Langkah selanjutnya generate crud, klik crud generator. masukkan nama model yang telah dibuat (Mahasiswa), klik preview dan generate.



Sampai di sini kita sudah berhasil membuat operasi CRUD untuk model Mahasiswa.
Untuk mencobanya silahkan login sebagai admin dan masuk ke
http://localhost/Helloword/index.php?r=mahasiswa/

Gambar di atas merupakan tampilan halaman model Mahasiswa, dapat dilihat disamping kanan terdapat operasi create Mahasiswa, dan manage mahasiswa. Silahkan explore dan klik link tersebut untuk mencobanya.


Good Luck!

Artikel keren lainnya: