Belajar Web

Belajar Web: 2012

Archive for 2012

Membuat Dropdown Menu Tanpa Javascript

Posted by Gora Santika


Sumber Gambar : bobcravens.com

Bagi anda yang kerap bermain dengan program ataupun web tingkat lanjut, istilah tersebut mungkin sudah tidak asing. Dropdown menu adalah menu yang memiliki anak menu. Sebagai contoh, ketika anda membuka windows explorer, pada pojok kiri atas terdapat menu File, yang mana apabila menu tersebut diklik akan menampilkan sederetan menu lain seperti rename, delete, dsb.

Sebagian webdesigner dan webprogrammer menggunakan jenis menu ini untuk mempercantik tampilan web yang sedang mereka garap. Salah satu cara yang kerap digunakan adalah dengan menggunakan bantuan JavaScript maupun JQuery. Kedua script tersebut memang memberikan hasil yang optimal pada tampilan web. Namun bagaimana jika client men-disabled kemampuan baca javascript dari browser yang dimilikinya? Atau bagaimana jika browser client tidak support dengan javascript? Meski dua hal tersebut jarang ditemui, namun tidak menutup kemungkinan hal tersebut dapat terjadi. Sebagai seorang webprogrammer, kita harus dapat membuka pandangan mengenai semua kemungkinan yang dapat terjadi terhadap produk yang sedang kita kerjakan.

Untuk membuat dropdown menu, dapat dilakukan dengan menggunakan CSS dan HTML. Tidak percaya? Berikut akan dijelaskan sedikit tentang Membuat Dropdown Menu Tanpa Javascript.

Algoritma program kita kali ini cukup sederhana:

  1. Membuat menu utama dan anak menu.
  2. Menyembunyikan anak menu.
  3. Menampilkan anak menu ketika cursor diletakkan diatas (hover).

Langsung aja, kita bikin format menu kita :

<div id="menu">
 <ul>
    <li><a class="mom" href="#">Home</a></li>
    <li>
      <div id="child">
        <a href="#">Menejemen Pegawai</a>
        <a href="#">Tambah Pegawai</a>
        <a href="#">Menejemen Level</a>
      </div>
      <a class="mom" href="#">Pegawai</a>
    </li>
 </ul>
</div>

Pada potongan program tersebut, terdapat sebuah div#menu yang merupakan tempat meletakkan seluruh elemen menu. Di dalamnya terdapat Unordered List <ul> yang di dalamnya terdapat dua buah List Item <li>. Dalam list item dapat berisi dua elemen pokok, yaitu a.mom sebagai menu utama dan div#child sebagai anak menu.

Setelah selesai dengan format menu, saatnya memberi css :

<style>
#menu ul {
   line-height:30px;
   list-style:none;
   padding:0;
   margin:0 20px;
}
#menu ul li {
   display:inline;
   margin:0 5px;
}
#menu ul li a.mom {
   background:#903;
   display:inline-block;
   padding:0 10px;
   color:#FFF;
}
#menu ul li:hover > #child {
   visibility:visible !important;
}
#menu ul li:hover > a.mom {
   background:#CCCC66;
   color:#000;
}

#child {
   display:inline;
   margin:30px 0 0 -5px;
   position:absolute;
   z-index:10;
   visibility:hidden !important;
   border:1px solid #000;
}
#child a {
   display:block;
   padding:5px 40px 5px 5px;
   background:#2D5082;
   color:#FFF;
   border-bottom:#CCC 1px solid;
}
#child a:hover {
   background:#A6DCFF;
   color:#000;
}
</style>

Terlihat rumit mungkin, tapi inti dari CSS tersebut adalah pada bagian yang saya tebalkan (bold) dan saya beri tag !important. Visibility dari #child diberi nilai hidden pada awalnya. Setelah ListI Item <li> di-hover, maka #child berubah menjadi visible. --intinya gitu.

Hasil dari percobaan di atas adalah: » seperti ini «



