Pages

Friday, February 27, 2009

Tutorial Mikrotik - Simple Queue - Memisah Bandwidth International & Lokal (IIX)

Selama mengelola Mikrotik Indonesia, banyak sekali muncul pertanyaan bagaimana cara melakukan pemisahan queue untuk trafik internet internasional dan trafik ke internet Indonesia (OpenIXP dan IIX). Di internet sebetulnya sudah ada beberapa website yang menampilkan cara pemisahan ini, tapi kami akan coba menampilkan kembali sesederhana mungkin supaya mudah diikuti.

Pada artikel ini, kami mengasumsikan bahwa:

1. Router Mikrotik melakukan Masquerading / src-nat untuk client. Client menggunakan IP privat.
2. Gateway yang digunakan hanya satu, baik untuk trafik internasional maupun IIX.
3. Anda bisa menggunakan web-proxy internal ataupun tanpa web-proxy. Jika Anda menggunakan web-proxy, maka ada beberapa tambahan rule yang perlu dilakukan. Perhatikan bagian NAT dan MANGLE pada contoh di bawah ini.

Selama mengelola Mikrotik Indonesia, banyak sekali muncul pertanyaan bagaimana cara melakukan pemisahan queue untuk trafik internet internasional dan trafik ke internet Indonesia (OpenIXP dan IIX). Di internet sebetulnya sudah ada beberapa website yang menampilkan cara pemisahan ini, tapi kami akan coba menampilkan kembali sesederhana mungkin supaya mudah diikuti.

Pada artikel ini, kami mengasumsikan bahwa:

1. Router Mikrotik melakukan Masquerading / src-nat untuk client. Client menggunakan IP privat.
2. Gateway yang digunakan hanya satu, baik untuk trafik internasional maupun IIX.
3. Anda bisa menggunakan web-proxy internal ataupun tanpa web-proxy. Jika Anda menggunakan web-proxy, maka ada beberapa tambahan rule yang perlu dilakukan. Perhatikan bagian NAT dan MANGLE pada contoh di bawah ini.

Jika ada parameter di atas yang berbeda dengan kondisi Anda di lapangan, maka konfigurasi yang ada di artikel ini harus Anda modifikasi sesuai dengan konfigurasi network Anda.

Pengaturan Dasar

Berikut ini adalah diagram network dan asumsi IP Address yang akan digunakan dalam contoh ini.

Untuk mempermudah pemberian contoh, kami mengupdate nama masing-masing interface sesuai dengan tugasnya masing-masing.


[admin@MikroTik] > /interface pr Flags: X - disabled, D - dynamic, R - running # NAME TYPE RX-RATE TX-RATE MTU 0 R ether-public ether 0 0 1500 1 R ether-local ether 0 0 1500

Untuk klien, akan menggunakan blok IP 192.168.0.0/24, dan IP Address 192.168.0.1 difungsikan sebagai gateway dan dipasang pada router, interface ether-local. Klien dapat menggunakan IP Address 192.168.0-2 hingga 192.168.0.254 dengan subnet mask 255.255.255.0.


[admin@MikroTik] > /ip ad pr Flags: X - disabled, I - invalid, D - dynamic # ADDRESS NETWORK BROADCAST INTERFACE 0 202.0.0.1/24 202.0.0.0 202.0.0.255 ether-public 1 192.168.0.1/24 192.168.0.0 192.168.0.255 ether-local

Jangan lupa melakukan konfigurasi DNS server pada router, dan mengaktifkan fitur "allow remote request".

Karena klien menggunakan IP private, maka kita harus melakukan fungsi src-nat seperti contoh berikut.


[admin@MikroTik] > /ip fi nat pr Flags: X - disabled, I - invalid, D - dynamic 0 chain=srcnat out-interface=ether-public action=masquerade

Jika Anda menggunakan web-proxy transparan, Anda perlu menambahkan rule nat redirect, seperti terlihat pada contoh di bawah ini (rule tambahan yang tercetak tebal).


[admin@MikroTik] > /ip fi nat pr Flags: X - disabled, I - invalid, D - dynamic 0 chain=srcnat out-interface=ether-public action=masquerade 1 chain=dstnat in-interface=ether-local protocol=tcp dst-port=80 action=redirect to-ports=8080

Jangan lupa mengaktifkan fitur web-proxy, dan men-set port layanan web-proxynya, dan disesuaikan dengan port redirect pada contoh di atas.

CEK: Pastikan semua konfigurasi telah berfungsi baik. Lakukanlah ping (baik dari router maupun dari klien) ke luar network Anda secara bergantian.

Pengaturan IP Address List

Mulai Mikrotik RouterOS versi 2.9, dikenal dengan fitur yang disebut IP Address List. Fitur ini adalah pengelompokan IP Address tertentu dan setiap IP Address tersebut bisa kita namai. Kelompok ini bisa digunakan sebagai parameter dalam mangle, firewall filter, nat, ataupun queue.

Mikrotik Indonesia telah menyediakan daftar IP Address yang diadvertise di OpenIXP dan IIX, yang bisa didownload dengan bebas di URL: http://www.mikrotik.co.id/getfile.php?nf=nice.rsc

File nice.rsc ini dibuat secara otomatis di server Mikrotik Indonesia setiap pagi sekitar pk 05.30, dan merupakan data yang telah di optimasi untuk menghilangkan duplikat entry dan tumpang tindih subnet. Saat ini jumlah baris pada script tersebut berkisar 430 baris.

Contoh isi file nice.rsc :


# Script created by: Valens Riyadi @ www.mikrotik.co.id # Generated at 26 April 2007 05:30:02 WIB ... 431 lines /ip firewall address-list add list=nice address="1.2.3.4" rem [find list=nice] add list=nice address="125.162.0.0/16" add list=nice address="125.163.0.0/16" add list=nice address="152.118.0.0/16" add list=nice address="125.160.0.0/16" add list=nice address="125.161.0.0/16" add list=nice address="125.164.0.0/16" . . dst...

Simpanlah file tersebut ke komputer Anda dengan nama nice.rsc, lalu lakukan FTP ke router Mikrotik, dan uploadlah file tersebut di router. Contoh di bawah ini adalah proses upload menggunakan MS-DOS prompt.


C:\>dir nice.* Volume in drive C has no label. Volume Serial Number is 5418-6EEF Directory of C:\ 04/26/2007 06:42p 17,523 nice.rsc 1 File(s) 17,523 bytes 0 Dir(s) 47,038,779,392 bytes free C:\>ftp 192.168.0.1 Connected to 192.168.0.1. 220 R&D FTP server (MikroTik 2.9.39) ready User (192.168.0.1:(none)): admin 331 Password required for admin Password: ******** 230 User admin logged in ftp> ascii 200 Type set to A ftp> put nice.rsc 200 PORT command successful 150 Opening ASCII mode data connection for '/nice.rsc' 226 ASCII transfer complete ftp: 17523 bytes sent in 0.00Seconds 17523000.00Kbytes/sec. ftp> bye 221 Closing C:\>

Setelah file diupload, import-lah file tersebut.

[admin@MikroTik] > import nice.rsc Opening script file nice.rsc Script file loaded and executed successfully



Pastikan bahwa proses import telah berlangsung dengan sukses, dengan mengecek Address-List pada Menu IP - Firewall

Proses upload ini dapat juga dilakukan secara otomatis jika Anda memiliki pengetahuan scripting. Misalnya Anda membuat shell script pada Linux untuk melakukan download secara otomatis dan mengupload file secara otomatis setiap pk 06.00 pagi. Kemudian Anda tinggal membuat scheduler pada router untuk melakukan import file.

Jika Anda menggunakan RouterOS versi 3.x, proses update juga dapat dilakukan secara otomatis. Detailnya bisa dilihat pada artikel ini.

Pengaturan Mangle

Langkah selanjutnya adalah membuat mangle. Kita perlu membuat 1 buah connection mark dan 2 buah packet mark, masing-masing untuk trafik internasional dan lokal.


[admin@MikroTik] > /ip firewall mangle pr Flags: X - disabled, I - invalid, D - dynamic 0 chain=prerouting in-interface=ether-local dst-address-list=nice action=mark-connection new-connection-mark=conn-iix passthrough=yes 1 chain=prerouting connection-mark=conn-iix action=mark-packet new-packet-mark=packet-iix passthrough=no 2 chain=prerouting action=mark-packet new-packet-mark=packet-intl passthrough=no

Untuk rule #0, pastikanlah bahwa Anda memilih interface yang mengarah ke client. Untuk chain, kita menggunakan prerouting, dan untuk kedua packet-mark, kita menggunakan passthrough=no.

Jika Anda menggunakan web-proxy internal dan melakukan redirecting trafic, maka Anda membuat 2 buah rule tambahan seperti contoh di bawah ini (rule tambahan yang tercetak tebal).


