Capture Screen / Buat Screenshot dengan Mudah

Lama rasanya tak update blog ni.  OK ni saya nak bagi tips mudah tentang buat screenshot…

Screenshot ni salah satu feature yang penting terutamanya masa kita nak membuat dokumentasi atau informasi tentang sesuatu laman web atau perisian.

Contohnya, katakan kita mempunya sistem shopping cart di laman web, sudah tentu kita mahu pelanggan kita mengetahui cara-cara membuat belian di laman web kita dengan mudah. Atau, kita juga boleh membuat e-book untuk menerangkan bagaimana kita boleh memasang dan menggunakan perisian WordPress atau apa juga perisian lain.  Kesemua ini memerlukan kita membuat screenshot.

Tahukah anda bahawa kita boleh buat screenshot dengan mudah tanpa memerlukan kita memasang sebarang software khas?

Capture Full Windows

Senang je.. kita hanya perlukan butang “PrtScr” yang terdapat pada keyboard.  Apa lagi, cuba tekan sahaja button ni.

Kemudian buka perisian seperti Paint dah paste.  Kita akan dapat hasil seperti berikut:

Apabila kita tekan button Print Screen ini, keseluruhan Windows akan dicapture.  Ya, di tangkap gambarnya.  Dengan kaedah ini, kita boleh buat screenshot keseluruhan windows.

Perhatikan jika keybord anda memerlukan kita menekan button Function (‘Fn‘) seperti keyboard yang terdapat pada Laptop.  Tekan buttonFn‘ dan dikuti dengan butang “PrtScr” (Fn+PrtScr).  Hasilnya adalah sama seperti gambar di atas.

Capture Active Windows

Ok, bagaimana pula kalau kita hanya perlu untuk capture windows yang aktif sahaja.  Contohnya, kita hanya hendak capture browser yang sedang memaparkan Facebook page ‘Md Nazri Ahmad’ sahaja tanpa memerlukan keseluruhan windows.  Kita nak buat screenshot ini sahaja!

Ini juga adalah mudah.  Pilih windows mana yang hendak kita capture, dan tekan sahaja button “Alt” dan “PrtScr” (Alt+PrtScr).  Kemudian paste sahaja ke perisian grafik kegemaran anda!

Contoh hasil adalah seperti berikut:

 

Lagi sekali, jika buttonFn” diperlukan, tekan sahaja “Alt+Fn+PrtScr“.

Mudah kan buat screenshot ni?

Selamat mencuba dan jumpa lagi di lain artikel pada masa hadapan!

Postfix send-only SMTP

Artikel ringkas kali ini adalah bagi memasang Postfix send-only SMTP.  Kegunaan adalah untuk aplikasi laman web seperti WordPress untuk menghantar email ke Internet.

Langkah 1 – Pasang “mailutils”

Dengan menggunakan privilege ‘root’, jalankan arahan berikut:

sudo apt-get install mailutils

Contoh:

The following NEW packages will be installed:
guile-2.0-libs libgsasl7 libkyotocabinet16 libltdl7 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0 mailutils mailutils-common mysql-common postfix ssl-cert

0 upgraded, 14 newly installed, 0 to remove and 3 not upgraded.
Need to get 5,481 kB of archives.
After this operation, 26.9 MB of additional disk space will be used.
Do you want to continue? [Y/n

Pastikan pilih “Internet Site” apabila menu berikut muncul:

 

Masukkan domain yang anda gunakan apabila diminta pada “System mail name“.

Jika mailutils telah telah dipasang, jalankan arahan:

sudo dpkg-reconfigure postfix

Bagi mendapatkan semula menu di atas.

Langkah 2 – Edit Faik Konfigurasi Postfix

Edit konfigurasi:

sudo vi /etc/postfix/main.cf

Pastikan konfigurasi adalah seperti berikut:

inet_interfaces = loopback-only

Restart service Postfix:

sudo service postfix restart

 

Langkah 3 – Uji Penghantaran Email (Postfix Send-Only SMTP)

Jalankan arahan untuk pengujian:

echo "Ujian Postfix Send-Only SMTP" | mail -s "Perkara: Ujian SMTP" nazri@example.com

Tadaa… kini anda boleh menghantar email dari server ini dengan Postfix Send-Only SMTP.

Nota: Pastikan anda suda memasang konfigurasi DNS resolver yang betul sebelum ujian dijalankan.  Sekian, Selamat maju jaya!

Tip Linux #3 – Backup Server dengan rsync & SSH

Tip Linux kali ini akan menyentuh bagaimana kita boleh membuat backup dengan ‘rync’ dan ‘SSH’.  Kaedah ini lebih selamat di mana kita boleh membuat proses salinan dengan teknologi SSH.  SSH atau Secure Shell akan membuat sambungan trafik melalui proses kriptografi (proses enkripsi dan dekripsi). Proses ini mengakibatkan ancaman pengunaan sniffer atau sebarang alatan packet capture tidak boleh digunakan untuk membaca kandungan trafik.

Tip Linux #2 sebelum ini ada menyentuh serba sedikit tentang penggunaan ‘rsync’ dan ‘SSH’.  Tetapi ianya memerlukan pengguna untuk memasukkan password SSH setiap kali proses backup hendak dijalankan.  Kaedah ini tidak sesuai jika kita hendak memasukkannya ke dalam penjadualan ‘cron’ atau tasks scheduling Linux.

Contoh kali ini kita akan menggunakan dua server Linux seperti berikut:

  1. Backup Server dengan alamat IP: 192.168.0.10
  2. Web Server dengan alamat IP: 192.168.0.20
  3. Kedua-dua server menggunakan sistem pengoperasian Linux dengan distribution Ubuntu atau Debian.
  4. Kedua-dua server mempunyai perkhidmatan SSH (server dan client).
  5. Objektif utama adalah kita hendak menyalin fail-fail web server ke backup server setiap hari pada jam 12:30 pagi!  Backup Server akan membuat sambungan ke Web Server dengan SSH dan seterusnya menyalin fail-fail yang berkaitan dengan ‘rsync’.

 

OK, mari kita lihat maklumat yang berkaitan dengan Web server:

 

  1. Lokasi fail-fail web server yang hendak kita backup: /var/www/html
  2. Pengguna dan permission kumpulan (group) dan pengguna (user): www-data
  3. Kita perlu membina pengguna baru, dan memasukkannya ke dalam kumpulan ‘www-data’.  Menggunakan privilege ‘root’, bina pengguna ‘salin’ dengan kumpulan pengguna ‘www-data’: sudo useradd -g www-data -d /home/salin salin
  4. Tukar password bagi user ‘salin’: sudo passwd salin

Bagi Backup server pula:

  1. Fail-fail web server akan kita backup ke dalam direktori /var/backup/webserver/.  Oleh itu kita bina direktori tersebut: sudo mkdir -p /var/backup/webserver
  2. Bina juga user ‘salin’ seperti pada web server: sudo useradd -d /home/salin salin
  3. Tukar password bagi user ‘salin’: sudo passwd salin
  4. Pastikan direktori ‘/var/backup/webserver’ dipunyai oleh pengguna ‘salin’: sudo chown salin.salin /var/backup/webserver -R

Sekarang kita mulakan langkah-langkah membina proses backup dengan rsync dan SSH.  Pastikan server-server yang terlibat sama ada Web Server atau pun Backup Server ya…

LANGKAH 1

Login ke Backup Server dengan menggunakan pengguna ‘salin‘, generate SSH key:

salin@backup-server~$ ssh-keygen -f ~/.ssh/id_rsa -q -P ""

Kita boleh lihat SSH key telah di bina di ‘/home/salin/.ssh/id_rsa.pub‘ seperti berikut:

salin@backup-server~$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzJVgRz56DrACBnKQuTOSuMcvH9XVHRi11F1vnk8HG/Z16xcWsKbMt4RkXxO64mlkwoKteEQjVQu9wE/5hUY9JpiMIFOxXPxeZR1tb8bBCSNeTv7PSPO7deJ+TuECsSFsUINigFBJ/gOrXXXXXX3ghuk6thHgAQdl1kDCN9eDfOWfO1acD/DfFiTWjyGSzaMAXL1Vd0hAW/wi8vIxaI8L9m8ZwelHpGtnMcemtqpMrKstsPNM1FXITCA3jruLOKExFB5a/xhhQjDsC0hIOzUyPeQNXVExjfoFEF55gwLBhJYT6XXXXXX7vvGR0bjIhORhZON0zfTcm4pHiD5bcBMyul salin@backup-server

Copy public key di atas (masukkan ke dalam clipboard atau ke ‘notepad’ atau sebarang editor kegemaran anda)

LANGKAH 2

SSH dari Backup Server ini ke Web Server:

salin@backup-server ~ $ ssh -l salin 192.168.0.20
The authenticity of host '192.168.0.20 (192.168.0.20)' can't be established.
ECDSA key fingerprint is d5:64:eb:f6:b2:4e:fa:18:60:14:06:4c:cb:ac:3f:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.20' (ECDSA) to the list of known hosts.
salin@192.168.0.20's password:
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 2.6.32-042stab081.8 x86_64)

 * Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
