Berlatih Membuat Program PHP bagian 7 - File Upload

Upload File


Seperti yang telah kita singgung sebelumnya pada bab 5, bahwa kita juga bisa mengirim file dengan metode post. Kali ini kita akan latihan membuat formulir yang dapat mengirim file kemudian dapat diterima server sehingga nantinya file dapat disimpan dan dipanggil lagi bila dibutuhkan. 

Yang kita perlukan adalah dua file yaitu formulir untuk mengirim, dan satu lagi file untuk memproses hasil kiriman dari formulir tersebut. Langsung saja berikut ini contoh formulirnya:

Contoh formulir.php

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Pilih gambar yang diupload:
    <input type="file" name="fileDiUpload" id="fileToUpload"><br>
    <input type="submit" value="Upload" name="submit">
</form>

</body>
</html>

Bila kita perhatikan pada kode formulir diatas, formulir upload memiliki perbedaan dengan formulir yang biasa (tanpa mengirim file). Pada form upload kita perlu menggunakan methode post, disamping itu ada tambahan atribut enctype="multipart/form-data". Tanpa kedua syarat diatas, maka proses upload akan menemui kegagalan. Sedangkan untuk kolom file yang akan dikirim, tipe input adalah file.
Berlatih Membuat Program PHP bagian 7 - File Upload

File upload.php

<?php
echo "Nama file Upload: ".$_FILES["fileDiUpload"]["name"]."</br>";
echo "Type file Upload: ".$_FILES["fileDiUpload"]["type"]."</br>";
echo "Ukuran file Upload: ".($_FILES["fileDiUpload"]["size"]/1024)."Kb</br>";
echo "Dikirim dengan Nama: ".$_FILES["fileDiUpload"]["tmp_name"]."</br>";
?>

Pada file yang menerima hasil kiriman dari formulir, pengiriman dengan input file dikirim melalui variabel globar berupa array $_FILES. Dengan menggunakan variabel global $_FILES kita dapat mengirim (upload) file dari client ke server menggunakan form. Pada $_FILES terdapat array yang otomatis terkirim, isinya antara lain:
  • $_FILES["fileDiUpload"]["name"] : Nama file yang diupload
  • $_FILES["fileDiUpload"]["type"] : Type file yang diupload
  • $_FILES["fileDiUpload"]["size"] : Ukuran dalam byte yang diupload
  • $_FILES["fileDiUpload"]["tmp-name"] : Nama duplikat atau copy sementara yang kirim
  • $_FILES["fileDiUpload"]["error"] : Kode eror file yang diupload


Catatan:
Proses upload ini perlu diberikan perhatian lebih. Proses upload merupakan salah satu hal yang membahayakan program, Sebab seringkali proses upload ini digunakan sebagai jalan orang tidak bertanggung jawab untuk mengirim file yang berisi kode jahat. Sehingga agar lebih aman perlu manajemen hak user tertentusaja yang boleh melakukan upload.  Tidak sembarang orang boleh melakukan upload.

Agar proses upload lebih sesuai dengan kebutuhan maka kita dapat melakukan penyesuaian. Misalkan kita memberlakukan batasan jenis file yang akan diupload, batasan ukuran dan kita juga bisa memberikan nama sendiri file yang diupload secara otomatis. Sehingga hasil kode programnya seperti berikut:

File upload.php dengan tambahan batasan-batasan yang bisa disesuaikan

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

Berlatih Membuat Program PHP bagian 6 - Include dan Require

Include dan Require

Programmer PHP tentunya menulis kode program didalam suatu file berekstensi (.php). Bila program masih sederhana dan simple tidak ada salahnya menulis kode program hanya dalam satu file saja. Namun, apabila program sudah mulai kompleks dengan banyak blok kode program maka akan lebih baik bila masing-masing blok yang memiliki tujuan khusus disimpan di file yang berbeda. 

Mengapa Menggunakan Include atau Require

Saking kompleksnya program tidak jarang apabila seorang programer handal membagi programnya kedalam beberapa modul, yang dibagi dalam folder dan beberapa file. Dengan membagi kode kedalam bagian kecil maka proses pemeliharaan (maintenance) kode menjadi lebih mudah sebab satu bagian tidak langsung mempengaruhi bagian yang lain. Dengan cara demikian juga akan memudahkan apabila proses membangun aplikasi dikerjakan bersama dengan programer lain sehingga menjadi Tim pengembangan.