[admin@MikroTik] > /ip firewall mangle pr Flags: X - disabled, I - invalid, D - dynamic 0 chain=prerouting in-interface=ether-local dst-address-list=nice action=mark-connection new-connection-mark=conn-iix passthrough=yes 1 chain=prerouting connection-mark=conn-iix action=mark-packet new-packet-mark=packet-iix passthrough=no 2 chain=output connection-mark=conn-iix action=mark-packet new-packet-mark=packet-iix passthrough=no 3 chain=prerouting action=mark-packet new-packet-mark=packet-intl passthrough=no 4 chain=output action=mark-packet new-packet-mark=packet-intl passthrough=no

Pengaturan Simple Queue

Untuk setiap client, kita harus membuat 2 buah rule simple queue. Pada contoh berikut ini, kita akan melakukan limitasi untuk IP client 192.168.0.2/32, dan kita akan memberikan limitasi iix (up/down) sebesar 64k/256k, dan untuk internasional sebesar (up/down) 32k/128k.


[admin@MikroTik]> /queue simple pr Flags: X - disabled, I - invalid, D - dynamic 0 name="client02-iix" target-addresses=192.168.0.2/32 dst-address=0.0.0.0/0 interface=all parent=none packet-marks=packet-iix direction=both priority=8 queue=default-small/default-small limit-at=0/0 max-limit=64000/256000 total-queue=default-small 1 name="client02-intl" target-addresses=192.168.0.2/32 dst-address=0.0.0.0/0 interface=all parent=none packet-marks=packet-intl direction=both priority=8 queue=default-small/default-small limit-at=0/0 max-limit=32000/128000 total-queue=default-small



Pengecekan Akhir

Setelah selesai, lakukanlah pengecekan dengan melakukan akses ke situs lokal maupun ke situs internasional, dan perhatikanlah counter baik pada firewall mangle maupun pada simple queue.

Anda juga dapat mengembangkan queue type menggunakan pcq sehingga trafik pada setiap client dapat tersebar secara merata.

Tips SEO

Apa itu SEO?

SEO adalah singkatan dari Search Engine Optimization. Ini adalah salah satu upaya untuk mengoptimalkan hasil pencarian pada search engine. Seperti anda tahu, bahwa jika seseorang menggunakan search engine (misalnya google) maka setelah ia memasukkan keyword (kata kunci) maka akan muncul hasil pencarian yang sesuai dengan kata kunci yang ia inginkan. Nah, dengan metode SEO ini, anda akan mampu menempatkan website anda di peringkat atas. Minimal di halaman pertama hasil pencarian Search Engine.
Cara Mengoptimalkan Website

SEO memiliki 2 bagian untuk mengoptimalkan website. Yang pertama adalah Onpage Optimization atau Optimasi didalam. Optimasi di dalam halaman meliputi penggunaan aneka tag HTML yang mendukung pencarian search engine. Tag-tag yang dipergunakan meliputi header, image, title dan juga pemilihan text yang tepat untuk setiap halaman. Untuk lebih lengkapnya, anda bisa langsung menuju pelajaran yang tersedia.
Title Tag Optimization adalah salah satu hal yang paling penting dalam proses optimasi search engine (SE). Kebanyakan SE dan direktori menjadikan Title Tag sebagai hal yang paling penting dalam merangking website. Hal ini juga penting sebagai judul dalam hasil pencarian search engine. Berikut ini cara mengoptimalkan title tag :

1. Semua halaman di websitemu harus memiliki title tag yang unik
2. Title tag harus ditempatkan langsung dibawah tag
3. Sertakan 1-2 keyword penting di title tag
4. Gunakan hanya keyword dan kalimat yang ada di isi halaman
5. Title tag harus berupa kalimat yang mudah dibaca
6. Jangan meletakkan 2 keyword yang sama dalam judul
7. Jangan meletakkan keyword yang sama secara berdampingan. Ini akan dianggap spam oleh SE
8. Mempertimbangkan penggunaan kedua-duanya bentuk tunggal dan bentuk jamak dari kata kunci yang penting di title tag
9. Judul hendaknya sepanjang 60-90 karakter termasuk spasi
10. Tempatkanlah keyword utama sebagai awal judul
11. Hindari menggunakan koma an gunakan karakter '|' untuk mengganti koma
12. Jangan terlalu sering mengubah judul

Body text sangat penting dalam mengoptimalkan pencarian. Body text ditampilkan oleh SE di hasil pencarian mereka. Ini digunakan SE untuk menentukan inti sebuah web dan merangkingnya. Ini meliputi semua isi dokumen termasuk text, gambar, warna, grafik, tabel,dll.

Body text adalah text di halaman web yang berada diantara tag dan

Tips untuk mengoptimalkan Tag Body

1. Tempatkan semua keyword di body text
2. Cobalah menempatkan keyword utama di awal body
3. Keyword anda haruslah 3-6% dari seluruh text. Ini berarti 3-6 keyword per 100 kata.
4. Jangan menggunakan text yang memiliki warna yang sama dengan background. Ini dianggap sebagai "text tak terlihat" oleh SE dan situs kamu akan di black list karena ini.
5. Jangan menggunakan frame untuk halaman anda. SE membenci frame. Jika kamu terpaksa menggunakannya, maka gunakan tag .
6. Tempatkanlah keyword yang digunakan di judul ke dalam body text
7. Jangan meletakkan keyword yang sama berdekatan, hala ini akan dianggap sebagai spam oleh SE
8. Jangan menggunakan text yang sangat kecil atau link di halamanmu
9. Cobalah menyertakan keyword dalam bentuk tebal atau miring
10. Sertakan fungsi javascript dan CSS di file yang berbeda
11. Update isi body yang penting secara teratur. Ikutilah langkah-langkah di atas untuk mengoptimalkan body textmu.
12. Buatlah halaman layoutmu tetap sederhana.

Keyword Research berarti menemukan keyword yang tepat untuk websitemu dan akan membawa pengunjung yang banyak ke website melalui search engine. Memilih keyword yang paling sesuai untuk sebuah website sangatlah penting. Keyword terpilih akan digunakan selama proses optimalisasi untuk meningkatkan rangking website. Berikut ini tips dan trik Keyword Research:

1. Gunakan Keyword Selector Tool atau Good Keyword (gratis) untuk menemukan keyword yang tepat. Ketikkan saja keyword anda dan dia akan menunjukkan pencarian yang telah dilakukan selama sebulan terkait dengan keyword tersebut
2. Lihat jumlah hasil di google untuk keywordmu dan pilih keyword yang sering digunakan untuk mencari dan sedikit hasilnya.
3. Pilih keyword yang populer namun sedikit pesaing
4. Gunakan kalimat keyword yang spesifik dibanding keyword tunggal. Sebagai contoh, akan lebih baik menggunakan "permen coklat" daripada "permen"
5. Pilihlah keyword yang relevan dan unik untuk setiap halaman web.
6. Hindari penggunakan kata sambung seperti di, dan, adalah, apa, a, ca, are, be, dll. karena kata tersebut akan diabaikan oleh kebanyakan SE
7. Pertimbangkan untuk menggunakan bentuk jamak dan tunggal untuk keyword
8. Cobalah menggunakan domain yang mengandung keyword utama. Sebagai contoh, jika keyword utamamu "kursus komputer online", maka gunakanlah kursuskomputeronline.com atau kursusonline.com atau domain lain yang berisi keyword utamamu
9. Gunakan keyword salah eja dimana itu akan membawa lebih banyak kunjungan. Gunakan Misspelled Keyword Generator untuk mencari keyword salah eja yang berhubungan dengan keywordmu.
10. Pilih keyword yang bisa disatukan dengan judul dan body halamanmu

Link Populary adalah jumlah website yang melakukan link ke websitemu. Link yang datang tak hanya meningkatkan jumlah pengunjung namun juga meningkatkan rangking websitemu di SE. Link building juga memiliki tempat yang sangat penting dalam proses mengoptimalkan Search Engine. Link Building Tips

1. Semakin banyak link berkualitas dari situs yang relevan, maka semakin baik rankingmu dan semakin banyak trafik didapat. Maka, cobalah membangun link dengan website bagus yang relevan
2. Link berkualitas dari situs dengan rangking tinggi akan memberi lebih banyak daripada link banyak dari situs dengan rangking rendah. Maka anda harus mencoba melakukan hubungan dengan webmaster web berkualitas daripada dengan 100 website yang tak berkualitas.
3. Link dari situs ke situs haruslah berupa text, bukan gambar. Gunakan salah satu keyword utama anda. Itu akan meningkatkan rangking SE anda untuk kata tersebut.
4. Buatlah program pertukaran link di website anda. Itu akan meningkatkan link
5. Pastikan halaman link anda terlink dan terlihat di halaman utama.
6. Jika anda memberikan link ke partner pertukaran, pastikan untuk memberikan format sebagai berikut :

Kalimat Keyword