[Semoga Bermanfaat]

Membuat Captcha Dengan PHP

Posted by Gora Santika


Sumber Gambar : www.captcha.ru
Bagi anda yang kerap berkunjung ke forum, situs download, atau jejaring sosial lain pasti sudah tidak asing dengan istilah Captcha. Menurut Wikipedia, "CAPTCHA atau Captcha adalah suatu bentuk uji tantangan-tanggapan (challange-response test) yang digunakan dalam perkomputeran untuk memastikan bahwa jawaban tidak dihasilkan oleh suatu komputer.". Secara sederhana, Chapta digunakan untuk membatasi spambots yang biasa membombardir input pada sebuah situs.
Contoh sederhana ada pada sebuah forum. Ketika user hendak submit post, maka ia diminta untuk mengisi captcha. Jika tidak menggunakan captcha, mungkin spambots akan memasukkan ribuan post sekaligus dalam sebuah forum.
Pada pembahasan kali ini, kita akan belajar membuat captcha sederhana menggunakan PHP. Adapun algoritma program yang akan kita buat adalah sebagai berikut :
  1. Membuat random text yang akan dijadikan sebagai kode verifikasi.
  2. Menampilkan random text kepada user.
  3. Mencocokkan input dari user dengan random text.
Pada project ini, kita akan mengeksekusi algoritma tersebut dengan 3 buah file sederhana :
  • img.php (membuat random text)
  • captcha.html (menampilkan random text pada user)
  • check.php (mencocokan input dengan kode)

Saatnya beraksi...

img.php

Pertama, kita buat random text. Kemudian menyimpannya dalam sebuah variable. Setelah itu menyajikannya dalam wujud gambar agar tidak dapat di-copas (copy-paste).
<?php
// membuat random text dari 0 - 9999
$code=rand(0,9999);

// menyimpan random text pada session
session_start();
 $_SESSION["captcha"]=$code;

// mengubah text menjadi gambar
$im = imagecreate(150, 40);

$bg = imagecolorallocate($im, 0, 0, 0);
$fg = imagecolorallocate($im, 0, 255, 0);
$font = 5;

imagestring($im, $font, 50, 10, $code, $fg);

header('Content-type: image/png');
imagepng($im);

imagedestroy($im);
?>
Untuk penjelasan mengenai mengubah text menjadi gambar, dapat membaca lebih lanjut pada PHP.net

captcha.html

Merupakan halaman HTML yang berisi sebuah form yang akan menampilkan gambar kode yang telah dibuat oleh img.php serta menyediakan tempat bagi user untuk memasukkan data.
<form action="check.php" method="post">

 <!-- tempat menulis komentar -->
 <textarea name="komentar" cols="50" rows="8">
  Tulis apa saja di sini
 </textarea><br>

 <!-- menampilkan kode random text -->
 <img src="img.php" style="float:left;" />

 <!-- tempat menulis captcha -->
  Tulis teks di samping :<br>
  <input name="kode" type="text"><br>

 <!-- tombol kirim -->
 <input type="submit" value="Kirim">
</form>

check.php

Sebuah halaman PHP yang berisi perintah untuk mencocokkan input captcha user dengan input captcha yang telah dibuat oleh img.php
<?php
// set variable
 session_start();
 // komentar user
 $komentar=$_POST["komentar"];
 // input captcha user
 $kode=$_POST["kode"];
 // kode captcha dari img.php
 $captcha=$_SESSION["captcha"];

// jika captcha dari img.php kosong
if(empty($captcha))
{
 // redirect ke captcha.html untuk ambil kode
 header("location:captcha.html");
}
// jika captcha dari img.php tidak kosong
else{
  // jika captcha sama dengan input user
  if($kode==$captcha)
  {
   echo("Captcha yang anda masukkan benar.<br>");
   echo("Komentar anda :<br>");
   echo($komentar);
  }
  // jika captcha tidak sama dengan input user
  else
  {
   echo("Captcha yang anda masukkan salah.<br>");
   echo("Silakan ulangi.");
  }
}
?>
Hasil dari percobaan di atas adalah: » seperti ini «


