Rabu, 21 Maret 2012

UPLOAD FILE KE SERVER DENGAN MENGGUNAKAN PHP.

UPLOAD FILE KE SERVER DENGAN MENGGUNAKAN PHP.

 Kali ini saya akan membahas tentang upload file menggunakan PHP. Tentu menyenangkan jika pengguna website anda dapat melakukan upload gambar, dokumen atau video kedalam website anda. Artikel ini akan menerangkan cara mengupload file keserver anda dengan PHP.
PHP membuat semuanya menjadi lebih mudah dalam menangani upload file. Untuk membuat form upload pastikan kita menyertakan atribut enctype="multipart/form-data" dan pastikan methodnya adlaha post. Oke langsung saja kita lihat kode HTML berikut ini:
<form method="post" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
<input type="file" name="myfile"> 
<input type="submit" name="Submit" value="Submit">
</form>
Seperti yang kita lihat, kita me,mberi nama pada field upload kita "myfile". Nama ini sangat penting, karena ketika file telah diupload maka file tersebut otomatis diberi nama yang unik dan disimpan di temporary direktori. Tentu saja url path ke filenya bisa diakses, karena otomatis akan muncul variabel global yang memiliki nama yang sama dengan field upload kita, dalam hal ini myfile. Akan ada 4 variabel baru yang semuanya diawali dengan myfile dan diikuti dengan garis bawah (underscore), yaitu:
  • $myfile. Variabel ini berisi informasi lokasi file di server.
  • $myfile_name. Nama file asli ketika masih dikomputer klien.
  • $myfile_size. Ukuran dari file (dalam satuan bytes).
  • $myfile_type. Tipe file.

Upload sederhana

Langsung saja kita coba contoh upload berikut ini, simpan dengan nama upload.php:
<html>
<head>
<title>Upload file</title>
</head>
<body>
<?
if ( isset( $upload ) ) { 
    echo "Lokasi File: $myfile<br>";
    echo "Nama File: $myfile_name<br>";
    echo "Ukuran: $myfile_size bytes<br>";
    echo "Tipe File: $myfile_type<br>";
    copy ( $myfile, "$myfile_name") or die ("Gagal mengupload");
}
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post">
<input type="file" name="myfile"><br>
<input type="submit" value="upload" name="upload">
</form>
</body>
</html>
Ketika tombol upload ditekan, maka url path file tersebut akan disimpan di variabel $myfile dan kita tampilkan dibrowser. Kita juga menampilkan nama file yang tersimpan pada variabel $myfile_name, ukuran file di variabel $myfile_size dan tipe file di variabel $myfile_type.
Kita menggunakan fungsi copy() untuk memindahkan file dari komputer kita direktori sementara di server kita. Fungsi copy() membutuhkan dua argumen yaitu lokasi awal file dan lokasi baru diserver. Jika kita ingin mengupload nya ke suatu folder diserver (katakanlah kita simpan difolder images) maka kita perlu mengubahnya menjadi: copy ( $myfile, "images/$myfile_name")

Upload yang lebih kompleks