7. Hubungi pemilik website lain yang berhubungan untuk mendiskusikan pertukaran link
8. Cobalah untuk membuat deskripsi link secara singkat
9. Jangan melakukan pertukaran link dengan situs yang tak berhubungan dengan websitemu.
10. Cek pagerank setiap website yang anda link. Anda harus melink website yang bagus saja dan memiliki rangking bagus dan telah online lebih dari 6 bulan.
11. Submit ke direktori yang bagus yang memiliki pagerank bagus (harus lebih dari 4) dan telah online lebih dari 1 tahun.
12. Cari Google dengan menggunakan keyword utamamu. Cek 10 website teratas di hasil pencarian untuk melihat apakah ada kesempatan untuk melakukan pertukaran link dengan website ini.

Mengoptimalkan Hyperlink dapat meningkatkan rangking di search engine. Jika kamu melakukan link ke suatu halaman, SE akan memberi perhatian spesial pada kata yang kamu gunakan di dalam link tersebut. SE biasanya mencari kata kunci di link dan mempertimbangkan text pengait dari link yang datang untuk merangking halaman. Ini adalah salah satu aspek penting dalam SEO.

Tips untuk Optimasi Text Link

1. Gunakan text deskriptif pada semua text link. Contohnya, jika keywordmu Webmaster Resource, maka gunakan "webmaster resource" sebagai ganti home.
2. Anda harus menggunakan kalimat kunci di dalam link itu sendiri dan mungkin juga disekitar link
3. Gunakan kata/kalimat kunci yang menggambarkan target halaman
4. Gunakan maksimum 40-50 karakter di dalam text link
5. Buatlah text link dan gunakan menu navigasi umum untuk semua halaman.
6. Cobalah menggunakan kalimat kunci sebagai nama file html atau gambar. Misalnya kalimat kuncinya "website resource", maka gunakan sebagai nama file menjadi "website-resource.html" atau "website-resource.gif"
7. Hindari menggunakan link javascript karena tak terbaca oleh SE
8. Pastikan halaman di websitemu terhubung satu sama lain, terutama home.
9. Jangan mengulang link di seluruh halaman
10. Website flash harus memiliki text link di bawah halaman sebagai tambahan navigasi flash

Header Tag Optimization adalah bagian yang penting dalam SEO. Header tag digunakan oleh SE untuk mengenali isi website. Algoritma SE menggunakan formula rangking yang memberi titik berat pada keyword yang digunakan di header text. Ini didefinisikan dengan tag
hingga
.
didefinisikan dengan heading terbesar.
didefinisikan dengan heading terkecil.
menjadi pertimbangan yang paling penting dan
memiliki kepentingan yang lebih kecil didalam SEO.

Tips untuk mengoptimalisasi Header Tag untuk SE :

1. Gunakan 2-4 header tags
,
,
,
2. di setiap halaman website Tag ini harus mengandung keyword yang spesifik bersama dengan text dekriptif yang relevan dengan isi halaman
3. Cobalah untuk menyertakan kalimat kunci yang paling penting di header tags jika bisa
4. Letakkan kata kunci utama di tag
5.
menjadi pertimbangan utama dan
yang paling kecil. Maka tempatkan keyword sesuai tempatnya. Tag
untuk keyword paling utama,
yang lebih rendah dan
6. lebih rendah lagi. Begitu seterusnya. Tempatkan keyword dimana ia terkandung di dalam text di bawah header saja.
7.
harus ditempatkan sedekat mungkin dengan tag di halamanmu.

Tips Tetap Setia

Tak mudah memang setia terhadap pasangan. Banyak yang harus dilakukan agar Anda berdua bisa tetap bahagia menjalani hubungan dengan dasar kesetiaan. Apa saja?

1. TANPA PAMRIH
Hal yang perlu Anda sadari dalam mencintai pasangan adalah “memberi dengan tulus.” Cinta adalah ketulusan hati. Untuk itu, tidak selayaknya menyelipkan pamrih demi keuntungan atau kesenangan sendiri. Misalnya, jangan berharap dengan mencintai pasangan, Anda lantas senantiasa harus diperhatikan. Atau, dengan mencintai pasangan, Anda berharap pasangan tidak berbuat kesalahan. Semua itu hanya akan menyakitkan diri Anda.

Ingat, mencintai berarti Anda “hanya” memberi, jadi jangan mengharapkan kembalian. Imbal balik dari pasangan akan datang dengan sendirinya bila Anda tulus mencintainya. Tidak perlu Anda berharap-harap, bukan? Dari rasa tanpa pamrih inilah, Anda akan mampu menjaga hati untuk tetap setia pada cinta Anda. Dari sinilah, Anda akan sanggup membahagiakan pasangan.

2. JANGAN BANYAK MENUNTUT
Jangan cemari hati dan cinta dengan begitu banyak tuntutan. Bahkan, sebaliknya, Anda harus belajar untuk selalu memberi yang terbaik kepada orang lain, termasuk kepada pasangan, melalui cinta Anda. Hanya dengan cinta yang benar, semua itu dapat Anda wujudkan. Sikap seperti ini akan membuat Anda tetap setia kepada cinta Anda, yang tentu berbuah positif dalam hubungan dengan pasangan.

Terlalu banyak menuntut hanya akan berujung pada kepentingan pribadi, sehingga tidak akan mampu menambahkan kedewasaan hubungan. Bahkan, sangat mungkin malah menghancurkan jalinan kasih Anda. Bukankah bila hal ini terjadi, kesetiaan Anda pun akan luntur? Jadi, jangan banyak “menuntut” agar Anda tetap selalu setia kepada cinta dan hubungan Anda berdua.

3. JANGAN TAKUT DIKECEWAKAN
Mungkin ini sangat sulit Anda lakukan. Biasanya, setiap orang selalu menghindari rasa kecewa, dan selalu ingin senang terus. Tidak ada ruang dalam hatinya untuk rasa kecewa atau duka cita. Padahal, kehidupan memiliki banyak sisi yang harus dihayati.

Untuk itu, agar Anda tetap setia kepada cinta Anda, jangan takut dikecewakan! Tidak selamanya pertumbuhan pribadi berasal dari kesuksesan atau kebahagiaan. Adakalanya, Anda harus merasakan kekecewaan akibat hubungan dengan orang lain, termasuk pasangan Anda. Sangat mungkin ada salah paham, cekcok, atau pertengkaran kecil yang tentu akan membuat hati Anda terluka. Namun, jangan takut. Anda dapat mendewasakan diri dari “luka-luka kecil” seperti ini.

Bila Anda sudah mampu menghadapi situasi sulit ini, Anda tetap akan setia terhadap cinta Anda. Cintalah yang akan menghibur Anda dari goresan luka. Cintalah yang akan menyemangati hidup Anda untuk bangkit dari kekecewaan. Jadi, jangan buramkan cinta bila Anda sedang kecewa. Kesetiaan terhadap cinta inilah yang akan terus menguatkan hubungan kasih Anda dengan pasangan.

4. JADILAH PENGHIBUR YANG BAIK
Tempatnya cinta adalah hati. Bila hati sedang terluka, seseorang memerlukan penghiburan. Begitu pula bila hati pasangan Anda sedang berduka, hiburlah dia. Cinta Andalah yang akan menggerakkan diri Anda untuk memberi penghiburan dan penguatan bagi pasangan.

Semua itu dapat Anda lakukan bila Anda memiliki cinta yang bermahkotakan kesetiaan. Anda tidak akan pernah dapat menjadi penghibur yang baik bila cinta Anda tidak Anda bekali untuk “setia di saat duka sedang berkuasa.” Jadi, belajarlah menjadi penghibur yang baik bagi pasangan. Mulailah dari mencintai diri dengan benar dan selalu setialah terhadap cinta Anda. Yakinlah, hubungan kasih bersama pasangan akan semakin mesra dengan suasana penuh penghiburan ini.

5. PAHAMI SEPENUH HATI
Manusia tidak selalu berada dalam situasi yang mudah. Seringkali, pasangan berada dalam situasi sulit dan mungkin Anda pun kesulitan untuk memahaminya. Mungkin ia sedang frustrasi, putus asa, atau gagal. Nah, Anda harus bisa memahami hati pasangan yang sedang terpuruk ini. Pahami dia dengan sepenuh hati, jangan malah terpancing memperburuk suasana batinnya. Misalnya Anda mengomeli kenapa dia bisa gagal, atau menyalahkannya.

Hindari sikap seperti ini. Hanya dengan tetap setia kepada cinta Anda, Anda akan mampu menerima dan memahami suasana hati pasangan. Dengan kesetiaan pula, Anda menginspirasi pasangan untuk sesegera mungkin bangkit dari frustrasinya. Semua itu hanya dapat Anda lakukan dengan cinta, bukan? Jangan sedetik pun meninggalkan cinta Anda dan tetap setialah di dalamnya. Dengan begitu, pasangan akan lebih mencintai Anda karena Andalah yang bisa menjadi penyejuk di saat suasana buruk terjadi.