Setelah bagian program sudah dikelompokkan dan dibagi menjadi beberapa modul dan file, maka untuk memanggil modul bisa memanfaatkan perintah include atau require. Perintah include dan require di pemrograman PHP berfungsi untuk mengambil seluruh text atau kode suatu file kemudian menyisipkannya kedalam file pemanggil. Fungsi include ini sangat berguna ketika programmer sudah membagi program kedalam beberapa bagian yang diletakkan kedalam beberapa file. Kemudian bagian atau file tersebut baru dipanggil ketika dibutuhkan saja. File yang dapat di include atau di require antara lain file yang berekstensi HTML, Text dan tentu saja PHP juga.

Cara Menggunakan Include dan Require

Memanggil perintah include atau require cukup sederhana yaitu dengan memanggil nama file yang dipanggil didalam kurung setelahnya. 
Contoh:
<?php
include("sisipan1.php");
require("sisipan2.php");
?>
Untuk memanfaatkan include atau require maka anda membutuhkan file yang berjumlah lebih dari satu. Sebuah file berfungsi sebagai pemanggil dan file yang lain sebagai yang dipanggil. Pada struktur program yang lebih kompleks contohnya Framework, CMS ataupun program php yang lain lebih disarankan untuk menggunakan require daripada include. Dengan alasan untuk menjaga keamanan sistem apabila ada file yang mungkin hilang atau tidak sesuai.

Contoh:
File pemanggil.php
<html>
<body>

<h1>Selamat Datang!</h1>
<p>Anda berada di file pemanggil.</p>
<p>Sedangkan dibawah ini adalah kode dari file yang dipanggil.</p>
<?php include('dipanggil.php');?>

</body>
</html>

File dipanggil.php
<?php
echo "<p>Copyright &copy; 2000-" . date("Y") . " inwahyu.com</p>";
?>

Berlatih Membuat Program PHP bagian 6

Perbedaan include() dan require()

Pada dasarnya fungsi include() dan require() memiliki kemampuan yang sama. Perbedaannya adalah pada cara menangani kesalahan. Pada fungsi include(), jika file yang disisipkan ternyata tidak ditemukan (karena file tidak ada atau memang lokasi yang salah) maka program atau perintah PHP selanjutnya (setelah include) akan tetap dijalankan walaupun menampilkan error.

Berbeda dengan require() jika file yang disisipkan tidak ditemukan (karena lokasi yang salah atau memang file tidak ada) maka program atau perintah PHP selanjutnya (setelah require) tidak akan dijalankan dan menampilkan fatal eror.

Itulah tadi cara menyisipkan file menggunakan include dan require. Demikian tulisan kali ini, Semoga keterangan diatas bermanfaat untuk anda.

Berlatih Membuat Program PHP bagian 5 - Form dan Input

Formulir dan Masukan (Input)

Sebuah program tentu ada yang kurang apabila tidak dapat berinteraksi dengan pengguna. Salah satu cara untuk berinteraksi adalah melalui input jadi program bukan hanya menghasilkan output saja. Sebelum input diproses, input ditampung terlebih dahulu di suatu formulir. Kemudian setelah data yang diperlukan diisikan, formulir dapat mengirim data (submit) yang sudah diinput ke pemrosesbisa melakukan dengan dua macam cara (metode). 

Metode yang bisa digunakan antara lain yaitu POST dan satu lagi GET. Metode ini akan menghasilkan variabel superglobal masing-masing $_POST dan $_GET. Tidak dapat saling tertukar.

Contoh 1:

file formulir_get.php dengan kode program berikut:

<html>
<body>
<h1>Formulir GET</h1>
<form action="pemroses_get.php" method="get">
Nama: <input type="text" name="nama"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" value ="Proses">
</form>
</body>
</html>
Berlatih Membuat Program PHP bagian 5

File pemroses_get.php

<html>
<body>
Hai <?php echo $_GET["name"]; ?><br>
Email anda : <?php echo $_GET["email"]; ?>
</body>
</html>