[Semoga Bermanfaat]

Looping Pada PHP

Posted by Gora Santika


Sumber Gambar : upload.wikimedia.org

Selamat menikmati akhir pekan. Siang ini saya hendak membahas mengenai perulangan atau biasa disebut Looping pada PHP.

Jika anda bertanya apa itu looping, maka saya punya sedikit gambaran. Ketika anda diperintah untuk membuat program yang menampilkan 2 baris tulisan "Halo Dunia", mungkin sebagian dari anda akan mengambil langkah konvensional yaitu copas (copy-paste). Jika hanya 2 baris, mungkin bukan sebuah masalah. Namun bagaimana jika jumlah baris yang diminta adalah 1000 baris? Apakah anda akan melakukan copy-paste sebanyak itu?

Jika anda mengaku sebagai seorang programer dan anda memilih copy-paste untuk kasus di atas, maka ada 3 kemungkinan:

  1. Anda belum mengerti kegunaan looping
  2. Anda programer kurang kerjaan
  3. Anda programer gila

Bagi anda yang belum mengerti kegunaan looping, silakan lanjutkan membaca. Dan bagi 2 pilihan terakhir, silakan lanjutkan kekurang-kerjaan anda. hehe :P

Oke, secara sederhana looping dalam istilah pemrograman berarti proses mengulang sebuah / sekelompok statement pemrograman sampai tercapainya kondisi yang diinginkan." Dalam kasus tersebut di atas, kondisi yang diinginkan adalah tercetaknya 1000 baris kalimat "Halo Dunia".

Dalam dunia PHP, ada beberapa cara untuk melakukan looping. Dua di antaranya adalah dengan menggunakan perintah For dan While.


FOR

Bentuk umum dari perintah ini adalah:

for(kondisi)
{
 Statement 1
 Statement 2
 ...
}

Jika diterjemahkan dalam bahasa manusia, perintah tersebut berbunyi: "Dengan (kondisi) kerjakan Statement 1, Statement 2, ...".

Cara menentukan kondisi adalah sebagai berikut:

for($i=0; $i < 10; $i++)
{ Statement }

Jika diterjemahkan dalam bahasa manusia, perintah tersebut berbunyi: "Dengan i bernilai 0 dan i kurang dari 10, naikkan nilai i kemudian kerjakan Statement".

Penjelasan:
$i adalah variable iterasi yang berperan dalam penentuan kondisi.
Sedangkan $i < 10 menandakan variable i hanya dapat menampung nilai kurang dari 10 (9, 8, 7, ...).
Kemudian $i++ berfungsi untuk menaikkan nilai i. $i++ sama artinya dengan $i = $i + 1.
Ketika fungsi ini berjalan, variable iterasi akan terus bertambah dari 0 menjadi 1 dan seterusnya. Ketika nilai $i menjadi 9 dan kemudian bertambah menjadi 10, looping berhenti karena 10 sudah berada di luar jangkauan tampung $i. Hasil dari looping di atas, Statement akan di ulang sebanyak 10 kali.

// mencetak "Halo Dunia" 5 kali
for($i=0; $i < 5; $i++)
{
 echo "Halo Dunia";
}

Dengan demikian, pertanyaan untuk membuat 1000 baris kalimat "Halo Dunia" sudah terjawab menggunakan FOR statement.

FOR statement juga dapat menghitung mundur variable iterasi:

// mencetak "Halo Dunia" 5 kali
for($i=5; $i > 0; $i--)
{
 echo "Halo Dunia";
}

Sama seperti sebelumnya, hanya variable iterasi berkurang dari 5 menjadi 4 dan seterusnya. Ketika nilai $i = 1 dan kemudian berkurang menjadi 0, looping berhenti karena 0 sudah berada di luar jangkauan tampung $i. $i-- sama artinya dengan $i = $i - 1;