6. SYUKURI APA YANG TERJADI
Jangan mengeluh dan mengumpat bila Anda sedang gagal, berduka, ataupun kecewa. Ucapkan syukur atas karunia hari-hari Anda yang penuh warna pengalaman hidup. Ucapkan syukur karena semua peristiwa membawa Anda bertumbuh dalam kedewasaan.

Dengan sikap ini, Anda akan dapat tetap setia dalam cinta Anda. Kekalutan hidup tidak akan membuat jiwa Anda kerdil. Bahkan sebaliknya, Anda akan semakin tangguh menghadapi apa pun yang terjadi. Jadi, tetap setialah kepada cinta Anda dengan mensyukuri semua pengalaman hidup Anda. Dari sinilah hubungan kasih dengan pasangan akan semakin kokoh.

7. MANDIRI DALAM PIKIR DAN TINDAKAN
Kemandirian bukan berarti harus memikirkan diri sendiri tanpa memerhatikan orang lain, terutama pasangan hidup. Kemandirian dalam berpikir dan bertindak berarti mengedepankan rasa percaya diri dalam menghadapi setiap peristiwa yang terjadi. Dengan demikian, tak perlu menunggu pasangan bertindak ketika Anda harus menentukan sikap terhadap suatu momen penting.

Kemandirian akan membuat Anda dapat tetap setia terhadap pasangan dan diri Anda sendiri. Anda akan semakin yakin bahwa cinta Anda membawa kekuatan diri yang berujung pada sikap positif dalam memandang cinta dan jalinan kasih Anda. Untuk itu, berusahalah untuk mandiri dalam pikir dan tindakan, agar kesetiaan terhadap cinta terus pula berkembang. Hubungan kasih pun akan semakin kuat dan mandiri.

8. TEGUH DALAM HARAPAN
Cinta tanpa pengharapan tentu akan sia-sia. Hidup tak akan pernah bergerak ke depan tanpa pengharapan. Seakan tidak memiliki fokus ke arah yang lebih baik lagi. Anda juga tidak akan dapat menambahkan sedikit demi sedikit makna cinta dalam hidup Anda. Untuk itu, milikilah harapan dan berusahalah untuk selalu untuk mewujudkannya.

Dengan demikian, Anda akan tetap setia kepada cinta Anda; karena harapan Andalah yang mendorongnya. Tanpa setia dalam cinta, Anda tidak akan bergairah dalam mewujudkan harapan-harapan Anda, terutama harapan agar hidup penuh kasih dan sayang dengan pasangan. Jadi, selalu perteguh harapan akan hidup lebih baik dalam cinta dan kehidupan Anda berdua.

9. PADUKAN KATA DAN PERBUATAN
Cinta sebaiknya tak hanya disimpan di bibir semata. Juga, jangan hanya diungkapkan dengan untaian kata yang indah. Padukan kata dan perbuatan, sehingga makna cinta Anda dapat Anda rasakan bersama pasangan. Paduan ini akan menjadi bukti bahwa Anda tetap setia terhadap cinta Anda. Kesetiaan ini membuat hubungan kasih bersama pasangan selalu berada dalam kejujuran dan kepercayaan.

Ini karena Anda selalu setia dan konsisten terhadap ucapan dan perbuatan Anda. Dengan demikian, Anda berdua akan benar-benar menikmati kesetiaan dengan sepenuh hati. Tidak ada kekhawatiran akan terjadi kebohongan

Instalasi Joomla

Sebelum melakukan instalasi Anda perlu melengkapi beberapa aplikasi yang akan digunakan supaya Joomla dapat dioperasikan di komputer Anda. Ini adalah daftar aplikasi dan persiapan yang harus dilakukan sebelum melakukan instalasi Joomla.



* Joomla 1.5.0, dapat di-download di http://www.joomla.org
* Apache Server, PHP, MySQL, dan phpMyAdmin, untuk memudahkan instalasi ini Anda menggunakan aplikasi XAMPP untuk windows yang tersedia dan dapat di-download di http://www.apachefriends.org. Anda hanya cukup mengikuti instruksi instalasi saja. Dengan melakukan instalasi XAMPP komputer anda akan otomatis diinstal Apache Server, PHP, MySQL, dan phpMyAdmin.



Instalasi Joomla

Sebelum melakukan instalasi Anda perlu melengkapi beberapa aplikasi yang akan digunakan supaya Joomla dapat dioperasikan di komputer Anda. Ini adalah daftar aplikasi dan persiapan yang harus dilakukan sebelum melakukan instalasi Joomla

* Joomla 1.0.3, dapat di-download di http://www.joomla.org
* Apache Server, PHP, MySQL, dan phpMyAdmin, untuk memudahkan instalasi ini Anda menggunakan aplikasi XAMPP untuk windows yang tersedia dan dapat di-download di http://www.apachefriends.org. Anda hanya cukup mengikuti instruksi instalasi saja. Dengan melakukan instalasi XAMPP komputer anda akan otomatis diinstal Apache Server, PHP, MySQL, dan phpMyAdmin.


Instalasi Joomla

Persiapan sebelum melakukan instalasi Joomla

1. Ekstrak file Joomla 1.0.3 ke folder C:\apachefriends\xampp\htdocs\Joomlaku.
2. Aktifkan Apache Server, PHP, dan MySQL. Jalankan aplikasi XAMPP yang telah terinstal dan tekan tombol Start pada Apache dan MySql hingga tombol Start berubah menjadi Stop. Kalau tidak bisa, coba Anda non-aktifkan IIS atau Personal Web Server Anda.

Setelah semua telah disiapkan, mari kita mulai instalasi Joomla. Ikuti langkah-langkah di bawah ini:

1. Buka web browser dan ketik http://localhost/Joomlaku. Web Anda akan menampilkan tampilan seperti di gambar ini.
2. Pastikan semua persyaratan instalasi terpenuhi dan tekan tombol Next>> untuk melanjutkan.
3. Di halaman ini akan ditampilkan perjanjian yang harus Anda patuhi jika ingin menggunakan Joomla. Tekan tombol Next>> untuk melanjutkan.
4. Masukkan konfigurasi database MySQL.

Keterangan konfigurasi database MySQL:
* Host Name, nama host name, biasa diisi dengan localhost
* MySQL User Name, username yang digunakan untuk mengakses MySQL, biasa diisi root atau username yang disediakan web hosting Anda
* MySQL Password, password yang digunakan untuk mengakses MySQL, gunakan password untuk keamanan web Anda.
* MySQL Database Name, nama database untuk Joomla.
* MySQL Table Prefix, awalan yang digunakan untuk tabel database Anda.

Bila sudah diisi semua lanjutkan dengan klik tombol Next>>. Sesaat kemudian akan muncul pesan yang meminta konfirmasi konfigurasi yang telah Anda masukkan. Bila semua sudah benar, tekan tombol OK.
5. Di halaman ini Anda diminta memberi nama web Anda. Berilah nama dan tekan tombol Next>> untuk melanjutkan.
6. Silahkan lakukan konfirmasi URL, direktori absolut, e-mail admin dan direktori chmods. Masukkan alamat e-mail dan password untuk admin anda. Tekan Next>>.
7. Selamat Anda telah berhasil melakukan instalasi Joomla Jangan lupa untuk menghapus direktori installation di direktori Joomla Anda.


Halaman Web dan Administrator

Setelah berhasil melakukan instalasi mari kita coba mengakses web Joomla.

1. Kunjungi web Joomla Anda di alamat http://localhost/joomlaku/. Jika Anda belum menghapus direktori installation di direktori Joomla Anda maka web Anda dan web administrator akan menampilkan pesan peringatan.
2. Kunjungi web Joomla Anda di alamat http://localhost/joomlaku/administrator.
3. Login dengan username ‘admin’ dan password admin Anda.

Update Database with OOP


Penggunaan seleksi untuk menampilkan database menggunakan OOP telah penulis jelaskan sebelumnya. OOP dalam php 5 ini telah terbukti ampuh dalam menghasilkan source code yang efisien untuk menangani manajemen database. Tentu hambar rasanya jika penggemar sayur asam memakannya tanpa ada sedikitpun rasa garam di dalamnya. Nah begitu juga dengan artikel penulis sebelumnya, menampilkan database dengan OOP masih belum cukup tanpa pengetahuan selanjutnya mengenai bagaimana melakukan update dan delete record pada database menggunakan OOP ini. Oleh karena itu di sinilah penulis akan jelaskan sedikit penggunaan OOP untuk menghandle database. Untuk mempelajarinya mari buat databasenya terlebih dahulu :