Sekarang mari kita coba membuat fungsi upload yang jauh lebih rumit. Misalkan kita ingin membuat fungsi upload dimana file yang diupload harus file jpg, dan ukurannya tidak boleh lebih besar dari 100Kb serta panjang dan lebar gambar tidak boleh lebih dari 100 piksel. Kelihatannya rumit kan? Mari kita coba kode berikut dan simpan dengan nama upload2.php:
<html>
<head>
<title>Upload file</title>
</head>
<body>
<?
if ( isset( $upload ) ) { 
echo "Lokasi File: $myfile<br>";
echo "Nama File: $myfile_name<br>";
echo "Ukuran: $myfile_size bytes<br>";
echo "Tipe File: $myfile_type<br>";
if ( $myfile_type == "image/pjpeg" ) {
    if ($myfile_size <= 102400 ) {
        list($width, $height) = @getimagesize("$myfile");
        if ( $width <= 100 && $height <= 100 
) {
            copy ( $myfile, 
"$myfile_name") or die ("Couldn't copy");
            echo "File anda telah sukses diupload";
        } else {
            echo "Ukuran panjang dan lebar gambar terlalu besar";
        }
    } else {
        echo "Ukuran file tidak boleh lebih dari 100Kb";
    }
} else {
    echo "File harus JPG!!";
}
}
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post">
<input type="file" name="myfile"><br>
<input type="submit" value="upload" name="upload">
</form>
</body>
</html>
PHP tidak memiliki kemampuan untuk membuat progress bar ketika file diupload. Karena PHP tidak dapat mengetahui berapa bagian yang telah diupload dan berapa yang belum. Kita perlu menggunakan CGI. Tetapi entah dengan PHP terbaru, siapa tau sudah memiliki class atau fungsi untuk membuat progress bar.
Pertama-tama yang kita lakukan adalah mengecek apakah file kita jpg dengan cara mengecek $myfile_type. Jika hasil dari variabel $myfile_type adalah "image/pjpeg", maka bisa dipastikan bahwa file kita adalah jpg. Berikutnya kita melakukan pengecekan apakah ukuran filenya tidak lebih besar dari 100Kb dengan mengecek variabel $myfile_size. Ingat bahwa 100Kb = 102400Bytes(Rumusnya 1Kb=1024Bytes). Kemudian kita menggunakan fungsi getimagesize() untuk menemukan panjang dan lebar dari gambar yang kita simpan dengan array menggunakan fungsi list(). Kemudian kita cek panjang dan lebar dari gambar apakah tidak lebih dari 100 piksel. Jika semuanya terpenuhi maka filenya tinggal kita copy. Cukup mudah kan? gampang... anda pasti bisa.
Ingat, berhati-hatilah dalam membuat upload file. Saringlah file yang mau diupload, jika anda hanya menginginkan orang mengupload file jpg ya anda harus cek apakah file yang diupload benar-benar file jpg. Bagaimana jika nanti yang diupload malah virus? karena itu waspadalah, waspadalah!! 

MENAMPILKAN RSS DI WEBSITE DENGAN PHP, pelajari bagaimana memparsing RSS.

MENAMPILKAN RSS DI WEBSITE DENGAN PHP, pelajari bagaimana memparsing RSS.

Anda tentu sudah mengetahui tentang RSS. Ya, RSS merupakan sebuah file yang dibuat dengan struktur XML yang fungsinya untuk menampilkan sepenggal informasi dari suatu website. Karena RSS merupakan file XML maka file tersebut bisa diakses oleh website lainnya, RSS reader ataupun software desktop. Kali ini kita akan mencoba menampilkan RSS dari suatu website di dalam website kita.
RSS menggunakan file XML, karena itu semua file RSS didunia harus sama. Maka struktur file RSS telah distandarkan agar apabila anda membuat aplikasi untuk membaca file RSS, maka aplikasi anda dapat membaca file RSS dari website manapun diseluruh dunia.

Sejarah RSS

Saya tidak akan bicara panjang lebar mengenai sejarah RSS, yang past RSS pertama kali diperkenalkan oleh Netscape pada tahun 1999 yang digunakan pada situs My.Netscape.com. Pada waktu itu RSS yang keluar pertama kali adalah RSS versi 0.9 dan kepanjangan RSS waktu itu adalah RDF Site Summary.
Tahukah anda, bahwa logo RSS yang berwarna orange dan ada gambar sinyal radio nya itu pertama kali digunakan oleh browser Mozilla Firefox pada tahun 2005. Dan untuk pertama kalinya Internet Explorer bekerjasam dengan Mozilla yaitu IE tertarik menggunakan icon RSS pada Firefox dan menggunakannya di browser IE7. Setelah itu Opera pun mengikutinya dan sekarang icon tersebut telah menjadi simbol RSS.
Sekarang RSS telah ada dalam versi RSS 2.0 dan kepanjangannya sudah ganti menjadi Really Simple Syndication. Bahkan variannya juga sudah mulai banyak seperti Atom dan Podcasts. Tetapi RSS masih tetap paling populer karena kemudahannya sampai saat ini. Oke sekarang jika anda menemukan website yang menyediakan RSS ini berarti anda dapat menampilkan sepenggalan berita pada website tersebut kedalam website anda. Dan karena RSS bentuknya XML anda tentu harus mengubah isi RSS tersebut / Parsing kebentuk yang kita inginkan, atau minimal enak dibaca. Karena RSS berbentuk XML maka kita perlu mengetahui dulu strukturnya. Perhatikan contoh struktur dari RSS website dhimasronggobramantyo.com:
<?xml version="1.0" encoding="utf-8"?>
    <rss version="2.0">
    <channel>
        <title>Belajar Web</title>
        