WHILE

Fungsi perintah ini sama dengan FOR, yang membedakan hanya cara penulisannya.

while(kondisi)
{
 Statement 1
 Statement 2
 ...
}

Penentuan kondisi dapat dilakukan dengan:

// nilai awal variable iterasi
$i = 0;

while($i < 10)
{
 echo "Halo Dunia";
 $i++;
}

Perbedaan While dengan For adalah letak penulisan nilai awal $i dan $i++. Namun tidak hanya berhenti di situ, While dapat menambahkan variable iterasi sesuai keinginan kita.

$i = 1;
while($i < 10)
{
 echo "Halo Dunia";
 $i = $i * 2;
}

Penjelasan:

  1. Pada iterasi pertama, $i bernilai 1. Karena 1 masih berada dalam jangkauan $i (kurang dari 10), maka While mengerjakan statement yang dimilikinya, yaitu mencetak "Halo Dunia" dan mengalikan nilai $i dua kali.
  2. Pada iterasi kedua, nilai $i telah menjadi 2. Karena 2 < 10 maka program mencetak "Halo Dunia" dan mengalikan nilai $i dua kali.
  3. Pada iterasi ketiga, nilai $i telah berlipat ganda menjadi 4. Karena 4 < 10 maka program mencetak "Halo Dunia" dan mengalikan nilai $i dua kali.
  4. Pada iterasi keempat, nilai $i menjadi 8 dan program mencetak "Halo Dunia" dan mengalikan nilai $i dua kali.
  5. Pada iterasi kelima, nilai $i = 16. Maka program berhenti mengulang.
Pada akhirnya "Halo Dunia" tercetak 4 kali.

Satu hal penting dalam penggunaan looping. Perhatikan dengan benar kondisi yang anda berikan. Karena jika tidak, dapat terjadi kemungkinan program melakukan infinite loop.
// CONTOH INFINITE LOOP
$i = 0;
while($i < 10)
{
 echo "Halo Dunia";
 $i = $i * 2;
}

Looping tersebut tidak akan berhenti SELAMANYA. Hal tersebut dikarenakan nilai awal variable iterasi = 0. Kemudian proses penambahan dengan mengalikan $i dua kali tidak akan mengubah nilai $i karena 0 * 2 akan selamanya menghasilkan 0.

[Semoga Bermanfaat]

Fungsi Rekursi

Posted by Gora Santika


Sumber Gambar : www.dominiek.eu

Halo, lama sekali kita tak jumpa. Maklum lah, ane emang manusia (sok) sibuk :P Pada kesempatan ini, saya ingin sedikit membahas mengenai rekursi.

Kalo menurut mbah wikipedia, "[1]Rekursi adalah proses pengulangan item dengan cara kesamaan-diri. [2]Rekursi adalah proses dimana salah satu langkah dalam prosedur menjalankan prosedur itu sendiri."

Kalo menurut ane, Rekursi adalah fungsi yang memanggil dirinya sendiri.

Rekan-rekan pembaca udah pada tau apa itu fungsi kan? Secara sederhana, fungsi adalah sekumpulan proses untuk memecahkan masalah. Sebagai contoh: f(x) = x + 3

Jika kita memanggil fungsi tadi, misal f(5) maka fungsi tersebut akan memberi hasil 8 yang diperolah dari 5 + 3. Coba ingat kembali pelajaran matematika SMP.

Contoh lain dari fungsi yang sudah mengandung unsur rekursi adalah fungsi faktorial. Faktorial, biasa dilambangkan tanda seru (!), adalah hasil kali bilangan asli berurutan.

Faktorial dapat dijabarkan: n! = n x (n-1) x (n-2) x ... x 1 Sehingga dapat diperoleh 5! = 5 x 4 x 3 x 2 x 1 = 120.