-- simple cms database
create database simplecms ;
use simplecms  ;
create table article( id int(4) primary key auto_increment, category varchar(225), article_title varchar(225) );
insert into article values('','web design', 'Web Design Make Over with CSS');
insert into article values('','graphic design','CorelDraw the handy tool');
insert into article values('','flash animation','Make a splash water animation');

Ya, langsung saja penulis berikan contoh kasusnya, script intinya, index.php, dan biasanya script seperti ini digunakan sebagai halaman admin. Tentunya admin disini dapat melakukan update dan delete record database.

<?php
$mysqli = new mysqli("localhost", "root", "", "simplecms");
if (mysqli_connect_errno())
{
    echo("Nggak bisa konek : ".mysqli_connect_error());
    exit();
}
$cat = $mysqli->prepare("select id, category, article_title from article order by id");
$cat->execute();
$cat->bind_result($id, $category, $article_title);
?>

<html>
<head>
<title>Database in OOP Way ; Seleksi Data dengan mySqli</title>
</head>
<body><table border='0' width='40%'>

<caption><h3>SIMPLECMS CONTROL PANEL :</h3></caption>
<tr><th>No</th><th>Category</th><th>Title</th></tr>
<?php
while ($cat->fetch())
    echo "<tr><td>".$id."</td><td>".$category."</td>"."<td>".$article_title."</td><td><a href=?yang_ini_diedit=ya&id_nya="
    .$id.">EDIT</a></td><td><a href=?yang_ini_didelete=ya&id_nya=".$id.">DELETE</a></td></tr>"; 
?>
</table>
<hr width='39%' align='left'/>
<?php
if ($_REQUEST['yang_ini_didelete'] == 'ya')
{
    echo "Wah... record ".$_REQUEST['id_nya']." bener-bener mau di hapus ya ?" ;
    echo "<form action='?delete_langsung_lah=ya' method='POST'>
            <table><input type='hidden' name='id' value=".$_REQUEST['id_nya'].">
            <tr><td><input type='submit' value='ya' name='submit'></td></tr></table>
            </form>";
}

else if ($_REQUEST['delete_langsung_lah'] == 'ya')
{
    $id_delete = $_POST['id'];
    $cat = $mysqli->prepare("delete from article where id=?");
    $cat->bind_param('i',$id);
    $id = $id_delete;
    $cat->execute();
    echo "Database berhasil dihapus ... Anda akan diredirect dalam 2 detik";
    echo "<meta http-equiv='refresh' content='2;url=index.php'>";
}

else if ($_REQUEST['yang_ini_diedit'] == 'ya')
{       
    $cat = $mysqli->prepare("select id, category, article_title from article where id=?");
    $cat->bind_param('i',$id);
    $id = $_REQUEST['id_nya'];
    $cat->execute();
    $cat->bind_result($id, $category, $article_title);
    echo "<caption>Yang mau diedit...</caption>";
    echo "<table><form action='?update_langsung_lah=ya' method='POST'>";
    while ($cat->fetch()) {
    echo "<tr><td>Category : </td><td><select name='category'><option value=".str_replace(" ","_",$category).">".$category."</option></select></td></tr>";
    echo "<tr><td>Title : </td><td><textarea name='title' cols='51' rows='7'>";
    echo $article_title ; }
    echo "</textarea></td></tr>";
    echo "<input type='hidden' name='id' value=".$_REQUEST['id_nya'].">";
    echo "<tr><td></td><td><input type='submit' name='submit' value='update'></td></tr>";
    echo "</form></table>";
}

else if ($_REQUEST['update_langsung_lah'] == 'ya')
{
    $category = str_replace("_"," ",$_POST['category']);
    $title = $_POST['title'];
    $id =  $_POST['id'];
   
    $cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");
    $cat->bind_param('i',$id);
    $cat->execute();
   
    echo "Database berhasil diupdate ... Anda akan diredirect dalam 2 detik";
    echo "<meta http-equiv='refresh' content='2;url=index.php'>";
   
}
?>

</body>
</html>

Tampilannya nanti akan seperti ini :


Potongan source code di bawah ini digunakan untuk menampilkan database dengan cara OOP. Seperti yang pernah penulis jelaskan dalam artikel pertama mengenai penggunaan OOP dalam PHP 5 untuk memanage database.

$mysqli = new mysqli("localhost", "root", "", "simplecms");
if (mysqli_connect_errno())
{   
    echo("Nggak bisa konek : ".mysqli_connect_error());
    exit();
}
$cat = $mysqli->prepare("select id, category, article_title from article order by id");
$cat->execute();
$cat->bind_result($id, $category, $article_title);

Penjelasan detilnya dapat dilihat di artikel sebelumnya. Di sini penulis akan menjelaskan beberapa fungsi baru OOP dalam PHP 5. Lihat kembali fungsi tersebut pada baris ini :
 
...
$cat = $mysqli->prepare("delete from article where id=?");
$cat->bind_param('i',$id);
$id = $id_delete;
$cat->execute();
echo "Database berhasil dihapus ... Anda akan diredirect dalam 2 detik";
echo "<meta http-equiv='refresh' content='2;url=index.php'>";
...

Di dalam barisan tersebut terdapat kalimat pembentuk query sql yang sedikit berbeda, yaitu :
$cat = $mysqli->prepare("delete from article where id=?");

Terdapat tanda '?' sebagai perwakilan dari parameter syarat. Tanda tanya ini nantinya akan didefinisikan sebagai satu syarat dalam satu variable menggunakan fungsi bind_param(), sehingga jika sebuah query didefinisikannya  seperti ini :
cat = $mysqli->prepare("delete from article where id=?");

maka, harus terdapat fungsi bind_param() sesudahnya, seperti :
$cat->bind_param('i',$id);

Sehingga 2 baris kalimat tersebut sama halnya dengan query biasa, jika dalam query biasa maka hasilnya seperti ini :

$cat = "delete from article where id='$id'";
   
Setali 3 uang. :D. Ya ya ya ... tapi coba perhatikan kembali fungsi bind_param pada kalimat tersebut :
$cat->bind_param('i',$id);

Dalam parameter pertama fungsi bind_param di isi dengan 'i'.
Kenapa dengan 'i' ?, i ini adalah perwakilan dari variable yang bertipe integer. Dalam query seperti ini delete from article where id='$id', mustahil jika mengisinya dengan string, kenapa ? lihat struktur tablenya. :D, hasilnya nanti akan 0 jika menggunakan string. Adapun type dari parameter tersebut antara lain yaitu :

i : ini untuk variable yang bertipe integer
s : ini untuk variable yang bertipe string
d : ini untuk variable yang bertipe double
b : ini untuk variable yang bertipe blob.

Ya kita lompat ke baris berikutnya :
$id = $id_delete;
Statement ini hanyalah sebuah assignment, memenuhi syarat sebelumnya.

Selanjutnya adalah menjalankan querynya, eksekusi langsung :D , yakni :
$cat->execute();

Kembali muncul satu pertanyaan, bagaimana jika menggunakan update database dalam oop ? Silahkan lihat kembali baris di bawah ini :

$cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");
$cat->bind_param('i',$id);
$cat->execute();

Sepertinya sudah jelas ya. :).

Definisikan terlebih dahulu querynya :
$cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");

Penuhi syarat query tersebut :
$cat->bind_param('i',$id);   

Jalankan querynya :
$cat->execute();

Sudah jelas ya?  Jika masih ada yang ditanyakan silahkan layangkan email anda ke sini :
alkemail@gmail.com.
Script diatas dapat di download di sini …


Dedicated for ilmuwebsite e-learning community.


Sumber dari situs Ilmu Website dalam kategori php kuliah dengan judul Update, Delete Database with OOP

Tab CSS Menu Sederhana



Suka dengan CSS menu? cobalah membuat CSS menu anda sendiri.

Berikut ada contoh membuat menu CSS sederhana, untuk proses belajar anda bisa memodifikasinya :)
Code nya:

------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
         <meta