<link>http://www.dhimasronggobramantyo.com</link> 
        <description>Situs yang berisi 
artikel dan tutorial untuk membuat dan mengembangkan website</description>
        <language>en-us</language> 
        <lastBuildDate>Sat, 03 Nov 2007 
15:16:46 GMT</lastBuildDate>
        <ttl>10</ttl> 
        <image>
            
<title>dhimasronggobramantyo.com</title> 
            
<width>142</width> 
            
<height>18</height> 
            
<link>http://www.dhimasronggobramantyo.com</link> 
            <url>http://www.dhimasronggobramantyo.com/images/rssbutton.gif</url>

        </image>
        <item>
            <title>Aturan 
membuat Forms</title>
            
<link>http://www.dhimasronggobramantyo.com/Aturan_membuat_Forms_dan_bagaimana_membuat_Forms_yang_sesuai_prinsip_Web_Standards</link>
        <pubDate>Sat, 03 Nov 2007 03:14:56 
GMT</pubDate> 
        <description>Forms merupakan bagian 
terpenting dalam website, hampir semua website yang ada saat ini memiliki forms, 
entah itu hanya form sederhana untuk melakukan pencarian ataupu forms kompleks 
untuk pendaftaran anggota. Tetapi kadang kita meremehkan form, disini saya akan 
mengajarkan cara membuat form yang baik dan benar.</description> 
            </item>
            <item>
                
<title>Statistik Pengunjung pada bulan Oktober 2007</title>
            
<link>http://www.dhimasronggobramantyo.com/Statistik_Pengunjung_pada_bulan_Oktober_2007</link>
                
<pubDate>Fri, 02 Nov 2007 11:16:43 GMT</pubDate> 
                
<description>Saya berencana untuk memberikan informasi jumlah pengunjung website 
ini setiap bulannya. Dan inilah statistik kunjungan website untuk bulan Oktober 
2007. Saya menggunakan tools Google Analytics, dan karena website ini baru 
online tanggal 10 Oktober 2007, maka pengunjung bulan ini masih sedikit.</description>

            </item>
    </channel>
</rss>
Jika anda perhatikan struktur RSS diatas, maka anda dapat melihat bahwa RSS tersebut menampilkan 2 berita. Berita/informasi berada didalam <item>, dan didalamnya ada <title>, <link>, <pubDate> dan <description>. Nah nanti kita akan memparsing <item> dan menampilkannya diwebsite kita agar enak dilihat. Apa anda bisa membaca jika tampilannya seperti contoh diatas?
Mungkin anda bertanya-tanya, parsing tu seperti apa? oke, jika anda punya Internet Explorer 7 atau Mozilla Firefox. Silahkan buka RSS situs ini yaitu: http://www.dhimasronggobramantyo.com/newsrss.xml. Maka yang anda lihat bukan isi RSS nya seperti contoh diatas, tetapi sudah ditampilkan dengan baik. Ini karena IE7 dan Mozilla dapat memparsing RSS. Nah kita akan membuatnya dengan PHP.

Parsing RSS