Notasi lain dari fungsi di atas bisa juga: f(n) = n x f(n-1) dengan f(1) = 1. Dari notasi di atas, dapat dilihat bahwa f(n) memanggil f(n-1) yang mana f(n-1) akan memanggil f((n-1)-1) = f(n-2) begitu seterusnya sampai ditemukan f(1) yang bernilai 1.

Jika kita aplikasikan dalam pemrogaman PHP, dapat ditulis menjadi:

function faktorial($n)
{
 if( ($n==1) || ($n==0) ){ return 1; }
 else{
  return $n * faktorial($n-1);
 }
}

Dalam potongan program di atas, statement if digunakan sebagai pembatas fungsi rekursi. Jika kita tidak menggunakan pembatas, maka fungsi akan memanggil dirinya sendiri sampai tak terhingga: faktorial(n-1) faktorial(n-2) faktorial(n-3) dst. Oleh sebab itu, jika fungsi telah memanggil batas yang di tentukan, ia akan mengembalikan nilai, dalam hal ini 1.

Jika pembatas fungsi tersebut adalah faktorial(1) yang bernilai 1, lalu mengapa dalam statement if ada nilai n==0 ? Perlu kita ingat lagi bahwa 0! = 1. Bagaimana bisa?

Simak perhitungan berikut:

1! = 1
2! = 2 x 1! = 2
3! = 3 x 2! = 6
4! = 4 x 3! = 24
5! = 5 x 4! = 120

coba kita balik perhitungan tersebut:

5! = 120
4! = 5! / 5 = 24
3! = 4! / 4 = 6
2! = 3! / 3 = 2
1! = 2! / 2 = 1

0! = 1! / 1 = 1

Jadi ketika kita memanggil faktorial(0), fungsi akan memberi hasil 1. Lalu bagaimana dengan faktorial(-1) ? Perlu diingat bahwa faktorial hanya untuk bilangan asli.

Intinya, suatu fungsi disebut rekursi apabila fungsi tersebut memanggil dirinya sendiri dalam pemecahan masalahnya.

Demikian kurang lebih apa yang dapat saya sampaikan mengenai rekursi. Kurang dan lebihnya, saya mohon maaf.



[Semoga Bermanfaat]

PHP Enkripsi Tingkat Lanjut

Posted by Gora Santika


Sumber Gambar : 3.bp.blogspot.com

Sore-sore bosen hambar, dari pada bengong, bikin posting lagi ajah..

Artikel ini bisa dibilang kelanjutan dari artikel sebelumnya yang masih membahas enkripsi PHP: Membuat Enkripsi Sederhana Menggunakan PHP. Hanya saja yang sebelumnya masih ditemukan beberapa bug dan kekurangan, dan sekarang saya coba untuk membenahinya.

Berikut adalah algoritma enkripsi yang dikembangkan oleh Santika Studio - Indonesia. Hampir sama dengan algoritma pada project sebelumnya, hanya saja dalam mensubtitusi kita bubuhkan sedikit variasi. Prinsipnya kurang lebih kayak gini:

  • Sebuah input kita baca per karakter.
  • Ubah karakter menjadi nilai ASCII.
  • Beri variasi menggunakan sedikit rumus.
  • Bubuhkan sedikit subtitusi (optional).
  • Voila, tercipta enkripsi versi kita sendiri.

Meski terlihat rumit, namun sebenarnya cukup sederhana. Tidak percaya? Mari kita buktikan.


Saatnya beraksi...

Kali ini kita memiliki 2 pokok bahasan, pertama adalah membuat Enkripsi dan yang kedua adalah membuat Dekripsi.


Membuat Enkripsi

Pertama-tama, kita buat perulangan (looping) yang akan membaca setiap karakter dari input. Hal yang perlu diingat adalah input kita berupa teks / string yang berarti merupakan kumpulan karakter, dengan kata lain Array Of Char. Hal tersebut memungkinkan kita untuk memanggil array string tersebut menggunakan indeks yang akan menghasilkan karakter / huruf tertentu.

