Archive for the Category »Ilmu Komputer «

Ketika Dosen MIT Mengajarkan “Paijo Algorithm” Kepada Mahasiswanya

Saya masih ingat kata salah seorang rekan, maafkan saya lupa namanya. Bahwa salah satu yang membedakan antara jurusan Ilmu Komputer dengan jurusan IT lain (semacam teknik informatika), ada pada porsi science-nya. Ketika program studi lain lebih berorientasi  kepada dunia industri, dunia pembuatan software dan sebagainya, di ilmu komputer, hal yang lebih ditekankan ada pada sisi sciencenya, ada pada sisi keilmuannya. Ibarat di sebuah pabrik, orang-orang ilkom berada di bagian RnD, orang-orang IT lain, ada pada bagian unit Produksi, Quality Control, dlsb.

Pendek kata, di Ilmu komputer, “SEHARUSNYA” kita lebih ditekankan menjadi seorang ilmuwan, daripada seorang programmer, system analyst, network administrator, dsb. Tak heran jika dalam kurikulum ilkom porsi terkait dunia usaha memang tak terlalu ditekankan, meski untuk kesana, otomatis sudah tersedia dengan sendirinya dengan seabrek mata kuliah yang mendukungnya. Toh tak perlu saya bahas mengingat anak ilkom tentu tahu bahwa secara teori dan praktek di lapangan pula, dalam soal buat membuat software, anak ilkom pun tak kalah dengan anak dari jurusan non ilkom.   Karena toh hal-hal tersebut termasuk kurikulum wajib dalam ilmu komputer, meski sekali lagi, tak terlalu diberikan porsi berlebih dan terlalu mendalam, karena sekali lagi pada ilkom, fokus utama (seharusnya) ada pada riset.

Nah, tapi masalahnya, sebagaimana setiap mahasiswa ilmu komputer lain tahu, bahwa tentu kebanyakan dari kita kuliah disini untuk membidik “masa depan” yang lebih cerah. ini berarti uang, dan kita sama-sama tahu bahwa ini berarti, sisi-sisi seorang ilmuwan IT, mau tak mau adakalanya dikesampingkan.

Imbasnya, bisa ditebak. Dari sekian alumni jurusan ilmu komputer, sangat jarang yang terdengar berkarir sebagai seorang peneliti. Tak perlu berkarir pun tak masalah, setidaknya kita mendengarnya sebagai seorang peneliti, baik secara di lembaga (macam LIPI atau ristek, atau swasta), maupun secara individu, baik secara profesional, maupun amatiran, full time, maupun part time, atau sekedar penghobi sekalipun tak masalah.

Kalaupun ada, itu lebih pada tuntutan dunia kerjanya, semisal seorang dosen, RnD perusahaan swasta, dan semacamnya, yang memang secara iklim mendukung dan menuntut untuk ke arah tersebut.

Selebihnya? yang kebanyakan saya dengar hanya anak-anak Ilkom yang ber”akhir” di kantor-kantor swasta dan pemerintah, sebagai programmer,  IT adminstrator, system analist, sebagai network admin, guru, dosen, atau bahkan profesi-profesi yang tak ada hubungannya dengan ke-IT an sedikitpun. Soal adanya teliti meneliti, lebih pada tuntutan profesi masing-masingnya, itu pun lebih pada perancangan pembuatan sebuah program yang sulit, yang rumit, sesuai dengan kebutuhan profesi mereka. Sekali lagi, lebih pada membuat program, daripada membuat sebuah inovasi keilmuan baru.

Tapi SELEPAS DARI TUNTUTAN PROFESI tersebut, adakah dari mereka ini yang mengambangkan penelitiannya? atau mencoba menemukan sebuah rumus baru? algoritma baru? cara baru? metode baru? atau bahkan cabang ilmu yang baru??? Ah, telinga saya memang kecil, semoga saja ada, dan Anda lah ini orangnya, atau paling tidak Anda yang akan menjadi orangnya. Amin.