http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
         <title>DHTML Tab,JavaScript Tab</title>
    <style type="text/css">
         #tabs {display: block;float: left;width: 160px;}
         .panel
{border: solid 1px #D8D8D8;border-top: none;background-color:
#FFFFFF;padding: 0px;width: 158px;overflow: auto;clear: left;}
         .tab_bdr{padding:
0px;width: 158px;border: 0px;border: 1px solid #645DB5;height:
4px;margin:0px;background: #645DB5;clear: left;font-size: 0px;}
         .tab{font-family:tahoma;
FONT-SIZE:
11px;background:#BA0808;color:#FFFFFF;cursor:pointer;border:none;border-bottom:
1px solid #FFFFFF;height:19px;padding-top:3px;margin:0px;width:60px;
float:left; text-decoration:none;}
         .tab_sel{font-family:tahoma;
FONT-SIZE:
11px;background:#645DB5;color:#FFFFFF;cursor:pointer;border:none;border-bottom:1px
solid #645DB5;height:19px;padding-top:3px;margin:0px;width:60px;
float:left; text-decoration:none;}
    </style>
    <script language="JavaScript" type="text/javascript">
    var panels = new Array('panel1', 'panel2'); // IDs of the content panels must be put here
    var tabs = new Array('tab1', 'tab2'); // IDs of the tabs must be put here
    function displayPanel(nval)
    {
         for(i = 0; i < panels.length; i++)
         {
            
document.getElementById(panels[i]).style.display = (nval-1 == i) ?
'block':'none';
            
document.getElementById(tabs[i]).className=(nval-1 == i) ?
'tab_sel':'tab';
         }
    }
    </script>
    </head>
    <body>
         <div id="tabs">
            
<div id="tab1" class="tab_sel" align="center" onClick="javascript:
displayPanel('1');">Tab&nbsp;1</div>
            
<div id="tab2" class="tab" style="margin-left:1px;" align="center"
onClick="javascript: displayPanel('2');">Tab&nbsp;2</div>
         </div>
   
<div class="tab_bdr"></div> <!-- This is the div used to
show a thick border below the tab and above the panel-->
         <div
class="panel" id="panel1" style="display: block">1</div>
<!-- The display panels for the respective tabs can be put here
-->
         <div class="panel" id="panel2" style="display: none">2</div>
    </body>
</html>

------------------------------

contoh jadi: http://www.ilmuwebsite.com/test/css-tab.htm
Terimakasih

Sumber dari situs Ilmu Website dalam kategori html dengan judul Tab CSS Menu Sederhana

Wednesday, January 14, 2009

Tutorial HTML - Video Youtube di Blog


Apakah anda pernah melihat suatu website dengan tambahan video dari youtube? Hmm... terlihat bagus kan? Anda bisa menambahkan nya dengan cara menambahkan script HTML embed video tersebut, caranya?
  1. Anda buka Youtube.com
  2. Search video yang anda inginkan
  3. Setelah  itu copy code embed nya
  4. Paste di halaman website anda
Perlu anda ketahui untuk kecepatan akses nya, kalau visitor mengakses video youtube website anda dari warnet, kemungkinan agak lambat.

------
Selamat menikmati :D~~
Sumber dari situs Ilmu Website dalam kategori html dengan judul Video Youtube di Website Anda

Tuesday, January 13, 2009

Tutorial HTML - Membuat Box Style Link Cantik CSS

Membuat Box Style Link Cantik ala dr.emi dengan CSS

Jimanee nDesign box link cantik dengan menggunakan CSS ?

Pernah liat page link nyang ada di :
    http://www.dremi.info/tutorial/photoshop-forum.php ???

nah bagian paging na gw pake CSS bwat bikin box link na, kali ini kita bikin nyang sama tapi dengan style CSS nyang berbeda.

Simple aja mulai dengan style ke gini:

 

<style>
    #pagin a
    {
    font-family:Tahoma;
    font-size:11px;
    display:block;
    float:left;
    cursor:pointer;
    color:#00c;
    text-decoration:none;
    display:inline-block;
    border:1px solid #ccc;
    padding:.3em .7em;
    margin:0 .38em 0 0;
    text-align:center
    }
    #pagin a:hover
    {
    background:#f0f7e8;
    border:1px solid #83bc46
    }
    #pagin a.sel
    {
    color:#333;
    font-weight:normal;
    background:#f0f7e8;
    cursor: default;
    border:1px solid #83bc46
    }
    </style>

 

Tros terapkan ke dalam halaman HTML lu:

 

<div id="pagin">
    <a class="sel">1</a><a href="http://csslovers.co.cc">2</a>
    <a href="http://dremi468.blogspot.com">3</a>
    <a href="http://dremi.info/tutorial/photoshop-forum.php">4</a>
    </div>

heehe jadi dah, lagi lagi tutorial CSS na singket !!! biarin weks :P !!

Penasaran kan mao liat hasilna ?? klik ajah link dibawah ini, bwat preview hasilna:

http://www.dremi.info/web/tips/css-box-style-design.html

 

Tros kalo mao download disini:

http://www.ziddu.com/download/1774822/css-box-style-design.rar.html

 

Thanks, dr.emi

Thanks to brotherhood and sister of ilmuwebsite.com

Bwat ephi.... opo iku boooyoooo ??????? gyaahahahahahhahahaha :P


Sumber dari situs Ilmu Website dalam kategori html dengan judul Membuat Box Style Link Cantik ala dr.emi dengan CS

Belajar PHP - Redirect Halaman Kompleks


Lagi-lagi penulis coba untuk membayar hutang. :D. Hutang mengenai
tutorial yang membahas redirect halaman secara kompleks. Sebelum menuju
inti pembahasan, penulis akan beri penjelasan apa dan bagaimana contoh
kasus dari redirect halaman secara kompleks ini.
Mungkin ada
sebagian orang yang pernah mencoba searching di google mengenai artikel
yang dia cari, namun ketika mendapatkan artikel tersebut, web tersebut
hanya membolehkan user yang sudah teregistrasi saja yang dapat
mengakses artikel tersebut. Maka, langkah selanjutnya yang dilakukan
oleh user tersebut adalah meregistrasikan dirinya untuk menjadi member
pada website tersebut, pada form yang letak halamannya berbeda dengan
artikel yang dicari. Namun setelah proses registrasi selesai, dan
proses login berhasil, user secara otomatis di redirect ke halaman yang
dia tuju sebelumnya. Ini adalah contoh kecil dari redirect kompleks.
Contoh lainnya, ketika user yang akan mencoba untuk mendownload sebuah
file pada halaman tertentu di suatu website, user tersebut diharuskan
untuk login terlebih dahulu, tapi setelah login user langsung
diredirect secara otomatis menuju halaman download. :D. Pada tutorial
kali ini, penulis akan coba jawab itu berbagai persoalan tersebut. Mari
.. mari ... :D

Ya, persiapkan terlebih dulu databasenya :

create database simple_cms ;
use simple_cms ;
create table user( id int(5) PRIMARY KEY auto_increment, username varchar(20), password varchar(50));
create table article (id int(5) PRIMARY KEY auto_increment, penulis varchar(20), judul varchar(200), isi text);

insert into user values ('','admin',md5('admin'));
insert
into article values('','Loka Dwiartara','Kegantengan
Abadi','Kegantengan abadi terpancar dari kekerenan sejati. Aura
kegantengan selalu terpancar dari kerennya seseorang. :D. Kadang banyak
yang berpikir keindahan secara fisik itu melebihi dari segalanya. Kita
tahu bahwa b_scorpio itu tidak ganteng, tapi setidaknya tolong hargai
dia :D'),  ( '','Loka Dwiartara','PHP is powerfull easy
language ... ', 'Kekerenan php dalam menangani pengembangan sistem
informasi berbasis website patut di acungi 4 jempol kaki dan tangan,
kehebatannya melebihi b_scorpio yang tidak pandai menggaet i#a, wanita
yang dia suka. ;D~~~, peace ... damai ... ') ;


Selanjutnya, config.php :
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "simple_cms" ;

$connect = mysql_connect($host, $username, $password);
mysql_select_db( $database , $connect) or die ("MySQL is error!!");
?>

Kemudian, halaman login.php :

<html>
<head><title>Login Page ...!</title></head>
<body>
<form action=cek.php method=POST>
<table
border=0
bcolor=#DFDFDF><tr><td>username</td><td><input
type=text name=username></td></tr>

<tr><td>password</td><td><input type=password name=password></td></tr>
<tr><td></td><td><input type=submit name=submit value=submit></td></tr>
</table>
</form>
</body>
</html>

Selanjutnya, file cek.php, disinilah redirect kompleks halaman berada :

<?php
session_start();
require_once "config.php";

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
{
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $session_halaman = $_SESSION['halaman'];

    $cekuser = "select username, password from user where username = '$username' and password = '$password'";
    $query_cekuser = mysql_query($cekuser);
    $exist = mysql_num_rows($query_cekuser);

    if ($exist >= 1)
    {
        $_SESSION['user'] = session_id();
        header("location: index.php?view=page&id=$session_halaman");
    }
    
    else
    {
        header("location: login.php");
    }

}

?>

Dan halaman index.php, untuk menampilkan artikelnya :

<?php
session_start();
require_once "config.php";
if (!ISSET($_REQUEST['id']) )
{
    $list_article = "select * from article";
    $query_list_article = mysql_query($list_article);
    echo "<h3>Article Today</h3>";    
    if (ISSET($_SESSION['user']))
    {
  
     echo "</p><b>Welcome back User</b>. Do you want
<a href=logout.php>logout</a> ? :D~~ </p>";

    }
    
    
    while ($showlist = mysql_fetch_array($query_list_article))
    {    
        $id = $showlist['id'];
        $penulis = $showlist['penulis'];
        $judul = $showlist['judul'];
        $isi = $showlist['isi'];
        $panjangartikel = strlen($isi);
        $isi_dipotong = substr($isi, 0, 60);
        $isi_fix = substr($isi, 0, strrpos($isi_dipotong, " "));
        $isi_fix .= "...";
        
        echo "<b>$judul</b><br>
              Oleh : $penulis<br>
              <p>$isi_fix <a href=index.php?view=page&id=$id>selengkapnya</a></p>
              <hr width=45% align=left>";
              
    }
}

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

    $id = $_REQUEST['id'] ;
    if (!ISSET($_SESSION['user']))
        {
        $_SESSION['halaman'] = $id ;
        echo "Login dulu dong <a href=login.php>di sini</a>";
        }
        
    else
        {
        $list_article = "select * from article where id = '$id' ";
        $query_list_article = mysql_query($list_article);
    
        while ($showlist = mysql_fetch_array($query_list_article))
            {    
            $id = $showlist['id'];
            $penulis = $showlist['penulis'];
            $judul = $showlist['judul'];
            $isi = $showlist['isi'];
        
            echo "<h3>Article Today</h3>";
            echo "<b>$judul</b><br>
                    Oleh : $penulis<br>
                    <p>$isi</p>
                    <hr width=100% align=left>";
              
            }
            
            echo "<a href=index.php?view=page>Kembali...</a>";
        }
    
}

?>


Terakhir adalah, file logout.php :

<?php
session_start();
unset($_SESSION['user']);
session_destroy();
header("location: index.php");
?>

Hmmm..
panjang juga scriptnya. :D~ Penulis coba jelaskan beberapa baris yang
penting saja. Lihat ke halaman index.php, di situ terdapat baris
seperti ini  :

....
else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

    $id = $_REQUEST['id'] ;
    if (!ISSET($_SESSION['user']))
        {
        $_SESSION['halaman'] = $id ;
        echo "Login dulu dong <a href=login.php>di sini</a>";
        }
        

...

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
Ini berarti, jika user mengklik salah satu artikel di halaman index,

if (!ISSET($_SESSION['user']))
dan jika user belum login,

$_SESSION['halaman'] = $id ;
maka, rekam halaman yang akan dibuka, simpan halaman tersebut ke dalam variable session.

echo "Login dulu dong <a href=login.php>di sini</a>";
Persilahkan user untuk login dulu.

Nah selanjutnya, jika user telah login maka artikel langsung di perlihatkan seluruhnya, seperti pada baris ini

....
else
        {
        $list_article = "select * from article where id = '$id' ";
        $query_list_article = mysql_query($list_article);
    
        while ($showlist = mysql_fetch_array($query_list_article))
            {    
            $id = $showlist['id'];
            $penulis = $showlist['penulis'];
            $judul = $showlist['judul'];
            $isi = $showlist['isi'];
        
            echo "<h3>Article Today</h3>";
            echo "<b>$judul</b><br>
                    Oleh : $penulis<br>
                    <p>$isi</p>
                    <hr width=100% align=left>";

....

Kemudian untuk script cek.php

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
Jika user telah mengisi password dan username,

....

$cekuser = "select username, password from user where username = '$username' and password = '$password'";
maka buat sebuah query yang akan menyeleksi apakah username dan passwordnya ada.

...

$query_cekuser = mysql_query($cekuser);
Jalankan querynya ...

$exist = mysql_num_rows($query_cekuser);
Apakah username dan password yang dimasukkan tersebut ada dalam database?

if ($exist >= 1)
{
Jika ada,

$_SESSION['user'] = session_id();
maka buat session baru untuk user

header("location: index.php?view=page&id=$session_halaman");
Redirectkan
si user ke halaman yang dia tuju sebelumnya ... Ya, disinilah letak
dari redirect kompleksnya. :D. Cukup manfaatkan saja session yang ada
untuk meredirect user ke halaman yang dituju.

}

else
{
header("location: login.php");
jika username dan password salah, persilahkan user untuk login ulang.

}

}
Untuk screenshoot demonya seperti ini :


Ini adalah halaman pertama kali


Ketika salah satu link akan diklik, maka user diperintahkan untuk login terlebih dahulu


Setelah login berhasil maka user secara otomatis langsung di redirect ke halaman tujuan yang awal.


Yup,
penulis kira sudah cukup jelas untuk redirect kompleks. Jika ada yang
ditanyakan silahkan kirim email ke alkemail@gmail.com. Selamat mencoba.


Script tersebut dapat di download di sini
http://networkandgame.890m.com/ilmuwebsite/article/redir-complex-by-alk.zip

Greetz
: b_scorpio, abuzahra, peterpanz, kandar, phii_, syahrilrohman, ivan,
dr.emi, safril, najwa. Special for jojo. :). Hi, Jo! Have a nice day.


Sumber dari situs Ilmu Website dalam kategori php kuliah dengan judul Redirect Halaman Kompleks

Belajar PHP - Operasi String


Operasi string begitu penting dalam dunia per-php-an. Kenapa begitu penting ? Karena melakukan pekerjaan dengan php, baik itu membangun suatu sistem informasi, membuat fasilitas searching di web, dan berbagai hal lain yang berhubungan dengan web development tak lepas dari operasi string. Begitu banyak fungsi operasi string yang ada, dan banyak pula fungsi string yang sering digunakan, sehingga penulis perlu membaginya menjadi beberapa artikel mengenai operasi string ini. Untuk artikel bagian pertama penulis akan menjelaskan 2 fungsi yang memiliki tugas tambahan selain dari mencari string. Antara lain :

  • substr()
  • strstr()

Substr(), memiliki fungsi untuk mengambil satu, atau banyak karakter dari suatu variable. Implementasinya seperti mengambil karakter yang dihasilkan dari fungsi DATE() –nya mysql. Contoh penggunaannya adalah sebagai berikut :

<?php
$tanggal = '012409';

$bulan = substr($date, 0, 2);
$hari = substr($date, 2, 2);
$tahun = substr($date, -2);

echo "$hari/$bulan/$tahun";
?>

Hasilnya adalah :
24/01/09

Penjelasannya adalah sebagai berikut :

$bulan = substr($date, 0, 2);
Ambil 2 karakter dari digit terdepan, hasilnya adalah 01

$hari = substr($date, 2, 2);
Ambil 2 karakter dari digit ke 3. Karena string  memiliki urutan awal 0, maka angka 2 pada variable $tanggal memiliki posisi di urutan ke 2. Hasilnya adalah 24.

Untuk membuktikannya :
<?php
$tanggal = '012409';
echo $tanggal[2];
?>

hasilnya adalah :
2

Dan yang terakhir adalah
$tahun = substr($date, -2);
Ini berarti ambil 2  karakter dari belakang. Hasilnya adalah 09.


Strstr(),  fungsi ini digunakan untuk mengembalikan semua string dibelakang string yang dicari. Misalnya ada sebuah kalimat :
"Ketampanan abadi terpancar dari Kegantengan sejati . --Al-k",
karakter yang dicari adalah "--",
maka hasil dari fungsi strstr() adalah "--Al-k"

Contoh penggunaanya :

<?php
$kalimat= "Ketampanan abadi terpancar dari Kegantengan sejati . --Al-k";
$tanda = '--';
$yangdicari = strstr ($kalimat, $tanda);
echo $yangdicari;
?>

Hasilnya adalah :
--Al-k

Implementasi penggunaan strstr() contohnya seperti ini :
<?php
$kalimat= "Ketampanan abadi terpancar dari Kegantengan sejati . --Al-k";
$tanda = '--';

if ($yangdicari = strstr ($kalimat, $tanda)) {
   echo 'Ungkapan yang keren tadi di buat oleh '."'". substr ($yangdicari , strlen ($tanda))."'";
} else {
   echo "Nggak ada ungkapan tuhh !!";
}
?>

Penjelasannya adalah sebagai berikut :

if ($yangdicari = strstr ($kalimat, $tanda)) {
jika karakter yang di cari dalam hal ini $tanda ada pada  string $kalimat, maka kembalikan string yang berada di belakang tersebut kedalam variable $yangdicari.

echo 'Ungkapan yang keren tadi di buat oleh '."'". substr ($yangdicari , strlen ($tanda))."'";

bagian intinya adalah substr ($yangdicari , strlen ($tanda))

Jika di ubah kedalam nilai sebenarnya adalah
substr ("--Al-k" , 2 )

tampilkan string yang dicari tersebut dengan melewatkan tanda --.

Hasilnya adalah :
Al-k

Sehingga hasil keutuhan dari script

<?php
$kalimat= "Ketampanan abadi terpancar dari Kegantengan sejati . --Al-k";
$tanda = '--';

if ($yangdicari = strstr ($kalimat, $tanda)) {
   echo 'Ungkapan yang keren tadi di buat oleh '."'". substr ($yangdicari , strlen ($tanda))."'";
} else {
   echo "Nggak ada ungkapan tuhh !!";
}
?>

Adalah :

Ungkapan mantap tadi di buat oleh 'Al-k'

Cukup mudah ya ? Cukup narsis juga ! :D

Artikel Lebih dalam dengan operasi string bagian pertama saya cukupkan sampai disini. Untuk bagian ke 2 dan terakhir akan penulis jelaskan di belajar php berikutnya.

Greetz : b_scorpio, abuzahra, peterpanz, kandar, phii_, syahrilrohman, ivan, dr.emi, safril, najwa, Lapak-online Team!


Sumber dari situs Ilmu Website dalam kategori php kuliah dengan judul Lebih dalam dengan operasi string bag.1

Tuesday, May 27, 2008

Apakah telapak tanganmu berkeringat, hatimu berdebar kencang dan suaramu tercekat di dadamu? Itu bukan Cinta, itu NGAREP.

Apakah kamu merasa terdorong untuk tidak melepaskan pandangan atau mata darinya setiap saat? Itu bukan Cinta, itu NAFSU.

Apakah kamu menginginkannya karena kamu tahu ia ada di sana dan bersama-samanya pasti terasa menyenangkan? Itu bukan Cinta, itu KESEPIAN.

Apakah kamu mencintainya karena itu yang diajarkan semua orang yang kamu kenal? Itu bukan Cinta, itu LOYALITAS.

Apakah kamu tetap tinggal untuk pengakuan cintanya karena kamu tidak ingin melukai hatinya? Itu bukan Cinta, itu BELAS KASIHAN.

Apakah kamu ada disana karena dia mencium atau memegang tanganmu? Itu bukan Cinta, itu KURANG PEDE.

Apakah kamu menjadi miliknya karena pandangan matanya membuat hatimu melompat? Itu bukan Cinta, itu TERGILA-GILA.

Apakah kamu memaafkan kesalahannya karena kamu memperdulikannya? Itu bukan Cinta, itu PERSAHABATAN.

Apakah kamu mengatakan padanya bahwa setiap hari hanya dia yang kamu pikirkan? Itu bukan Cinta, itu DUSTA.

Apakah kamu rela memberikan seluruh hal yang kamu senangi untuk kepentingan dirinya? Itu bukan Cinta, itu KEMURAHAN HATI.

Friday, February 03, 2006

10 ATURAN MAIN Teman Tapi Mesra ( TTM )

Punya temen curhat yg bisa diajak nemenin nonton, dugem malem
minggu-an or sekedar nebeng pulang kantor, tapi tetep bisa ngecengin yg laen
emang seru, asal tau aturan mainnya!!!!

Nih die aturannye :

1. JUST FOR FUN

Buang jauh-jauh khayalan romantis qta dgn si dia . Soalnya rugi banget
kalo blom apa-apa qta udah berharap yg muluk, ujung-ujungnya bisa jadi
makan hati

TTM-an juga berarti nggak "melegalkan" qta tuk ngambek kalo si dia
tiba-tiba menghilang ato gak ada disamping qta saat dibutuhkan. Cukup dgn
menikmati perhatiannya, SMSnya yg lucu2, telepon iseng buat ngobrol
kalo lg nganggur. Begitu jg sebaliknya, dia ga berhak nuntut qta
bersikap sbg pacarnya. So jgn tempatkan diri sbg pacarnya. INGAT-INGAT
HUBUNGAN INI CUMA BUAT SENENG2 DOANG TITIK!!!!!

2. SIAP-SIAP DIGOSIPIN

Gosip qta dan dia pacaran mungkin bakal beredar secepat jamur tumbuh
dimusim ujan karena qt slalu berdekatan dgnnya. Bisa jadi akibatnya qt
bakal turun pasaran dan "yang" mo ngedeketin qt jadi mikir tiga belas
kali (banyak amat…). Jangan ambil pusing soal ini, but kalo ada yg mo
konfirmasi, jawab aja "TIDAK" dgn tegas. Anggap saja qt selebritis yg
sedang punya pacar gelap dan paparazi disana siap melumat qt kalo
rahasia ini sampai bocor.

3.CEMBURU? NO WAY !

Jangan beri kesempatan rasa cemburu menguasai hati dan pikiran qta.
Dia mo deket ama gebetannya kek ato mo jadian sekalipun, qta ga perlu
sakit hati. Toh qta jg bisa pergi dgn siapa dan kapan saja qta mau.
Emang sich, yg namanya TTM pasti ada rasa sayang dan peluang buat cemburu
gede banget

Tapi gimana kalo dia yg jadi cemburuan?. Ambil sikap tegas n bilang
terus terang, " HEI, aku sama kamu khan cuman temen, kamu nggak berhak
cemburu!!!". HABIS PERKARA.

4.TETEP LIRIK-LIRIK YANG LAEN, DONG!!!!

Biar punya TTM jangan sampai qt melupakan tujuan qt " HUNTING". Coz,
secara de jure n de facto qt masih JOMBLO lho….Artinya , usaha ngeceng
n TP alias tebar pesona kudu musti tetep jalan terus atuh !.Buka
pintu hati qta selebar mungkin buat cintalaen yg bakal mampir.

5. HAPPY BEING SINGLE

Pastikan, saat qta memutuskan hanya TTM-an pd saat itu jg qt sedang
tdk ada masalah dgn status men jomblo. Jadikan TTM sbg kesempatan tuk
mengenal lawan jenis saja, bukan untuk menjadi komitmen. Pastikan dia jg
tau soal ini, supaya nggak membuai qta dgn janji2 palsu. So, kalo
skrg lagi ngebet banget pengen pacaran, mendingan lupain aja deh niat
TTM-an. Ujung2nya cuma bikin sakit hati.

6. JANGAN TERLALU BERHARAP, DECH!!

Jodoh itu ditangan Tuhan, jadi bukalah mata qta selebar-lebarnya.
Nggak perlu ngotot krn udah deket n saling mengenal lantas qt n dia pasti
berjodoh. Sering banget justru apa yg qt mau bukanlah yg qt butuhkan.
Bagaimanapun usaha qta buat mendapatkan seseorang kalo si dia bukan
jodoh qta, nggak akan pernah dapat. Begitu jg sebaliknya, kalo sudah
jodoh nggak perlu dikejar jg datang sendiri.

7. HINDARI JANJI PALSU !

Janji berarti memberikan harapan. Makanya hindarilah saling memberi
janji, apalagi qt tau kalo itu nggak mungkin terwujud. Saling memuji
sich boleh, tapi kata2 konyol " Kalo sampai usia 30 th qt blom ktemu
orang yg tepat, qt merried yuk…!" mendingan dibuang jauh2.

8.KADO-KADO NETRAL

Si dia ulang taon, boleh jg qt kasih kado tapi pilih yg "netral".
Nggak perlu dech memberi kaos lucu dengan sulaman khusus or gambar khusus
yg qt kerjakan selama berminggu-minggu lengkap dgn inisial nama qt n
dia. It's too much, darling….!

9. ATURAN FISIK

Sebaiknya aturan ini ditegaskan dari awal krn cukup sensitif lho.
Paling aman hindari semua sentuhan fisik yg sengaja tuk memberi rasa
nyaman. Kecuali kalo secara reflek qt memukul lengan dia pas lg bercanda or
sekedar " cipika-cipiki"alias cium pipi kanan-cium pipi kiri pas dia
ulang taon itu sih sah-sah aja. Tapi kalo dia mulai memegang tangan qt
pas nonton or ngajak ciuman, waduh…nanti dulu dah…..!!!!

10. TAHU KAPAN HARUS BERHENTI

Jika perasaan qt udah nggak "normal" lg, bilang terus terang dgn dia n
tanyakan perasaannya. Jika ternyata si dia biasa-biasa aja, itu berarti
udah saatnya masa TTM-an diakhiri. Sama halnya kalo qt or dia udah
punya pacar,nggak perlu lg ada TTM-an. Nggak mau jg khan kalo pacar qt
punya TTM.

Monday, January 02, 2006

Naek Gunung Gede


Kemaren kita bersama-sama melakukan pendakian ke gunung Gede Pangrango sekaligus merayakan pergantian tahun baru , perjalanan biarpun jauh dan melelahkan tapi lumayan seru meski hampir terlambat sampe lokasi perkemahan jam 23.40 gara2 ada teman yang hilang kesasar dalam konvoi pas masuk kota Sukabumi , kejadian lucu tujuan kita pas naek adalah niatnya sampe ke puncak tapi berhubung salah ambil rute malah nyasar ke air terjun, yaudah skalian terjun masuk air bersama sampe mengigil kedinginan brrr dan disana pula watak asli temen gw kliatan mengeluarkan suara2 merdu yg mirip bgt dengan monyet :)) , it was funny i thought, btw i hope moga2 ada kesempatan lagi buat naek gunung bareng2 dengan temen2 sekantor tahun ini, amien