<?php
// hitung panjang input
$length=strlen($input);

// start looping
for($i=0;$i<$length;$i++)
 {
  // tampung huruf
  $temp=$input[$i];
  
  // ubah menjadi ASCII
  $temp=ord($temp);
 }
?>

Sekarang kita telah mendapat nilai ASCII dari tiap huruf. Tunggu sebentar, kenapa nama variabelnya $temp?? Tentu saja karena proses enkripsi masih belum berhenti di sini.

Jika hanya menggunakan kode ASCII, tentu akan mudah dibaca orang. Sudah tentu kita bisa mencari di mbah gugel tentang apa itu kode ASCII dan akan dengan mudah membaca pesan kita. Namun akan berbeda jika kita beri sedikit rumus. Buat ente yang kagak suka ngitung pakek rumus, tenang aja. Rumus disini yang saya maksud adalah konversi basis suatu bilangan, dan fungsi tersebut sudah ada pada PHP dengan nama base_convert().

Contoh berikut akan diperlihatkan cara mengubah bilangan ASCII yang berbasis 10 (desimal) menjadi bilangan berbasis 9. Saya pilih basis 9 karena basis ini jarang digunakan, sehingga orang butuh berfikir 2 kali untuk mengetahui basis yang kita gunakan. Tambahkan kode berikut di dalam perulangan setelah diubah menjadi kode ASCII.

<?php
 ...

  // ubah desimal -> basis 9
  $temp=base_convert($temp,10,9)
  
  // format output
  $out="[".$temp."]";
  
 ...
?>
Output saya format sedemikian sehingga dapat kembali didekripsikan bila diperlukan.

Langkah terakhir dalam pembuatan enkripsi ini adalah membubuhkan beberapa karakter alphabet (A-Z) agar hasil enkripsi kita sulit dibaca basisnya. Hal ini juga dapat mempercantik tampilan output yang akan menjadi alpha numerik. Namun langkah ini adalah optional, artinya dapat dilakukan dapat juga tidak. Subtitusi dilakukan di luar perulangan. Berikut contohnya:

<php
...
  
// variasi subtitusi
$key = array(
    '1' => 'A',
    '6' => 'Z',
    '8' => 'K'
);
$out = str_replace(array_keys($key), $key, $out);

?>

Satu lagi catatan yang perlu diingat adalah pemilihan angka subtitusi. Dalam mensubtitusikan angka perlu diperhatikan basis yang sedang digunakan. Pada contoh ini, karena kita menggunakan basis 9, maka angka maksimal yang digunakan adalah 8. Demikian jika kita menggunakan basis 5, maka angka maksimal yang digunakan adalah 4. Hal tersebut dikarenakan dalam pembacaan bilangan, angka 0 termasuk dalam hitungan. Sehingga dalam basis 9 yang kita gunakan, terdapat sembilan buah angka: 0,1,2,3,4,5,6,7, dan 8.

Untuk Enkripsi berhenti sampai di sini. Hasil / output dari teks yang telah ter-enkripsi tersimpan dalam variabel $out


Membuat Dekripsi

Dalam pembuatan dekripsi, kita tinggal membalik langkah dari pembuatan enkripsi.

Jika anda menambahkan variasi subtitusi, maka ubah kembali nilai karakter yang disubtitusikan. Berikut sintaks berdasarkan metode subtitusi yang saya gunakan di atas.

<php
// kembalikan subtitusi
$key = array(
    '1' => 'A',
    '6' => 'Z',
    '8' => 'K'
);
$temp = str_replace($key, array_keys($key), $input);
?>

Jika anda tidak mensubtitusi pada saat enkripsi, maka langkah ini dapat ditinggalkan.