Ah ya, inti dari tulisan ini, sebenarnya saya hendak mengajak kita ini warga ilkom untuk ingat bahwa kita ini “sebenarnya”, menjadi bagian dari dunia sains, tak sekedar dunia industri. Karena setahu saya -semoga saya salah- Saya belum pernah menemukan orang Indonesia yang menjadi penemu dalam bidang keilmuan komputer ini. Yang ada lebih pada penerapan suatu ilmu untuk sebuah permasalahan, entah permasalahan dunia sains maupun dunia industri. Sejauh yang saya dengar yang banyak adalah orang membuat aplikasi ini dan itu, untuk masalah ini dan itu. Ya, kebanyakan kita lebih pada sebatas implementor daripada seorang scientist, apalagi seorang inventor, mungkin masih jauh.

Tapi ketikah dihadapkan pada pertanyaan,
Adakah dari kita menemukan sebuah METODE BARU??
Atau setidaknya MENCOBA mengembangkan??
Atau paling tidak BERKEINGINAN untuk MENEMUKAN METODE BARU??

Tidakkah dari kita-kita ini ada yang ingin, agar kelak anak cucuk kita, penerus generasi negeri ini pun bisa merasa bangga, ketika mereka belajar di bangku-bangku kuliah ilkom, mempelajari buku teks tebal berlembar-lembar,
lalu membaca nama-nama Indonesia dideretan nama-nama Djikstra penemu shortest path,
diantara CAR Hoare si penemu quicksort,
diantara McCulloch Pitts, dan Teuvo Kohonen ilmuwan jaringan syaraf tiruan,
Atau setidaknya dideretan nama-nama ahli-ahli di sub bab latar belakang  ditemukannya metode tersebut.

Tidakkah dari kita-kita ini ada yang ingin, suatu saat kelak, di buku teks mahasiswa ilmu komputer di seluruh dunia, dibahas dan dibicarakan nama-nama orang Indonesia, terlebih jika nama tersebut mengikuti sebuah cabang ilmu. Ketika dosen-dosen di Jerman, di Tokyo, di Riyadh, di Sydney, bahkan di kampus saya di Brawijaya diajarkan Algoritma dan metode dengan nama-nama Indonesia.

Tidakkah dari kita-kita ini ada yang ingin, ketika di ruang-ruang kelas mereka, dibicarakan soal “Toriq SupraGenetic Algorithm”, “Toni Artificial Hormone System”, “Adinata ParaNeuro Fuzzy”, “Endra Shortcut Network”, dan nama-nama Indonesia lain bersandingan dengan istilah-istilah bidang sains komputer.

Tidakkah dari kita-kita ini ingin ada hal-hal membanggakan negeri ini seperti itu?
Atau hanya saya yang berlebihan dan ingin mendengar ada nama-nama tersebut?
Wallahu alam, semua jawaban kembali pada Anda.

Saya hanya bisa mengajak, kepada mereka yang telah merasakan pendidikan ilkom, agar setidaknya menghidupkan iklim-iklim sains, inovasi, penemuan dalam keseharian kita, Sekecil apapun disela-sela waktu senggang kita. Di sela-sela kesibukan mengajar, disela-sela membuat program klien, disela-sela memonitor network, dan semacamnya. Tak peduli kita ini “terdampar” di dunia industri se industri dan sekapitalis apapun. Tak perlu besar besar di awal, mulai saja dari hal-hal kecil dan sederhana dahulu pun tak masalah, mulai dengan modifikasi ini itu, menggabung ini itu, dan semacamnya.  Semoga dengan ini saya berharap, bahwa kelak para pengenyam jurusan ilkom, tak menjadi sekedar bagian dunia “juru ketik” kode program, maupun dunia industri IT lainnya.

Karena sungguh, alangkah amat sayang, ketika seorang ilkom yang semisal sudah bersusah-payah belajar berjenis-jenis sains komputer, entah itu kecerdasan buatan maupun yang lain, namun tak dimanfaatkan ilmu tersebut disisa umurnya.

Ngomong-ngomong, saya jadi membayangkan, jika kelak di ruang kuliah MIT, NTU, Todai, Oxford, Harvard, UI, bahkan di Brawijaya, seorang profesor di ruang kelas mengajarkan kepada mahasiswa mereka, tentang sebuah algoritma bernama,  ”Paijo Algorithm”.

Malang, 26 Agustus 2010

Database Catatan Amal Manusia

us_citizensKita sebagai muslim tentu tahu dan wajib meyakini bahwa kelak, di yaumil hisab, kita akan dihadapkan dengan seluruh catatan amal kita. tentang bagaimana Allah kelak akan menampilkan kembali masing-masing perjalanan hidup kita di dunia, baik yang buruk, maupun yang baik. 