salin@web-server~$

Masukkan “yes” seperti warna merah di atas dan masukkan password.

Sekarang kita dah login ke Web Server dengan user ‘salin’!

LANGKAH 3

Copy key di LANGKAH 1 (Key di Backup Server) dan masukkan ke Web Server.

Pastikan terlebih dahulu jika direktori .ssh wujud.  Jika tidak wujud, bina dengan arahan:

salin@web-server~$ mkdir .ssh

Masuk ke direktori .ssh dan buka fail ‘authorized_keys’

salin@web-server~$ cd .ssh
salin@web-server~$ vi authorized_keys

Paste kandungan key di LANGKAH 1 ke dalam fail ini dan simpan. (Arahan ‘vi’: tekan butang “Esc”, Colon (Shift+;), dan :wq!’

Kandungan fail ini akan kelihatan seperti berikut:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzJVgRz56DrACBnKQuTOSuMcvH9XVHRi11F1vnk8HG/Z16xcWsKbMt4RkXxO64mlkwoKteEQjVQu9wE/5hUY9JpiMIFOxXPxeZR1tb8bBCSNeTv7PSPO7deJ+TuECsSFsUINigFBJ/gOrXXXXXX3ghuk6thHgAQdl1kDCN9eDfOWfO1acD/DfFiTWjyGSzaMAXL1Vd0hAW/wi8vIxaI8L9m8ZwelHpGtnMcemtqpMrKstsPNM1FXITCA3jruLOKExFB5a/xhhQjDsC0hIOzUyPeQNXVExjfoFEF55gwLBhJYT6XXXXXX7vvGR0bjIhORhZON0zfTcm4pHiD5bcBMyul salin@backup-server

Jika fail sudah mempunyai kandungan, append di bawahnya.

Tukar permission fail authorized_keys ini:

salin@web-server~$ chmod 600 authorized_keys

LANGKAH 4

Disconnect dari Web-Server untuk lakukan ujian:

salin@web-server~$ exit

Kini kita telah berada kembali di Backup Server:

salin@backup-server~$

 

Uji SSH ke Web Server:

salin@backup-server ~ $ ssh -l salin 192.168.0.20

Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 2.6.32-042stab081.8 x86_64)
 * Documentation:  https://help.ubuntu.com/
Last login: Sun Aug  2 17:28:21 2015 from sn-156-35.tm.net.my

salin@web-server$

Kini kita dah masuk ke web server tanpa memasukkan sebarang password.  Walaupun tiada password, ia adalah selamat kerana hanya orang yang ada key di LANGKAH 1 sahaja yang boleh masuk!

LANGKAH 5

Walau bagaimana pun, sebagai langkah keselamatan tambahan, SSH login ke command prompt ini tidak kita perlukan kerana tujuan utama kita hanyalah untuk membuat backup dengan rsync.  Jadi kita perlu bina fail validation yang hanya membenarkan penggunaan rsync sahaja.

Dengan privilege ‘root’, bina fail berikut:

sudo vi /usr/local/bin/validate-rsync.sh

Masukkan kandungan:

#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
  *\&*)
  echo "Rejected"
  ;;
  *\(*)
  echo "Rejected"
  ;;
  *\{*)
  echo "Rejected"
  ;;
  *\;*)
  echo "Rejected"
  ;;
  *\<*)
  echo "Rejected"
  ;;
  *\>*)
  echo "Rejected"
  ;;
  *\`*)
  echo "Rejected"
  ;;
  *\|*)
  echo "Rejected"
  ;;
  rsync\ --server*)
  $SSH_ORIGINAL_COMMAND
  ;;
  *)
  echo "Rejected"
  ;;
esac

Tukar permission:

sudo chmod +x /usr/local/bin/validate-rsync.sh

Edit kembali fail authorized_keys:

cd ~/.ssh
vi authorized_keys

Pastikan kandungan dengan tambahan berwarna merah seperti berikut:

command="/usr/local/bin/validate-rsync.sh" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzJVgRz56DrACBnKQuTOSuMcvH9XVHRi11F1vnk8HG/Z16xcWsKbMt4RkXxO64mlkwoKteEQjVQu9wE/5hUY9JpiMIFOxXPxeZR1tb8bBCSNeTv7PSPO7deJ+TuECsSFsUINigFBJ/gOrXXXXXX3ghuk6thHgAQdl1kDCN9eDfOWfO1acD/DfFiTWjyGSzaMAXL1Vd0hAW/wi8vIxaI8L9m8ZwelHpGtnMcemtqpMrKstsPNM1FXITCA3jruLOKExFB5a/xhhQjDsC0hIOzUyPeQNXVExjfoFEF55gwLBhJYT6XXXXXX7vvGR0bjIhORhZON0zfTcm4pHiD5bcBMyul salin@backup-server

Ok, untuk kita uji, kita ‘exit’ dari Web Server dan masuk ke Backup Server kembali:

salin@web-server ~$ exit

Kini kita berada di Backup Server.

Jika kita uji dengan melaksanakan sambungan dengan SSH, kini kita tidak lagi boleh login ke shell atau command prompt bagi user ‘salin’:

salin@backup-server ~$ ssh salin@192.168.0.20                                  
Rejected
Connection to 192.168.0.20 closed.

Tetapi kita masih boleh gunakan arahan rsync!

LANGKAH 6

Kini kita bolehlah membuat backup dengan menggunakan SSH dan ‘rsync’ tanpa memasukkan sebarang password:

salin@backup-server ~$ rsync -avz -delete -e "ssh -i /home/salin/.ssh/id_rsa" salin@192.168.0.20:/var/www/html /var/backup/webserver/
receiving incremental file list
html/
html/.htaccess
html/index.php
html/license.txt
html/readme.html
html/wp-activate.php
html/wp-blog-header.php
html/wp-cron.php
...

Kini fail-fail di Web Server (/var/www/html) akan disalin keseluhannya ke Backup Server (direktori: /var/backup/webserver/).

LANGKAH 7

Bina satu skrip mudah di dalam direktori /home/salin/bin:

salin@backup-server ~$ mkdir /home/salin/bin
salin@backup-server ~$ cd /home/salin/bin
salin@backup-server ~$ vi backup-server.sh

Masukkan kandungan:

#!/bin/sh 
rsync -avz -delete -e "ssh -i /home/salin/.ssh/id_rsa" salin@192.168.0.20:/var/www/html /var/backup/webserver/

Tukar permission:

chmod +x backup-server.sh

 

Masukkan ke cron schedule:

crontab -e

Masukkan:

30 0 * * * /home/salin/bin/backup-server.sh

Save dan keluar.  Kini fail-fail Web Server anda akan disalin ke Backup Server secara automatik setiap hari pada jam 12:30 a.m.!

Sekian, selamat mencuba!

Tip Linux #2 – Backup dengan rsync

Tip kali ini akan menyentuh cara-cara membuat salinan atau backup dengan rsync. Arahan rsync ini membolehkan kita membuat salinan atau backup dalam server yang sama atau secara remote (jarak jauh) ke host atau server yang lain.

 

1. Pemasangan ‘rsync’

Pakej ‘rsync’ boleh dipasang dengan arahan:

sudo apt-get install rsync

2. Backup dalam Host yang sama (Local Backup)

Arahan mudah ‘rsync’ adalah:

rsync -av </sumber/> </destinasi/>

Di mana:

  • a – all / recursive – keseluruhan fail dan direktori
  • v – verbose

Katakan kita mahu membuat salinan fail-fail dalam direktori ‘data’ ke direktori yang lain (contohnya: ‘backup’), arahan berikut boleh digunakan:

rync -av /data/ /backup/

Arahan ini akan menyalin segala kandungan fail dan direktori dari sumber (termasuk symbolic link, mengekalkan mode permission, owner dan group) kepada destinasi.  Kandungan fail dan direktori ini akan di synchronize (selaras?) pada direktori destinasi.

Katakan kita jalankan arahan ini pada masa yang lain, segala perubahan dari direktori sumber juga akan diselaraskan pada direktori destinasi.

3. Kegunaan Option “–delete”

Satu lagi option yang penting adalah “–delete”.  Arahan berikut boleh dilakukan:

rsync -av --delete /data/ /backup/

Dengan arahan ini, jika kita menghapuskan sesuatu fail dari direktori sumber, fail-fail atau direktori salinan yang terdapat pada direktori destinasi juga akan turut dihapuskan.

4. Remote Backup dengan rsync

Mahu backup ke host atau server lain pula? Tak jadi masalah.  Pastikan server atau host anda mempunyai SSH.  Begitu juga dengan destinasi server yang kita hendak buat backup, perlu ada SSH client dan SSH server.  SSH atau Secure Shell ini selalunya terpasang secara default.  Jika tiada kita boleh pasang dengan arahan:

sudo apt-get install ssh

sekarang kita boleh buat backup ke server yang lain dengan arahan:

rsync -av --delete ssh -e /sumber/ <akaun>@<alamat-server>:/destinasi/

Contoh:

rsync -av --delete ssh -e /data/ nazri@10.10.10.1:/home/nazri/backup/

Fail-fail dari direktori ‘data’ kini boleh kita selaraskan ke dalam direktori ‘backup’ yang berada di dalam home directory kepunyaan ‘nazri’.

Kita akan diminta untuk memasukkan password bagi akaun ‘nazri’ sebelum proses salinan dijalankan.

Proses ini kita boleh masukkan dalam penjadualan cronjob bagi memudahkan kita membuat backup dengan rsync.  Walau bagaimana pun, ianya agak sukar kerana kita perlu memasukkan password SSH.  Kita akan sentuh bagaimana ianya boleh dilakukan dengan menggunakan public key authentication dengan SSH dalam artikel yang lain.  Selamat maju jaya!

Tutorial MySQL Bahagian 5 – Pengguna & Capaian Pangkalan Data

Tutorial sebelum ini ada menyentuh bagaimana kita boleh membina pangkalan data, table berkaitan dan seterusnya menjalankan arahan SQL seperti INSERT, SELECT dan DELETE.  Kesemua operasi yang kita jalankan ini menggunakan akaun pengguna ‘root’ dan tentu sahaja tidak digalakkan.

Kita perlu mempunyai akaun pengguna yang berlainan pada setiap pangkalan data.  Sehubungan dengan itu, artikel ini akan menyentuh bagaimana akaun pengguna ini boleh di bina dan seterusnya memberikan capaian atau privileges pengguna kepada pangkalan data yang dibina.

1. Bina Akaun Pengguna

Akaun pengguna boleh dibina dengan arahan SQL berikut:

CREATE USER 'akaun_pengguna'@'localhost' IDENTIFIED BY 'kata_laluan';

Tukarkan “akaun_pengguna” dan “kata_laluan” mengikut pilihan kita.  Contoh:

CREATE USER 'nazri'@'localhost' IDENTIFIED BY 'password#susah.gile!2015';

Merujuk kepada contoh di atas, kini kita telah membina akaun pengguna “nazri” dengan kata laluan yang di setkan adalah “password#susah.gile!2015“.

2. Kebenaran Capaian / Privileges

Arahan ini perlu dilaksanakan bagi membenarkan capaian pengguna yang kita bina sebelum ini terhadap pangkalan data:

GRANT ALL PRIVILEGES on nama_db.* TO 'akaun_pengguna'@'localhost';

Jika kita punya pangkalan data “wordpress“, kita boleh beri capaian kepada “nazri” dengan arahan seperti berikut:

GRANT ALL PRIVILEGES on wordpress.* TO 'nazri'@'localhost';

Kemudian kita reload keseluruhan privileges dengan arahan:

FLUSH PRIVILEGES;

Kini kita boleh login ke pangkalan data dengan menggunakan akaun pengguna baru ini.  Contoh:

mysql -u nazri -p password#susah.gile!2015 
mysql> use wordpress;

Kini kita boleh menjalan sebarang operasi terhadap pangkalan data “wordpress” dengan akaun pengguna “nazri“.

3. Capaian Terhad

Operasi pada item (2) di atas memberi keseluruhan privileges kepada pengguna “nazri”.  Kita juga boleh menghadkan privileges terhad kepada arahan SQL tertentu sahaja.  Berikut merupakan privileges yang boleh digunakan:

  • ALL PRIVILEGES- keseluruhan privileges
  • CREATE- bina pangkalan data atau table
  • DROP- hapus pangkalan data atau table
  • DELETE- Hapus row dari table
  • INSERT- Masukkan row ke dalam table
  • SELECT- kebenaran untuk jalankan arahan SQL SELECT
  • UPDATE- kebenaran untuk kemas kini rekod dalam table
  • GRANT OPTION- kebenaran untuk beri capaian atau privileges kepada akaun pengguna lain.

Jadi, untuk beri kebenaran, arahan yang dijalankan adalah:

GRANT [jenis_privileges] ON [nama pangkalan data].[nama table] TO ‘[akaun pengguna]’@'localhost’;

Contoh:

GRANT INSERT ON wordpress.* TO ‘nazri’@'localhost’;
GRANT SELECT ON wordpress.wp_users TO ‘nazri’@'localhost’;

Kita boleh revoke kebenaran capaian ini dengan arahan:

 REVOKE [jenis_privileges] ON [nama pangkalan data].[nanma table] FROM 'akaun pengguna’@‘localhost’;

4. Hapus Pengguna

Akaun pengguna ini boleh dihapuskan:

DROP 'akaun_pengguna'@'localhost' ;

Contoh:

DROP 'nazri'@'localhost';

Tutorial MySQL Bahagian 4 – Backup & Restore MySQL

Tunggu sekejap! Dah buat backup belum pangkalan data anda? Memang semua orang tahu backup adalah penting, tetapi macam anda semua kadang-kala saya juga lupa backup :-D.  Ok artikel kali ini akan membincangkan cara-cara mudah backup dan restore pangkalan data MySQL dengan menggunakan arahan “mysqldump”.

Arahan ini datang bersama dengan MySQL server yang dipasang.  Jadi kita tak perlu untuk memasang sebarang pakej tambahan bagi tujuan ini.

1. Backup dengan Arahan “mysqldump”

Arahan bagi kita membuat backup bagi pangkalan data adalah:

mysqldump -u root -p [nama_database] > namafail_dump.sql

Arahan “mysqldump” ini akan membaca pangkalan data yang berkenaan dan seterusnya membina satu fail teks dengan file extension “*.sql”.  Fail ini mengandungi arahan-arahan SQL bagi DROP TABLE, CREATE TABLE dan INSERT INTO berdasarkan sumber pangkalan data yang dipilih.

 

Mari kita lihat contoh berdasarkan pangkalan data yang kita bina sebelum ini.

Pertama, login ke server Linux seperti biasa.

Jalankan arahan “mysqldump” untuk kita backup pangkalan data “customer_db”:

mysqldump -u root -p customer_db > customer_db.sql

Anda boleh lihat fail dengan nama “customer_db.sql” dibina dengan kandungan seperti berikut:

-- MySQL dump 10.13 Distrib 5.5.43, for debian-linux-gnu (x86_64)
--
-- Host: localhost Database: customer_db
-- ------------------------------------------------------
-- Server version 5.5.43-0ubuntu0.12.04.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
*/;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `pelanggan`
--

DROP TABLE IF EXISTS `pelanggan`;

/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pelanggan` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nama` varchar(100) DEFAULT NULL,
 `email` varchar(100) DEFAULT NULL,
 `tel` int(14) DEFAULT NULL,
 `birthday` date DEFAULT NULL,
 `STATUS` char(1) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `pelanggan`
--
LOCK TABLES `pelanggan` WRITE;
/*!40000 ALTER TABLE `pelanggan` DISABLE KEYS */;
INSERT INTO `pelanggan` VALUES (1,'Nazri Ahmad','nazri@datalead.com.my',13454343
4,'1997-04-11',NULL),(2,'Hurriya Harlinda','hurriya@datalead.com.my',163632005,'
1998-05-20',NULL);
/*!40000 ALTER TABLE `pelanggan` ENABLE KEYS */;
--
-- Dumping data for table `pelanggan`
--
LOCK TABLES `pelanggan` WRITE;
/*!40000 ALTER TABLE `pelanggan` DISABLE KEYS */;
INSERT INTO `pelanggan` VALUES (1,'Nazri Ahmad','nazri@datalead.com.my',13454343
4,'1997-04-11',NULL),(2,'Hurriya Harlinda','hurriya@datalead.com.my',163632005,'
1998-05-20',NULL);
/*!40000 ALTER TABLE `pelanggan` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2015-07-02 18:08:58

Nota: Gunakan arahan “cat customer_db” untuk melihat kandungan fail.

 

Saiz fail adalah bergantung kepada saiz database anda dan rekod-rekod yang disimpan.

Jika kita lihat, kita akan dapati fail ini mengandungi:

a) Arahan “DROP TABLE” untuk hapus jika terdapat nama table yang sama

b) Arahan “CREATE TABLE” untuk bina semula table structure

c) Arahan “INSERT INTO” untuk masukkan semula rekod-rekod yang disimpan sebelum ini.

2.  Backup Lebih dari Satu Database

Kita boleh backup lebih dari satu pangkalan data:

mysqldump -u root -p --databases [nama_database1] [nama_database1] [...] > namafail_dump.sql

Arahan ini akan membaca senarai pangkalan data yang kita pilih dan memasukkannya ke dalam satu fail “*.sql”.

Contoh:

mysqldump -u root -p customer_db test  > customerdb_test.sql

Arahan ini akan backup pangkalan data “customer_db” dan “test” ke fail “customerdb_test.sql“.

3. Backup Semua Database

Bagi proses backup semua database dalam server:

mysqldump -u root -p --all-databases  > all_databases.sql

Sekarang, kita boleh copy fail-fail “*.sql” ini ke tempat yang selamat.  Masuk dalam USB drive, DVD dan sebagainya.

4. Restore Database

Restore database pada server yang sama pula boleh dilakukan dengan arahan “mysql” seperti berikut:

mysql -u root -p [password-mysql-root] [nama_database] < namafail_dump.sql

Arahan ini pula akan membaca fail teks “*.sql” tersebut dan menjalankan arahan-arahan SQL yang dibina dari proses backup sebelum ini.

Jika kita restore pada server lain atau server baru, pastikan kita bina dulu pangkalan data yang berkaitan.

Contoh, bagi kita restore pangkalan data “customer_db” pada database server yang baru, kita perlu login ke MySQL dan bina database:

mysql -u root -p
mysql> CREATE DATABASE customer_db;
mysql> exit;

Seterusnya jalankan arahan untuk restore database:

mysql -u root -p root-password-anda customer_db < customer_db.sql

Kini kita telah berjaya untuk restore pangkalan data “customer_db” ke dalam server yang baru!  Sekian, terima kasih.

Tutorial MySQL Bahagian 3 – Bina dan Guna Pangkalan Data

Hari ini kita akan lihat bagaimana kita boleh membina dan menggunakan pangkalan data dengan server MySQL.  Antara yang akan disentuh secara ringkas adalah:

  • Menyenaraikan pangkalan data
  • Membina pangkalan data
  • Menghapus pangkalan data
  • Membina dan Kemaskini ‘Table’
  • Operasi rekod pangkalan data dengan SQL query

Seperti biasa, untuk membina pangkalan data, kita perlu login ke MySQL sebagai ‘root’:

mysql -u root -p

Contoh:

root@vps1:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 206
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Sekarang kita boleh memulakan perjalankan kita untuk belajar MySQL..

1. Menyenaraikan Pangkalan Data

Arahan untuk menyenaraikan pangkalan data: SHOW DATABASES;

Contoh:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

2. Membina Pangkalan Data

Arahan untuk membina pangkalan data: CREATE DATABASE <nama pangkalan data>;

Contoh, kita hendak membina pangkalan data ‘customer_db‘ bagi menyimpan maklumat senarai pelanggan perniagaan kita:

mysql> CREATE DATABASE customer_db;
Query OK, 1 row affected (0.00 sec)

Jika kita jalankan arahan SHOW DATABASES:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| customer_db        |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

Jika kita lihat, pangkalan data ‘customer_db’ telah pun dibina.

3. Menggunakan pangkalan data

Sebelum melakukan apa juga operasi ke atas pangkalan data, kita perlu melaksanakan arahan: USE <nama pangkalan data>;

Contoh:

mysql> USE customer_db; 
Database changed

4. Bina dan Lihat maklumat Table

Sekarang kita akan bina table (rasanya tak perlu untuk translate jadi meja pulak kan..) untuk pangkalan data ‘customer_db‘ ini.  Katakanlah maklumat pelanggan yang akan disimpan adalah seperti berikut:

  • Nama Pelanggan – NAMA dengan data type VARCHAR(100)
  • Email Pelanggan – EMAIL dengan data type VARCHAR(100)
  • Nombor Telefon –  TEL dengan data type INT(14)
  • Tarikh Lahir – BIRTHDAY dengan data type DATE

Kita juga perlu mempunyai maklumat ‘id’ yang unik bagi setiap rekod pelanggan yang hendak disimpan.

Bina table dengan arahan berikut: CREATE TABLE <maklumat table>;

Kita namakan table ini sebagai ‘pelanggan‘.

Contoh:

mysql> CREATE TABLE pelanggan (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, nama VARCHAR(100), email VARCHAR(100), tel INT(14), birthday DATE);
Query OK, 0 rows affected (0.00 sec)

Kita kini boleh melihat yang kita bina dengan arahan SQL: SHOW TABLES;

Contoh:

mysql> SHOW TABLES;
+-----------------------+
| Tables_in_customer_db |
+-----------------------+
| pelanggan             |
+-----------------------+
1 row in set (0.00 sec)

Bagi melihat maklumat atau description bagi table yang kita bina, guna arahan SQL: DESCRIBE <nama table>;

Contoh:

mysql> DESCRIBE pelanggan;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| nama     | varchar(100) | YES  |     | NULL    |                |
| email    | varchar(100) | YES  |     | NULL    |                |
| tel      | int(14)      | YES  |     | NULL    |                |
| birthday | date         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

5. Tambah Rekod ke Pangkalan Data

Bila dah ada table, barulah kita gunakan arahan INSERT untuk memasukkan rekod pelanggan.

Contoh:

mysql> INSERT INTO `pelanggan` (`id`, `nama`, `email`, `tel`, `birthday`) VALUES (NULL, "Nazri Ahmad", "nazri@datalead.com.my", 0173732005, "1997-04-11");
Query OK, 1 row affected (0.00 sec)

Kini kita telah add satu (1) rekod pengguna ke dalam pangkalan data ‘customer_db’;

6. Senarai Rekod

Macam mana nak lihat rekod? Betul ke dah masuk database? Ok, kita guna arahan SQL: SELECT

Contoh:

mysql> SELECT * FROM pelanggan;
+----+-------------+-----------------------+-----------+------------+
| id | nama        | email                 | tel       | birthday   |
+----+-------------+-----------------------+-----------+------------+
| 1  | Nazri Ahmad | nazri@datalead.com.my | 173732005 | 1997-04-11 |
+----+-------------+-----------------------+-----------+------------+
1 row in set (0.00 sec)

Mari kita tambah dua lagi rekod pelanggan:

INSERT INTO `pelanggan` (`id`, `nama`, `email`, `tel`, `birthday`) VALUES (NULL, "Hurriya Harlinda", "hurriya@datalead.com.my", 0163632005, "1998-05-20");
INSERT INTO `pelanggan` (`id`, `nama`, `email`, `tel`, `birthday`) VALUES (NULL, "Ahmad Albab", "albab@datalead.com.my", 0183832005, "1997-04-11");

Senaraikan kembali dengan Arahan SQL: SELECT

mysql> SELECT * FROM pelanggan;
+----+------------------+-------------------------+-----------+------------+
| id | nama             | email                   | tel       | birthday   |
+----+------------------+-------------------------+-----------+------------+
| 1  | Nazri Ahmad      | nazri@datalead.com.my   | 173732005 | 1997-04-11 |
| 2  | Hurriya Harlinda | hurriya@datalead.com.my | 163632005 | 1998-05-20 |
| 3  | Ahmad Albab      | albab@datalead.com.my   | 183832005 | 1997-04-11 |
+----+------------------+-------------------------+-----------+------------+
3 rows in set (0.00 sec)

Tadaaa.. dah ada 3 pelanggan!

7. Hapus Rekod

Kita juga boleh hapus rekod dengan arahan: DELETE

Contoh:
 mysql> DELETE FROM pelanggan WHERE nama="Ahmad Albab";
 Query OK, 1 row affected (0.00 sec)

Sekarang kita senaraikan kembali:

mysql> select * from pelanggan;
+----+------------------+-------------------------+-----------+------------+
| id | nama             | email                   | tel       | birthday   |
+----+------------------+-------------------------+-----------+------------+
| 1  | Nazri Ahmad      | nazri@datalead.com.my   | 173732005 | 1997-04-11 |
| 2  | Hurriya Harlinda | hurriya@datalead.com.my | 163632005 | 1998-05-20 |
+----+------------------+-------------------------+-----------+------------+
2 rows in set (0.01 sec)

Hilang dah Ahmad Albab.  Ini harta Ahmad Albab yang punya!

8. Kemaskini Rekod

Katalah “Nazri Ahmad” dan tukar nombor telefon.. Macam mana? Gunakanlah arahan SQL: UPDATE

Contoh:

mysql> UPDATE pelanggan SET tel=0134543434 WHERE id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Senaraikan kembali rekod pelanggan untuk melihat perubahan:

mysql> SELECT * FROM pelanggan;
+----+------------------+-------------------------+-----------+------------+
| id | nama             | email                   | tel       | birthday   |
+----+------------------+-------------------------+-----------+------------+
| 1 | Nazri Ahmad       | nazri@datalead.com.my   | 134543434 | 1997-04-11 |
| 2 | Hurriya Harlinda  | hurriya@datalead.com.my | 163632005 | 1998-05-20 |
+----+------------------+-------------------------+-----------+------------+
2 rows in set (0.00 sec)

9. Kemaskini Table

Katakan kita hendak tambah maklumat yang perlu ada pada rekod pelanggan, kita boleh kemas kini column di dalam table dengan arahan SQL ALTER.

Contoh, kita hendak mempunyai maklumat status sama ada pelanggan aktif atau tidak.  Ia hanya perlu maklumat ‘Y’ untuk ‘yes’ dan ‘N’ untuk ‘No’.  Kita boleh gunakan nama column ‘status’ dan data type CHAR(1).

Contoh:

mysql> ALTER TABLE pelanggan ADD status CHAR(1);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0

Lihat kembali description bagi table:

mysql> DESCRIBE pelanggan;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| nama     | varchar(100) | YES  |     | NULL    |                |
| email    | varchar(100) | YES  |     | NULL    |                |
| tel      | int(14)      | YES  |     | NULL    |                |
| birthday | date         | YES  |     | NULL    |                |
| status   | char(1)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

Untuk hapus column dalam pangkalan data pula, kita gunakan ALTER TABLE DROP.

Contoh:

ALTER TABLE pelanggan DROP status;

Penutup

Sekian sahaja pengenalan ringkas bagi pangkalan data, cara-cara membina table dan memasukkan, mengemaskini serta menghapuskan rekod dalam pangkalan data.

Oh ya, sebelum terlupa.. kalau nak hapus pangkalan data: DROP DATABASE <nama pangkalan data>;

Kalau nak hapus table: DROP TABLE <nama table>;

Sekian, Jumpa lagi!

Tutorial MySQL Bahagian 2 – Start / Stop / Restart Perkhidmatan MySQL

Kali ini kita akan menyentuh bagaimana kita hendak menyemak status, hidupkan, matikan atau restart perkhidmatan MySQL dalam Ubuntu secara ringkas.

Semak Status

Kita boleh menyemak status sama ada MySQL server kita hidup atau pun mati dengan arahan berikut:

sudo service mysql status

Nota: Kita gunakan arahan ‘sudo‘ bagi menjalankan arahan dengan privilegeroot‘.

Hidupkan MySQL

Gunakan arahan berikut untuk menghidupkan MySQL jika perkhidmatan ini mati:

sudo service mysql start

Matikan MySQL

Matikan perkhidmatan MySQL:

sudo service mysql stop

Restart

Pada bila-bila masa untuk restart perkhidmatan MySQL:

sudo service mysql restart

 

Sekian sahaja tutorial MySQL ringkas pada hari ini.  Selamat maju jaya!

Tutorial MySQL Bahagian 1 – Pasang MySQL Server

Kali ini kita akan membincangkan tentang penggunaan teknologi database server dalam siri artikel Tutorial MySQL dalam tiga (3) bahagian.

 

Pengenalan

Kita sedia maklum pada masa kini, kebanyakkan laman web memerlukan data-data dan rekod disimpan ke dalam pangkalan data.  Sebagai contoh, data-data atau rekod pelanggan adalah sangat kritikal dalam bidang perniagaan.  Tak kira sama ada perniagaan yang dijalankan secara offline atau pun online.

Pelbagai teknologi laman web yang menggunakan konsep Content Management System (CMS) seperti Drupal, Joomla dan WordPress juga memerlukan pangkalan data untuk menyimpan data-data yang berkaitan.

Siri artikel Tutorial MySQL ini akan menyentuh bagaimana pangkalan data dengan menggunakan MySQL server dipasang dan disenggara dengan menggunakan sistem pengoperasian Ubuntu Linux 14.04 (atau versi yang terkini).  Versi MySQL yang digunakan dalam artikel ini pula adalah versi 5.6.

Juga akan dibincangkan adalah bagaimana rekod-rekod boleh dibina dan dimasukkan ke dalam pangkalan data.

Tutorial MySQL bahagian pertama ini akan menyentuh bagaimana MySQL server boleh dipasang dengan langkah-langkah berikut:

Langkah 1 – Login ke sistem pengoperasian Linux

Login ke sistem sama ada terus ke console atau menggunakan Secure Shell (SSH) secara jarak jauh.

Langkah 2 – Pasang MySQL server dengan arahan ‘apt-get’

Pasang pakej perisian MySQL server dengan arahan ‘apt-get‘.  Pastikan kita menggunakan privilege ‘root’ dengan arahan ‘sudo‘:

sudo apt-get update
sudo apt-get install mysql-server-5.6

Langkah 3 – Set password

Semasa pemasangan pada Langkah 2, kita perlu set password pada akaun ‘root’ MySQL.  Perlu dijelaskan bahawa akaun ini adalah akaun yang berbeza dengan akaun ‘root’ pada sistem pengoperasian Linux.

Set password bila skrin berikut muncul:

 

Set semula password yang sama seperti di atas pada skrin di bawah ini:

 

Pastikan password yang digunakan adalah kukuh! Kombinasi aksara, nombor dan simbol diperlukan untuk memilih password yang sukar untuk diceroboh!

Langkah 4 – Login ke MySQL server

Server akan dihidupkan secara automatik apabila selesai kita memasang password bagi akaun ‘root‘ MySQL. Sekarang kita boleh login ke MySQL server dengan arahan berikut:

mysql -u root -p

Di mana, option-u <user>” adalah pengguna yang dipilih untuk login dan “-p” adalah option untuk memasukkan password yang dipilih.  Contoh berikut adalah contoh arahan yang digunakan untuk login ke MySQL server:

nazri@datalead:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.6.17-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.04 sec)

mysql> exit;
Bye

Contoh di atas memperlihatkan bagaimana kita boleh login ke MySQL server melalui command prompt Linux.  Kemudian terdapat dua contoh arahan iaitu ‘show databases‘ untuk melihat pangkalan data yang wujud dan seterusnya arahan ‘exit‘ untuk keluar.

Arahan-arahan yang dijalankan dalam pangkalan data MySQL perlu diakhiri dengan simbol semi-colon (“;“) seperti contoh di atas.

Penutup

Sekian sahaja Tutorial MySQL bahagian satu (1) secara ringkas.  Kita akan sambung Tutorial MySQL ini pada bahagian ke-dua di lain masa.  Selamat mencuba!

Pasang Mail Server Bahagian 6 – Postfix, Courier, MySQL & AfterLogic WebMail

Artikel pasang mail server pada kali ini akan membincangkan aspek pengurusan akaun pengguna email.  Kita akan bincangkan 2 perkara pengurusan iaitu menambah dan menghapus akaun pengguna.  Seperti yang terdapat dalam artikel Pasang Mail Server (Bahagian 4), kita perlu untuk memasuki pangkalan data MySQL untuk menambah dan menghapus pengguna.  Artikel kali ini akan membantu memudahkan pengurusan ini dengan atursara ringkas yang dibangunkan dengan PHP.

AMARAN:  Aturcara PHP yang dibangunkan adalah sangat ringkas dan tidak selamat dari serangan laman web seperti SQL injection dan sebagainya. Maklumlah programmer amatur copy dan paste sana sini.  Pastikan anda tidak mendedahkan program ini di laman web tanpa sebarang perlindungan!  Sesiapa yang boleh menjadikan ianya lebih kacak dan selamat dialu-alukan…

18. Bina Direktori

Jika folder laman web anda adalah di /var/www/html:

cd /var/www/html
mkdir mailadmin

19. Konfigurasi “Basic HTTP Auth”

Pastikan dalam konfigurasi website anda (contoh di: /etc/apache2/sites-available/00-default.conf) mempunyai direktif seperti berikut:

Edit fail:

vi /etc/apache2/sites-available/00-default.conf

Kandungan:

[...]

 DocumentRoot /var/www/
 <Directory /var/www/>
    Options None
    AllowOverride All
    Order allow,deny
    Allow from all
 </Directory>

[...]

Masuk ke folder mailadmin:

cd /var/www/html/mailadmin

Bina fail .htaccess

vi .htaccess

Masukkan kandungan berikut:

AuthUserFile /var/www/html/mailadmin/.htpasswd
AuthName "Please Enter Password"
AuthType Basic
Require valid-user

Bina akaun pengguna dan password:

 htpasswd -c .htpasswd nazri

Tukar dengan nama pengguna yang anda mahu dan password yang KUKUH.

Tukar permission:

chmod 744 .htpasswd
chmod 744 .htaccess

Restart apache web server:

service apache2 restart

20. Menambah Pengguna

Aturcara ringkas ini akan memasukkan akaun pengguna email ke pangkalan data dan menghantar welcome email bagi membina Maidir secara automatik.

Bina aturcara ringkas berikut di dalam direktori yang sama (/var/www/mailadmin):

cd /var/www/html/mailadmin
vi add.html

Masukkan:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add User</title>
</head>
<body>
<form action="insert.php" method="post">
 <p>
 <label for="email">Email:</label>
 <input type="text" name="email" id="email">
 </p>
 <p>
 <label for="password">Password:</label>
 <input type="text" name="password" id="password">
 </p>
 <input type="submit" value="Add User">
</form>
<BR>
Click <a href="http://mail.datalead.com.my/mailadmin"> here </a> for main menu.
</body>
</html>

Tukar URL berwarna merah dengan alamat server anda.

Bina fail PHP untuk tambah pengguna:

vi insert.php

Masukkan kod berikut dan tukar maklumat yang berwarna merah:

<?php
/* Tambah akaun pengguna ke pangkalan data MySQL*/

$link = mysqli_connect("localhost", "mail", "password_mail_anda", "mail_db");

// Check connection
if($link === false){
 die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security

$email = mysqli_real_escape_string($link, $_POST['email']);
$password = mysqli_real_escape_string($link, $_POST['password']);

// Tukar kuota mengikut cita rasa anda
$quota = 500485760;

// tambah ke pangkalan data
$sql = "INSERT INTO users (email, password, quota) VALUES ('$email', ENCRYPT('$password'), '$quota')";

if(mysqli_query($link, $sql)){
 echo "Records added successfully. <br>";
 $to = $email;
 $subject = "Email Account Activation";
 $message = "Hi $email, Welcome to DATALEAD MAILBOX!";
 $header = "From:postmaster@datalead.com.my \r\n";
 
 $retval = mail ($to,$subject,$message,$header);
 if( $retval == true )
 {
 echo "Message sent successfully...<br>";
 echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for
 main menu. <br> ";
 }
 else
 {
 echo "Message could not be sent...";
 echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for
 main menu. <br> ";
 }
 } else{
 echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
 }

// close connection
mysqli_close($link);
?>

21. Papar dan Hapus Pengguna

Bina fail “delete.php” dalam direktori yang sama:

vi delete.php

Masukkan kandungan berikut dan tukar maklumat yang berkenaan:

<html>
<head>
<title>Delete User</title>
</head>
<body>
<?php
$servername = "localhost";
$username = "mail";
$password = "password_mail_anda";
$dbname = "mail_db";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
 die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT email, password, quota FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {

// output data of each row
 while($row = mysqli_fetch_assoc($result)) {
 echo "Email: " . $row["email"] . "<br>";
 }
} else {
 echo "0 results";
}
echo "<br>";

mysqli_close($conn);
?>

<?php
if(isset($_POST['delete']))
{
$dbhost = 'localhost:3036';
$dbuser = 'mail';
$dbpass = 'password_mail_anda';
$db = 'mail';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}

$email = $_POST['email'];
$sql = "DELETE FROM users ".
 "WHERE email = '$email'" ;

mysql_select_db($db);
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not delete data: ' . mysql_error());
}
echo "Email $email deleted successfully. <br>";
echo "Don't forget to delete user mailbox at /home/vmail/datalead.com.my manually. <br>";
echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for main menu. <br> ";

mysql_close($conn);
}
else
{
?>

<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Delete Email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="delete" type="submit" id="delete" value="Delete">
</td>
</tr>
</table>
</form>
<BR>
Click <a href="http://mail.datalead.com.my/mailadmin"> here </a> for main menu.

</body>
</html>

Seperti di dalam aturcara di atas, kita perlu menghapuskan Maildir yang berkaitan dengan akaun pengguna di atas secara manual.

22. Bina Laman Utama

Edit fail “index.html” dalam direktori yang sama:

vi index.html

Masukkan kod HTML ringkas dan malas berikut (hehehe):

<A HREF='add.html'>ADD</A><BR>
<A HREF='delete.php'>DELETE</A><BR>

Tukar kesemua permission dan fail ownership:

cd /var/www/html
chown www-data.www-data mailadmin -R
chmod 755 mailadmin -R

Kini anda boleh layari atrucara ringkas melalui alamat http://mail.datalead.com.my/mailadmin.  Masukkan akaun pengguna dan kata laluan yang dibina dalam langkah (19).  Terimalah program ringkas dan malas mailadmin berikut:

Laman utama:

 

 

Tambah pengguna:

 

Papar dan hapus pengguna:

 

23. Penutup

Sekian sahaja artikel bahagian ke-6 siri pasang mail server. Tuan-tuan yang mempunyai skill yang tinggi dalam PHP programming dialu-alukan untuk menambah baik program di atas :-).  Dengan ini tamatlah keseluruhan siri artikel untuk pasang email server.  Selamat mencuba dan jumpa lagi pada lain-lain artikel pada masa hadapan.

 

____________________________________________________

BAHAGIAN 1 | BAHAGIAN 2 | BAHAGIAN 3 | BAHAGIAN 4 | BAHAGIAN 5 | BAHAGIAN 6