Setelah kita dapatkan nilai asli (sebelum subtitusi), saatnya mengubah basis nilai tersebut kembali menjadi desimal. Namun bagaimana dengan kurung siku yang ada? Tidak usah khawatir, justru mereka akan mempermudah kerja kita. Kurung siku tersebut memisahkan nilai dari tiap-tiap huruf yang ada. Jika tidak menggunakan kurung siku / pembatas lain, maka nilai dari huruf dapat tercampur dan dapat terjadi kesalahan dalam dekripsi.

Dalam penguraian angka dengan kurung siku, prinsipnya adalah kita membaca per huruf dari depan. Jika menemukan karakter kurung siku buka "[" maka program mencatat nilai terus ke akhir kalimat sampai menemukan karakter kurung siku tutup "]". Jika karakter "]" ditemukan, maka program berhenti mencatat dan mencari karakter buka "[" lainnya untuk mencatat nilai huruf selanjutnya.

Njelasinnya gimana yah :s intinya sih gitu. Langsung ane kasih skripnya deh, moga-moga bisa dipahami.

<php
...

// FUNGSI UNTUK MENCATAT NILAI
function getval($text,$start){
 $start++;
 if($text[$start]!=']'){
  $val=$text[$start].getval($text,$start);
  return $val;
 }
}

// jika menggunakan subtitusi saat
// enkripsi, maka gunakan panjang
// $temp yang telah di ubah dalam
// format asli sebelum disubtitusi
// -
// namun jika saat enkripsi tidak
// disertai subtitusi, maka gunakan
// panjang dari $input
$length = strlen($temp);

// start looping
for($i=0;$i<$length;$i++)
 {
  // jika menemukan kurung siku buka
  if($temp[$i]=='['){
  
   // catat nilai
   $temp=getval($temp,$i);
   
   // ubah basis 9 -> desimal
   $temp = base_convert($temp,9,10);
   
   // baca ASCII
   $temp = chr($temp);
   
   // tampung output
   $out = $out.$temp;
  }
 }
?>

Nah, di skrip tersebut udah ane buatin fungsi untuk mencatat nilai dalam tanda kurung. Kali ini kagak ane jelasin cara kerja tuh fungsi, abis males njelasin rekursif,, bisa-bisa keluar dari bab enkripsi ntar :P

Kalo penasaran apa itu rekursi, cek halaman ini

Seperti halnya pada saat enkripsi, hasil dari pen-dekripsi-an telah tertampung dalam variabel $out.

Kalo misalnya bingung, ane ada file zip, tinggal donlot dan pakek. cekibrot

Pada project kali ini, fungsi base_convert(), chr(), dan ord() memiliki peran utama. Fungsi tersebut akan mengubah teks normal menjadi teks ter-enkripsi maupun sebaliknya sesuai dengan rumus yang kita tentukan.

Kelebihan:
  • Memiliki tingkat pengamanan berlapis.
    • Tingkat 1: pemilihan basis
    • Tingkat 2: kombinasi basis
    • Tingkat 3: subtitusi akhir
  • Tingkat kesalahan penerjemahan relatif kecil.
  • Metode yang kompleks menambah poin keamanan.
Kekurangan:
  • Jika dibanding metode subtitusi pada posting sebelumnya, program ini membutuhkan memory lebih besar, tergantung dari panjang kalimat yang diinputkan. Semakin panjang input, semakin lama dan besar waktu serta memory untuk menjalankan program dikarenakan harus membaca tiap huruf pada input satu per satu.

Hasil dari percobaan di atas adalah: » seperti ini «



[Semoga Bermanfaat]

Membuat Enkripsi Sederhana Menggunakan PHP

Posted by Gora Santika


Sumber Gambar : webtoolsandtips.com

Selamat pagi untuk semua. Pagi ini saya akan berbagi sedikit tutorial tentang membuat enkripsi sederhana menggunakan PHP. Secara sederhana, enkripsi adalah mengubah (meng-kode-kan) sebuah pesan yang dapat dimengerti manusia menjadi sulit atau bahkan tidak dapat dimengerti oleh manusia. Tujuannya adalah untuk menjaga kerahasiaan pesan tersebut.