sudahkah saya bilang “seluruhnya” tadi?

Yups, ini artinya catatan amal kita, seluruh yang mulai dicatat ketika kita akil baligh, hingga ketika buku catatan amal ditutup saat kita menghembuskan nafas terakhir kita.  

Barangkali ini hanya pikiran konyol yang terbersit dahulu ketika saya masih kecil. Sederhana, seperti apakah kira-kira bentuk catatan amal kita?  
Tak cukup disitu, bahkan dahulu saya sempat berpikir, alangkah tebalnya jika catatan amal perbuatan manusia itu disusun. Berisi jurnal-jurnal catatan amal baik dan buruknya. alangkah tebal tentu. Jika semisal untuk mencatat satu orang, dalam satu bulan habis satu buku, maka berapa banyak dan tebalnya buku yang dibutuhkan untuk merekam jejak orang tersebut selama hidupnya?.
Bisa-bisa satu orang habis buku sebanyak buku perpustakaan nasional kita. Lantas bagaimana dengan 6 milyar manusia yang hidup sekarang? ditambah lagi milyaran manusia yang sudah meninggal dahulu, dan sekian milyar lagi yang belum dilahirkan. Seperti apakah itu semua dikelola??

Alangkah besarnya tentu? bagaimana pula mengelolanya catatan amal tersebut? bagaimana agar tidak bisa tertukar bagi seseorang yang namanya sama persis dan umurnya sama persis? Bagaimana mengurutkannya? mencari data tertentu dengan cepat? dst dst 

Belum lagi jika kemudian diceritakan, bahwa kelak kita akan disajikan, semacam slideshow/film rekaman perjalanan hidup kita. Dari yang baik-baik ketika kita belajar ngaji, sampai semisal ngerasanin orang, naudzubillah.. :(  

Wow, seperti apa caranya? alangkah besarnya storagenya tentu? bagaimana Allah mengelola semua itu?? Saya pun membayangkan… bahwa bisa jadi orang-orang di jaman dahulu pun sempat terbersit pikiran serupa.

Hingga saya akhirnya dewasa, dan kini saya pun tahu cara menjawabnya…. setidaknya… hal-hal yang disampaikan sang rasul kita 14 abad yang lalu, kini -bagi kita manusia modern- bukan hal yang impossible lagi.

Untuk bisa memhami, maka kita sedikit flashback. semenjak manusia memasuki era sejarah, disitulah manusia mulai menulis. Mencatat apa saja hal-hal yang bisa dicatat. Maka kita pun tahu, ada prasasti. Beranjak ke peradaban lebih maju, manusia pun semakin banyak menulis. menulis di daun papyrus, di kulit binatang, lembaran kayu, pelepah kurma, dlsb. Maka manusia pun menulis dimana saja. Hingga kita temukan kertas. Dan kita lihat pula seiring bertambahnya jaman, media untuk menulis pun semakin lama semakin singkat. Jika dahulunya untuk menulis sekian kata ditulis di sebuah batu besar, maka lambat laun ada kertas dan pena yang bisa kita tulisi ratusan ribu kata menjadi sebuah buku tipis. 

Dan di abad 20 mulai bergeserlah kertas menjadi data-data magnetik. Selamat datang era komputer! Yups buku-buku yang tebal-tebal, kitab-kitab para ulama salafush shaleh yang tebal-tebal tersebut, kini bisa kita kantongi dengan mudah di celana kita bak mengantongi permen. Dulu ada disket, sekarang bahkan bisa kita telan itu semua dalam sebuah flashdisk yang sangat kecil… :D  Selamat tinggal Ensiklopedia Britanica yang super tebal dan berjilid-jilid itu, kini hadirlah Encarta dalam bentuk kepingan CD. tak hanya kata dan gambar, tapi bahkan ada suara dan videonya pula. Pendek kata… makin kecil cara kita menyimpan data… :)  

Kita pun mengenal pula teknologi database, yang membuat pencarian, pengurutan, pengklasifikasian data menjadi jauh lebih mudah. Kalau dulu untuk mencari data seseorang di sebuah sekolahan, kita harus membongkar lemari-lemari tua,dan butuh waktu berjam-jam (berhari-hari kalau itu sekolah lama), maka kini tinggal mengetikkan beberapa kata, Enter, dalam sepersekian detik tampillah sudah di monitor kita. Sangat mudah, sangat Cepat.. :)  