Contoh 2:

file formulir_post.php dengan kode program berikut:

<html>
<body>
<h1>Formulir POST</h1>
<form action="pemroses_post.php" method="post">
Nama: <input type="text" name="nama"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" value ="Proses">
</form>
</body>
</html>

File pemroses_post.php

<html>
<body>
Hai <?php echo $_POST["name"]; ?><br>
Email anda : <?php echo $_POST["email"]; ?>
</body>
</html>

GET vs POST

Meskipun sama-sama dapat dimanfaatkan untuk mengirim data (metode) dan menampung data (variabel), Tetapi get dan post adalah hal yang berbeda. Masing-masing memiliki kelebihan dan kelemahan. 

Karakteristik GET

GET mengirim data melalui URL sehingga data bisa terlihat dari address bar browser dalam jumlah terbatas. Karena data bisa terlihat maka cara ini sering dianggap kurang aman untuk mengirim data sensitif seperti pasword ataupun hak akses. Jumlah pengiriman data melalui GET yang dibatasi hanya sampai 2000 karakter ini agar proses dapat berlangsung dengan cepat.

Karakteristik POST

POST mengirim data tanpa terlihat melalui url sehingga dianggap lebih aman untuk mengirim data sensitif. Selain itu pengiriman data melalui metode POST tidak dibatasi dengan jumlah karakter sehingga selain mampu mengirim data berukuran besar bisa juga dimanfaatkan mengirim file.

Variabel Global REQUEST

Seperti yang sudah disinggung pada keterangan diatas. Pada dasarnya metode pengiriman get data dikirim dalam variabel global $_GET berupa array. Begitu pula dengan post pengiriman data dikirim dalam variabel global $_POST berupa array. Masing-masing cara diatas tidak dapat saling tertukar. Namun ada variabel global khusus yang bisa mengakses kedua jenis metode tersebut yaitu REQUEST. 

Contoh 3:

Form bisa menggunakan metode get atau post seperti contoh diatas, tetapi variabel bisa diakses melalui request:

file formulir_post.php dengan kode program berikut:

<html>
<body>
<h1>Formulir POST</h1>
<form action="pemroses_request.php" method="post">
Nama: <input type="text" name="nama"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" value ="Proses">
</form>
</body>
</html>

File pemroses_request.php

<html>
<body>
Hai <?php echo $_REQUEST["name"]; ?><br>
Email anda : <?php echo $_REQUEST["email"]; ?>
</body>
</html>

Selamat belajar, Semoga bermanfaat.

Berlatih Membuat Program PHP Bagian 4 - Fungsi

Fungsi atau Function

Fungsi adalah blok program yang dapat dipanggil dan dioperasikan saat dibutuhkan. PHP memiliki banyak fungsi bawaan (native function) yang bisa dipanggil untuk tujuan tertentu. Setiap update versi PHP biasanya akan ada fungsi yang baru. Fungsi bisa memiliki keluaran atau output yang dapat di pergunakan lagi. Selain dapat menggunakan fungsi bawaan PHP kita juga bisa membuat function sendiri (custom).

Contoh 1:
<html>
<body>
<?php
// fungsi penanggalan bawaan PHP

echo "Hari ini tanggal ".date("j F Y");
?>
</body>
</html>
function di PHP

Contoh 2:
<html>
<body>
<?php
// blok fungsi
function salam(){
echo "selamat datang";
}

//cara memanggil
salam();
?>
</body>
</html>

Contoh 3:
<html>
<body>
<?php
// fungsi dengan masukan
function salam($nama){
echo "selamat datang ".$nama;
}
salam("Ratna");
?>
</body>
</html>

Contoh 4:
<html>
<body>
<?php
// fungsi dengan keluaran
function tambah(int a, int b){
return a+b;
}
echo "hasil 5+8= ".tambah(5,8);
?>
</body>
</html>

Contoh 5 :
<html>
<body>
<?php
// fungsi dengan keluaran tipe data tertentu
function tambah(float a, float b):int{
return a+b;
}
echo "hasil 5.1+8.7= ".tambah(5.1,8.7);
?>
</body>
</html>