Cara paling gampang untuk parsing RSS adalah dengan menggunakan Magpie RSS, sebuah class PHP yang dapat anda download dengan gratis. Tetapi saya senang dengan tutorial dari Kevin Yank dari Sitepoint. Karena kita bisa memanipulasi tampilan RSS kita. Disini kita akan menggunakan kode dari tutorial tersebut tetapi kita manipulasi agar kodenya lebih sederhana serta kita bisa menampilkan berapa jumlah RSS yang ingin kita tampilkan dan agar kita bisa menampilkan gambar dalam RSS tersebut.
Karena itu silahkan anda kunjungi tutorial aslinya untuk mengetahui fungsi-fungsi yang digunakan secara lebih detail. Karena saya hanya akan menerangkan bagian-bagian yang saya ubah dan tambahkan. Oke langsung saja kita coba, kodenya sedikit hanya satu file saja, nanti bisa anda manipulasi sendiri. Buatlah file rss.php dan isilah dengan kode berikut ini:
<?
  function startElement($parser, $name, $attrs) {
    global $insideitem, $tag, $title, $description, $link, $pubDate;
    if ($insideitem) {
      $tag = $name;
    } elseif ($name == "ITEM") {
      $insideitem = true;
    }
  }
  function endElement($parser, $name) {
    global $insideitem, $tag, $title, $description, $link, $pubDate, $i;
   if (!$i) {
      $i=1;
    }
    if (($name == "ITEM") && ($i<=5)) {
     $i++;
      printf("<h3><a href='%s' class=main target=_blank>%s</a></h3>%s<p>%s</p>",
    trim($link),trim($title), substr($pubDate,0,16), $description);
    $title = "";
    $description = "";
    $link = "";
    $pubDate="";
    $insideitem = false;
  }
}
function characterData($parser, $data) {
  global $insideitem, $tag, $title, $description, $link, $pubDate;
  if ($insideitem) {
    switch ($tag) {
    case "TITLE":
    $title .= $data;
    break;
    case "DESCRIPTION":
    $description .= $data;
    break;
    case "LINK":
    $link .= $data;
    break;
    case "PUBDATE":
    $pubDate .= $data;
    break;
    }
  }
  }
  $insideitem = false;
  $tag = "";
  $title = "";
  $description = "";
  $link = "";
  $pubDate ="";
  $xml_parser = xml_parser_create();
  xml_set_element_handler($xml_parser, "startElement", "endElement");
  xml_set_character_data_handler($xml_parser, "characterData");
  $fp = fopen("http://www.dhimasronggobramantyo.com/newsrss.xml","r");
  while ($datarss = fread($fp, 4096)) 
    xml_parse($xml_parser, $datarss, feof($fp))
  or die(sprintf("XML error: %s pada baris %d", 
  xml_error_string(xml_get_error_code($xml_parser)), 
  xml_get_current_line_number($xml_parser)));
  fclose($fp);
  xml_parser_free($xml_parser); 
  ?>
Silahkan anda coba jalankan, atau anda dapat melihatnya disini. Perlu diingat anda harus memiliki koneksi internet untuk mencobanya, karena kita mengambil RSS dari situs ini secara online. Oke jika kita perhatikan kodenya, kita memiliki 3 fungsi: startElement, endElement dan characterData. Ketiga fungsi tersebut merupakan fungsi untuk memparsing dan membagi-bagi tag XML didalm RSS.
Nah saya akan menjelaskan mengenai fungsi yang telah saya ubah yaitu endElement. Jika anda perhatikan pada fungsi endElement saya menambahkan variabel $i. Variabel ini gunanya nanti untuk jumlah isi berita yang ingin ditampilkan dalam RSS. Dalam contoh diatas saya hanya ingin menampilkan 5 saja. Oke jika anda lihat diatas saya memasang kode:
  if (!$i) {
     $i=1;
   }
Nah disitu saya hanya melakukan pengecekan sederhana, jika belum ada variabel $i maka akan saya buat variabel $i dengan isinya 1. Kemudian kode berikutnya adalah seperti ini:
   if (($name == "ITEM") && ($i<=5)) {
    $i++;
    printf("<h3><a href='%s' class=main target=_blank>%s</a></h3>%s<p>%s</p>",
    trim($link),trim($title), substr($pubDate,0,16), $description);
    $title = "";
    $description = "";
    $link = "";
    $pubDate="";
    $insideitem = false;
  }
Kuncinya adalah pada pengecekan yang ini, dimana kita mengecek ($i<=5). Jika anda ingin menampilkan 10 isi RSS tersebut anda tinggal mengubahnya saja menjadi 10. Nah untuk menampilkan RSSnya kita menggunakan fungsi printf
    printf("<h3><a href='%s' class=main target=_blank>%s</a></h3>%s<p>%s</p>",
    trim($link),trim($title), substr($pubDate,0,16), $description);
Fungsi printf ini berfungsi untuk menampilkan pada layar sebuah teks dan variabelnya. Karena semua variabel yang ingin ditampikan bentuknya teks / string maka kita menggunakan %s. Dimana pada %s yang pertama isinya adalah trim($link), %s yang kedua isinya adalah trim($title), %s yang ketiga isinya adalah substr($pubDate,0,16) dan seterusnya.
Nah, pada bagian printf inilah anda memasang kode HTML untuk mempercantik tampilan RSS anda. Mudah kan, selamat mencoba, mungkin penjelasan syaa kali ini agak kurang lengkap, karena saya menulis artikel ini terburu-buru agar diwebsite ini ada sesuatu yang baru. Sudah 1 bulan ini saya sibuk dan baru bisa menulis artikel baru sekarang, jadi jangan kaget kalau artikel diwebsite ini mulai jarang, tapi tenang saja saya sudah menyiapkan beberapa artikel menarik.