Skrip enkripsi yang akan kita buat kali ini menggunakan metode subtitusi karakter yang memanfaatkan fungsi str_replace(). Algoritma pemrogramannya kurang lebih seperti ini:

  • Sebuah input kita baca secara keseluruhan.
  • Ganti karakter pada input sesuai dengan kode yang kita buat.
  • Tampilkan hasil enkripsi sebagai sebuah output.

Sederhana bukan?


Saatnya beraksi...

Langkah pertama adalah menyiapkan daftar kode/sandi yang diperlukan. Pada contoh kali ini, saya akan mengubah huruf vokal pada input.

<?php
$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+'
);
?>

Berhubung sifat dari str_replace() adalah case sensitive (huruf besar-kecil diperhatikan) maka sebelum kita proses, ada baiknya jika input kita ubah menjadi lowercase (huruf kecil) terlebih dahulu. Jika anda ingin mempertahankan besar-kecil nya huruf, anda dapat menambahkan beberapa index pada variabel $key yaitu huruf besar.

<?php
$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+',
 
 'A' => '!',
 'I' => '%',
 'U' => '_',
 'E' => '=',
 'O' => '*'
);
?>

Setelah kunci peng-kode-an siap, saatnya mensubtitusikan kode kita.

<?php
// Jika ingin membuat menjadi lowercase
// $input = strtolower($input);

// Subtitusi kode
$output = str_replace(array_keys($key), $key, $input);

// Menampilkan output
echo $output;
?>

Skrip secara keseluruhan:

<?php
$input=$_POST["input"];

$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+',
 
 'A' => '!',
 'I' => '%',
 'U' => '_',
 'E' => '=',
 'O' => '*'
);

// Jika ingin membuat menjadi lowercase
// $input = strtolower($input);

// Subtitusi kode
$output = str_replace(array_keys($key), $key, $input);

// Menampilkan output
echo $output;
?>

<form action="" method="post">
 <textarea name="input" cols="30" rows="8"></textarea>
 <input type="submit" value="Encrypt!" />
</form>

Untuk menambah variasi, dapat pula dituliskan kombinasi huruf unik pada variable $key seperti:

<?php
$key = array(
 'a' => '[53]',
 'i' => '[76]',
 'u' => '[25]',
 'e' => '[99]',
 'o' => '[01]',
 
 'A' => '[02]',
 'I' => '[55]',
 'U' => '[18]',
 'E' => '[19]',
 'O' => '[15]'
);

Untuk dekripsi kode, kita tinggal membalik variable pada str_replace()

// Enkripsi
$output = str_replace(array_keys($key), $key, $input);

// Dekripsi
$output = str_replace($key, array_keys($key), $input);
Pada project kali ini, fungsi str_replace() memiliki peran utama. Fungsi tersebut menerjemahkan teks yang kita masukkan menjadi kode yang kita harapkan.

Kelebihan:
  • Algoritma sederhana, tidak sulit untuk dibuat.
  • Tiap orang bisa membuat variasi yang berbeda.
  • Semakin kreatif mensubtitusi, semakin kuat enkirpsi.
  • Karena buatan sendiri, tidak ada yang mengerti algoritmanya.
  • Kerahasiaan algoritma ada di tangan anda sebagai pembuat.
Kekurangan:
  • Skrip di atas menggunakan metode subtitusi karakter alphabet menjadi karakter spesial. Jika user memasukkan salah satu dari karakter spesial yang tertulis di atas pada input, tidak akan terjadi masalah saat enkripsi. Namun saat dekripsi akan terjadi kesalahan penerjemahan.

Hasil dari percobaan di atas adalah: » seperti ini «

Berhubung di program ini masih ditemukan bug, maka saya coba memperbaikinya di PHP Enkripsi Tingkat Lanjut.



[Semoga Bermanfaat]