Berlatih Membuat Program PHP Bagian 3 - Perulangan

Looping atau Perulangan


Statemen looping digunakan untuk menjalankan perintah untuk mengulang suatu blok program yang memenuhi kondisi tertentu. Pada umumnya statemen perulangan ini akan mempermudah eksekusi proses yang banyak. Setiap proses perulangan pada umumnya ada proses increment maksudnya nilai dalam variable ditambah satu setiap kali blok kode dijalankan atau bisa juga decrement atau nilai variable yang diuji dikurangi satu. Penambahan dengan increment atau pengurangan dengan decrement ini maksudnya agar pengujian kondisi bisa menemukan titik akhir atau kondisi statemen bernilai salah. Bila tidak ada akhirnya, ketika pengujian statemen bernilai benar, maka kode blok akan terus dijalankan oleh komputer sehingga bisa menimbulkan hang.

Jenis-jenis perulangan:

  • while
  • do... while
  • for
  • foreach

Berlatih Membuat Program PHP Bagian 3

Contoh 1 Menggunakan while

<html>
<body>
<?php 
$i = 1;
while ($i <= 5){ // keterangan *
echo "hasil ".$i."<br>";
$i++; //increment
}
?>
</body></html>

*baris kode dengan tanda (*) maksudnya nilai diuji apakah memenuhi kondisi tertentu? bila hasilnya benar maka kode didalam kurung akan dijalankan. 

Contoh 2 Menggunakan do... while

<html>
<body>
<?php
$i=0;
do{ // keterangan **
$i++;
echo  "hasil ".$i."<br>";
}while($i<5);
</body>
</html>