Video pun bukan lagi hal yang rumit. Dulu satu jam video harus kita saksikan dalam satu kaset besar. Lalu berpindah ke kaset kecil, ada mini DV. lalu pindah dalam bentuk kepingan, masih besar, di laser disc. Bergeser lagi ke VCD yang lebih kecil. Hingga kini ada teknologi DVD beserta variannya yang makin besar saja kapasitasnya.

Ukuran file yang dulu begitu besar, satu film butuh storage besar, kini makin kecil saja. Jika dulu satu film kita tonton dalam 2 keping CD, berkat teknologi kompresi, kini bisa kita nikmati dalam satu CD saja, dan seiring teknologi kompresi lainnya (semisal MKV) maka makin dan makin kecil saja ukuran film-film kita. 

Pengelolaannya pun tak lagi susah, contoh sederhana, lihatlah youtube. Tinggal beberapa klik, ditemukanlah video yang kt cari.

Dan pada akhirnya perlu diingat, bahwa ini semua hanyalah teknologi manusia saat ini. Masih jauh terbuka ruang luas dalam hal penyimpanan dan manajemen data. Sekali lagi, ini hanya ilmunya manusia, setitik kecil debu dalam padang pasir jagad semesta. 

Subhanallah…. 
Tentu ilmu Allah jauh daripada sekedar ilmu-ilmu manusia. jauh, jauh, dan sungguh lebih jauh lagi….. Yang jika diibaratkan dalam sebuah hadits, jika kita mencelupkan tangan di samudera, kemudian kita angkat, maka air yang menempel di jari-jari kita itu adalah ilmu manusia (termasuk einstein, hawking, planck, dan profesor2 seluruh dunia lainnya). Adapun ilmu Allah, itulah air di samudera luas. Allahu Akbar… betapa kecil ilmu kita… :(

Maka, jika menciptakan kita -manusia- yang serumit ini, beserta alam semesta dan seisinya saja Allah mampu, kenapa tidak dengan menyimpan dan memanage data amalan seluruh manusia? Bukankah Allah maha kuasa atas segala sesuatu?

Manusialah yang teramat lemah… lemah dan lemah….. 

Dari sebuah prasasti seberat seekor sapi, hingga tersusun lembaran kertas-kertas rapi, lalu menjadi seukuran mikrochip sebesar kuku jari… betapa cepat laju penyimpanan data yang dikembangkan manusia. 

Dan sesungguhya saya yakin, bahwa database Allah tentu jauh, jauh, dan jauh lebih canggih daripada database server, dan mesin2 tercanggih yang dikenal manusia sekarang ini. Ah cukup sampai disini, tak perlu saya berpikir lebih jauh lagi tentang bagaimana Allah mencatat dan menyimpan semuanya. Itu semua ilmu Allah yang tak terjangkau oleh manusia. Saya hanya bisa mengembangkan apa yang didepan saya, untuk satu langkah lebih maju langgi dalam teknologi ini.

Ah ya, Akhirnya kita bisa memahami yang Maha besar, dari hal-hal kecil di sekitar kita.. 

Subhanallah… Allahu Akbar… semakin saya belajar di dunia IT ini, maka semakin mudah pula rasanya memahami keagungan dan kemaha besar-an Allah SWT. Tak ada yang tak mungkin bagi Allah jika Allah berkehendak. 

Malang 9 Maret 2009

Brute Force Listing with Summing Constraint (recursive)

This morning I want to take a walk for a while.. Having exercise to test my body  which still in dizzy mode :D . Its just a minute before I go then my friends, Adib ask me to help him in Algorithm. Well currently he need it for his paperwork which must be revised today by his lecturer. His paper is about Feed Formulation with Genetic Algorithm.

WHAT THE FORMULATION DOES

Actually the formulation can be for everthing, not only feed, it may be for anything which has a characteristic like this.
Suppose you have a 3 Ingredient.. call it Ingredient A, B, and C.
Each ingredient has its own nutrition value. You may call it Ingredient A has 3 protein, 5 vitamin A, and 10 carbohidrate.Ingredient B has its own nutrition value, and C also. Now your task is to Mix those Ingredient, so that the  mixing result will have X protein, Y vitamin, and Z carbohidrate. The mixed ingredient (100%) is consisted of certain % of A, certain % of B, and C.

Of course there is one more variable, it is the cost. As we know thateach ingredient has different price, so we need to know, which Mixed Ingredient which will result not only fulfill the needed nutrient, but also the lowest price we can get. (this is a paperwork for his graduation). Actualy we had made those kind of software before in two algorithm, with linear programming and with genetic algorithm.

This problem may vary, due to your own problem.

Shortly, Adib had made a software for his paper to do formulation as described above. But he made it with Genetic Algorithm. If you don’t know what is Genetic Algorithm, refer to Mr Google :D . For me, It is a  haphazard way to get a (close to) maximum value. Genetic Algorithm is good due to its speed.. it is faster But One lack of Genetic Algorithm is The result is Not  a real maximum value. It just very close to optimal value.Furthermore you can learn about what genetic algorithm is in Google/Wikipedia.

Because the result is only a close to optimal value, now he want to check how close his algorithm with the  optimal value. So now he need the Usual way.. a brute force list is needed,(trust me it is very compulsive resourcefull algorithm) so that he can count the ingredient and the cost.

Here is what he need…

THE BRUTE FORCE LIST WITH SUMMING CONSTRAINT PROBLEM

Given (as an example) 3 Ingredient. Call it A, B, and C.
Your problem is to list all percentages possibilities of each ingredient so that we will have a mixed ingredient which is consisted of x% A, y% B and z% C. as an example

so now we will have a brute force list from

0 0 1
0 0 2
0 0 3
. . .
100 100 100

using nested loop? you think..!! Its OK as far as we know how many the ingredient is. But the problem is the number may be dynamic. Now we mix 3 ingredient, tomorrow maybe 5, and next week could be 17 ingredient (trust me.. it’s happen in big feed company).

so we now needa dynamic brute force list. The number of ingredient may vary, the Range may vary also (above is only (1-100). And don’t forget.. we also have a problem… The Constraint… In the problem above.. we need so that Ingredient A + B + C= 100%. so it could be 1+1+98 or 100 + 0 + 0. As a say… there are so many possibillities. Well its rather need a hard though I guess.. so I’ll start with the simple way.Forget the constraint first. Our first problem is to list as above.

0 0 1
0 0 2
0 0 3
. . .
100 100 100

I create this algorithm in Java. So I will show you the implementation with Java. Because it seems to be impossible with Nested Loops (how will you make a Dynamic Nested Loops??) so willy milly I have to make it by the expensive method in algorithm… Recursive… I took a hard work to make it possible. After so many logical errors, than I realized to make your Recursive work, you need to know how it works if it use the nested loops (suppose yours now is not dynamic). I made it I made it.. than I know how it should really works (and I also know why my recursive function doesn’t). So here is the code. I make it hopefully usefull for you…

Here I make it step by step for you.. Hopefully this small work is usefull..I also commented it… If you have any difficulties, feel free to contact me by email/YM.

Here is the full list source code.

package recursif;

/**
* @author Toni Tegar Sahidi
* EMAIL :  tonitegarsahidi@gmail.com
* WEB http://www.tts.web.id
*
*/
public class Main {

static int [] valuelist;
//here I created this global variable to save the value for each recursive action
//this variable to save a temporary values, so that I can print it each recursive action.
// so it will save as {10, 40, 50} which means A=10 B=40 C=50. NOTE that this is Temporary
// If you want to save it to your own list, make a List of Array to save it then.

/**
* @param args the command line arguments
*/
public static void main(String[] args) {  //the main function as usual

int depth;
// what I mean by depth here is the dept that will occur in the recursive.
// If you have only 3 ingredients, (A B C) then the depth only 3.
// if it A B C D E then the dept is 5
depth = 3;

valuelist = new int [depth];  // now we create the valuelist array set it to have 3 field.

bruteforcelist(depth, 100, 100);
//this is we called the function.
// NOTE that this function only PRINT the result, not save it.
}
/**
*
* @param int depth : the depth of recursion.. it means the number of your ingredient. Only number
* @param int range : it is the maximum range you want for each ingredient. It start from 0 to range.
* If you want each ingredient is ranged from 1-1000 then just write 1000 in it. If 50, just write 50 on it.
* @param int sumtarget : Of course we dont’t want all list is showed. So to filter it, this is the
* targetted sum you want for each ingredient. if you want A + B + C =100
* then write 100. if you want A + B + C + D =95 then just write 95.
*/
public static void bruteforcelist(int depth, int range, int sumtarget)
{
int i, total;      // Why we always use ‘i’ for iteration? huh..
if (depth==0)      // when the recursive is finish to its deepest depth
{
total = 0;     // initial only.. we need to know whether the sum of all ingredients
//fulfilling the sum targetted.
for (i=valuelist.length; i>0; i–) //Looping for each valuelist elements
{
total = total + valuelist[i-1]; //sum the total percentage of whole mixed ingredients
}
if(total == sumtarget)  // now if the sum targetted = the total
{
for (i=valuelist.length; i>0; i–)
{
System.out.print(valuelist[i-1] + ” “); //Print it!!
}
System.out.println();
}
}
else //well if still not done yet.. If the recursion still not reach its deepest path
{
for (i=0; i<=range; i++)
{
valuelist[depth-1] = i;    //add current value to valuelist…
bruteforcelist(depth-1, range, sumtarget); //Here is the recursion FUnction

}
}

}

}

/**
* Note that the core fact why I didn’t make with the previous recursion function, actually,
* it just about when we have to print it. From this function, I print ONLY when we reach the deepest
* path ( it means that we should save the upper recursion). thats why I need a global variable
* to save it… because it won’t work on local variables.
*/

NOW WE TEST IT…

bruteforcelist(3, 5, 5);

//it means, 3 ingredients (A B C), each ingredient has value from 1-5 and the sum of A + B + C = 5.
//Here is the result

0 0 5
0 1 4
0 2 3
0 3 2
0 4 1
0 5 0
1 0 4
1 1 3
1 2 2
1 3 1
1 4 0
2 0 3
2 1 2
2 2 1
2 3 0
3 0 2
3 1 1
3 2 0
4 0 1
4 1 0
5 0 0

Now if you like to try, just try :

bruteforcelist(4, 100, 100); or
bruteforcelist(4, 1000, 100);

Well that’s all. Actually there still a weakness from my Code. What if user try to call

bruteforcelist(4, 100, 1000);

note that the target is impossible even 100+100+100+100 will never same as 1000. An Infinite loop you think? No.. it won’t. Simply.. it will just print nothing :D (haha….)

Feel Free to distribute this small work. Hopefully it will usefull.. :D

Toni Tegar Sahidi
Algorithm and Web Specialist MySoftory.com

Hati-Hati Email Anda dipalsukan.. (1) – Membuat FAKE Email dengan PHP

Dahulu saya pikir, agar ketika kita membangun sebuah situs, lantas dari situs tersebut hendak mengirimkan email, maka kita butuh sebuah account SMTP untuk bisa melakukannya. Atau dengan kata lain, tetap butuh email account tersendiri untuk itu. Namun kemudian, setelah beberapa kali utak atik Joomla, terutama terkait bagian konfigurasi email, saya melihat bahwa Joomla mensupport beberapa opsi pengiriman email. Yang pertama, tentu yang standar seperti yang biasanya

Bermula dari sebuah pekerjaan, membangun sebuah situs iklan, akhirnya saya berkenalan juga dengan fungsi mail() pada PHP. Fungsi ini memang mengirimkan email dengan menggunakan PHP. Untuk detail lebih jelas, silakan cek di PHP Manual. Perlu dicatat, bahwa untuk bisa mengirim fungsi mail ini, yang pertama, jelas script tersebut dijalankan di server yang menyala. Dan kedua, settingan terkait mail server pun harus diset. Biasanya jika Anda hosting di hosting resmi, (bukan reseller), fasilitas tersebut sudah terinclude didalamnya. Dalam kasus contoh saya, saya hosting di rumahweb.com.

Dalam pekerjaan tersebut, saya harus mengirimkan sebuah email ke email pemilik situs setiap kali ada orang yang mendaftar. Selain itu, setiap user mendaftar, maka dia akan menerima email konfirmasi pendaftaran di account emailnya.

Adapun Sintaks secara umum dari fungsi mail kurang lebih sebagai berikut.

mail($to, $subject, $message, $headers);

Pada fungsi mail, terdapat beberapa parameter. Salah satunya, bagi saya yang lumayan menarik adalah FROM(pengirim). Apakah Anda berpikir seperti saya? Ya… itu artinya bahwa saya bisa mengirimkan email dengan mengatasnamakan email seseorang. Bagian From ini dimasukkan ke Header email dengan cara sebagai berikut.

$headers = ‘MIME-Version: 1.0′ . “\r\n”;

$headers .= ‘Content-type: text/html; charset=iso-8859-1′ . “\r\n”;

$headers .= “From: “.$nama.” <”.$from.”>” . “\r\n”;

Adapun bagian Nama pengirim (bukan alamat) pada Email diletakkan pada Header email tersebut. Begitu juga jika semisal kita ingin seolah-olah email yang kita kirimkan nantinya terdapat CC/BCC/hal-hal lainnya. Dengan memodifikasi Header ini pula kita bisa mensetting, apakah email kita ini hanya bertipe plain teks, atau mampu mengandung konten MIME.

Langsung saja, saya pun mencoba fungsi ini dalam program pekerjaan saya. Dengan mengatasnamakan email Yahoo pemilik situs, saya mencoba men-test kapabilitasnya. Dan Berhasil!!! di account Yahoo saya masuk sebuah email yang saya harapakan. Lengkap dengan alamat email , namanya, hal-hal email standar lainnya. Bahkan saya pun bisa menyisipkan kode HTML di dalamnya.

Saya heran, tak seperti dugaan saya sebelumnya, saya pikir, kalaupun masuk, ini nanti akan masuk ke folder Bulk/Spam nya yahoo.. namun ternyata tidak. Saya pun mencoba sedikit usil, saya mencoba mengirim email dengan fungsi PHP tersebut, dengan mengatasnamakan email Yahoo saya sendiri, dan mengirim ke alamat email saya sendiri. Jadi di bagian pengirim, saya tulis tonitegarsahidi@yahoo.com dan dibagian tujuan/to saya pun menuliskannya tonitegarsahidi@yahoo.com pula.

Dan ternyata.. Berhasil!!! Dan hebatnya lagi, email tersebut tidak masuk ke bulk di bagian yahoo saya.

Sukses di percobaan pertama tak membuat saya langsung puas. Pada bagian diatas, untuk harus mengganti pengirim, dan lain-lain saya harus masih mengedit kode PHP nya langsung. Saya pun berpikir, kenapa tak langsung sekalian membuat form-nya? Sehingga saya ingin mengirim email atas nama siapa, ke siapa, dengan pesan apa, pun bisa dilakukan.

Maka mulailah pekerjaan mengutak atik coding. Dan jadilah Sebuah Form email seperti demo dibawah. Form tersebut pun kemudian saya letakkan di Hosting blog saya.. Dan jadilah Form untuk membuat FAKE Email ini, menjadi sebuah senjata berbahaya. Saya bisa mengirimkan email atas nama anda, ke alamat mana saja yang saya sukai. Tak butuh banyak kode untuk bisa membuat email form tersebut, hanya 75 baris, dan 2KB. Kecil bukan? Namun powerfullnya. Anda bisa membuat sendiri, atau silakan cari di internet script untuk mengirim email dengan menggunakan PHP. Anda bisa mencarinya di internet.

<!– @page { size: 8.5in 11in; margin: 0.79in } P { margin-bottom: 0.08in } –>

DEMO

kompascontact

Untuk Demo kali ini, saya hanya ingin membuat Email, yang isinya memberitahukan Info Lomba dari Kompas. Untuk alamat resmi email dari Kompas adalah redaksikcm@kompas.co.id .

Baik berikut demo-nya.

emailsend

Langkah pertama, Saya membuka Email Form PHP saya yang saya taruh di hosting Saya mengisi seperti biasa, dengan atas nama Redaksi KOMPAS, . Jika sudah, seperti biasa, klik Submit.

inbox1

Tak lama kemudian, di Email saya.. sudah muncul email dari redaksi kompas. Dan email tersebut, sekali lagi, tidak masuk di Bulk Email saya melainkan pada Folder INBOX. Bisa dilihat pada gambar diatas.

inbox2

Sekarang kita coba klik dan lihat isinya.

Hoho.. ternyata mantaps.. HTML Formating untuk penebalan kata Pemberitahuan pun tercetak tebal.

Sukses!!!

di Edisi Selanjutnya kita akan mencoba bermain-main dengan Milis, dan membahas bagaimana cara mengetahui email tersebut asli atau tidak.