*baris kode dengan tanda (**) maksudnya kode didalam kurung setelah do akan dijalankan dahulu baru nilai diuji apakah memenuhi kondisi tertentu didalam kurung while? bila hasilnya benar maka perulangan diulangi kembali dari do{

Contoh 3 menggunakan for

<html>
<body>
<?php
for($i=1;$i<5;$i++){ // keterangan ***
echo "hasil ".$i."<br>";
}
</body>
</html>

*** baris kode dengan tanda (***) maksudnya kode didalam kurung setelah for melakukan pengujian statement dan langsung melakukan increment atau decrement. Dengan for maka kemungkinan program looping tanpa akhir bisa dihindari

Contoh 4 menggunakan foreach

<html>
<body>
<?php
$isi = array("satu","dua","tiga");
foreach($isi as $i){
echo "tampil: ".$i."<br";
}
?>
</body>
</html>
Foreach biasanya digunakan dalam memproses perulangan yang berhubungan dengan array. Meskipun menggunakan perulangan yang lain juga bisa, tetapi dengan foreach kode perulangan menjadi lebih sederhana.

Berlatih Membuat Program PHP Bagian 2 - Percabangan

Operasi Percabangan di PHP


Seringkali pada saat menulis kode program, programmer menemui suatu kondisi agar progam melaksanakan proses yang berbeda. Kondisi tersebut dapat dituliskan dengan kode percabangan. Di PHP kita dapat menuliskan kode percabangan menggunakan statemen seperti berikut:

  • if statemen - statemen baru dijalankan bila menemui sebuah kondisi tertentu
  • if ... else statemen - statemen dijalankan bila kondisi bernilai benar (true) dan yang lain bernilai salah (false)
  • if... else if ... else - statemen dijalankan dengan kondisi lebih dari dua
  • switch statemen - salah satu statemen dijalankan dari banyak pilihan

Percabangan di PHP

Contoh 1:
<html>
<body>
$d = date("D");
if($d=="Sun")
echo "Waktunya Liburan";
else
echo "Selamat Belajar";
?>
</body>
</html>

Contoh 2:
<?php
$nilai = 79;

if ($nilai < 50) {
    echo "Belajar Lebih Keras!";
} elseif ($nilai == 50) {
    echo "Kurang sedikit lagi!";
} else {
    echo "Anda Berhasil lebih baik!";
}
?>

Contoh 3:
<?php
$favcolor = "merah";

switch ($favcolor) {
    case "merah":
        echo "Warna favoritmu merah!";
        break;
    case "biru":
        echo "Warna favoritmu biru!";
        break;
    case "hijau":
        echo "Warna favoritmu hijau!";
        break;
    default:
        echo "Warna favoritmu ternyata bukan merah,biru atau hijau!";
}
?>

Berlatih Membuat Program PHP Bagian 1 - PHP adalah

Dasar PHP (PHP Hypertext Preprocessor)


PHP  adalah bahasa pemrograman script yang dapat disisipkan kedalam bahasa pemrograman yang lain untuk memproses data secara dinamis. Pada umumnya PHP disisipkan kedalam HTML langsung, bisa juga disisipkan kedalam javascript dan CSS yang disisipkan didalam HTML. Pemrograman PHP dikatakan sebagai server-side embeded script maksudnya sitaks dan perintah PHP sepenuhnya baru dapat dijalankan pada server, Sehingga untuk menjalankan PHP harus didalam server.

Untuk menjalankan PHP anda perlu melakukan installasi:
  • install sebuah web server misalnya Apache
  • install PHP
  • install database, misalnya MySQL, MariaDB, atau Postgree


Untuk mempermudah installasi server anda dapat menggunakan paket server seperti Xampp, Lampp dan lain sebagainya.

Alasan mengapa menggunakan PHP?

Ada banyak alasan orang menggunakan PHP untuk membuat aplikasi berbasis web. Namun, dari sekian banyak alasan pada dasarnya ada tiga yang utama;
1. PHP dapat dijalankan pada server dengan platform yang berbeda (windows, linux, macOs, dan lain sebagainya).
2. PHP merupakan bahasa scripting yang Open Source
3. php mudah dipelajari

Kode PHP ditulis dalam format ASCII, atau bentuk plain text. Sehingga siapapun dapat menulis program PHP dengan text editor biasa seperti misalkan menggunakan notepad (windows), gedit (linux), dan lain sebagainya. Untuk menulis script PHP disarankan menggunakan editor yang khusus untuk menulis kode program agar lebih mudah. Penulisan Kode php harus ditulis didalam area penulisan php. Contoh:
<html>
<?php
echo "Selamat datang, tulisan ini ditulis dalam PHP";
?>
</html>

Simpan kode diatas menjadi file latihan1.php dan letakkan pada server yang telah anda install. Bila anda menggunakan Xampp maka letakkan pada folder htdocs, bila anda menginstall paket tanpa Xampp di linux maka letakkan di folder /var/www/html/

Jalankan server yang telah anda install kemudian panggil php melalui browser dengan alamat:
http://latihan1.php

Variabel di PHP

Variabel merupakan tempat untuk menyimpan nilai. Nilai yang disimpan bisa berupa angka, text atau string, atau bisa juga hasil dari suatu fungsi. Tujuan menyimpan nilai dalam variabel adalah agar nilai tersebut dapat digunakan kembali bila dibutuhkan.

Variabel didalam PHP selalu diawali dengan simbul $ tanpa perlu didefinisikan tipenya. PHP akan secara otomatis dapat menentukan tipe variabel berupa angka, atau text.
Contoh
<?php
$txt="Selamat Datang";
echo $txt;
?>
sehingga tampil seperti berikut:
Berlatih Membuat Program PHP Bagian 1


Contoh pemanfaatan variabel dalam menyimpan nilai kemudian nilai tersebut digunakan kembali:
<?php
$txt1="Selamat Datang";
$txt2="123";
$nilai1=123;
$nilai2=321;
$gabung = $txt1.$txt2;
$penjumlahan = $nilai1+$nilai2;
echo $gabung;
echo $penjumlahan;
?>

Aturan pembuatan nama variabel

Variabel di PHP bebas dibuat dan diberi nama apa saja, namun ada aturan yang tidak boleh dilanggar:
- Nama variabel harus diawali tanda $ diikuti dengan huruf atau garis bawah
- Nama variabel bisa ditulis dengan angka (0-9), huruf(a-Z) dan garis bawah(_)
- Nama variabel tidak boleh mengandung spasi. Jika ditulis dalam dua kata atau lebih, maka untuk menuliskannya dapat menggunakan garis bawah contoh $nama_anggota atau huruf kapital $namaAnggota