• Tidak ada hasil yang ditemukan

File Upload

Dalam dokumen Diktat Web Database September 2011 (Halaman 74-81)

Advanced PHP Techniques

3. Building Web Application large project with PHP and MySQL

7.2 File Upload

Hal yang terpenting dari upload file adalah file tidak dapat dikirimkan dalam method GET. Karena ada limitasi besar size dari URL, ±1kb. Sedangkan File biasanya memiliki size lebih besar dari limitasi tersebut. Jadi biasanya digunakan sebuah form sebagai media pengirim file dan method POST.

Selain harus menggunakan method POST, form tersebut harus ditambahkan behaviour berupa ENCTYPE=”multipart/form-data”, di mana pada defaultnya behaviour dari form adalah ENCTYPE=” application/x-www-form-urlencoded”. Tujuannya agar

$_FILES[‘upload’]. Array tersebut dapat menampung nama file, besar size file (dalam bytes), tipe file, lokasi awal file, serta error file.

$_FILES[‘upload’][‘name’]; => menyimpan nama file yang dikirimkan

$_FILES[‘upload’][‘size]; => menyimpan besar file yang dikirimkan

$_FILES[‘upload’][‘tmp_name]; => menyimpan lokasi file dikirim

$_FILES[‘upload’][‘error]; => menyimpan error dari file yang dikirim

Untuk metode penyimpanan file sendiri terdiri dari beberapa jenis, mulai dari penyimpanan file secara fisik (dipindahkan file tersebut ke dalam server) maupun disimpan dalam bentuk binary ke dalam database (bloob).

Jika kita ingin menyimpan bentuk file fisik, kita tidak akan kesulitan dalam men-download file tersebut. Namun perlu diperhitungkan, besar size dari file yang di-upload tersebut akan langsung memotong besar kapasitas hard disk fisik server. Hal ini dapat menimbulkan kerugian, karena kapasitas server menjadi habis. Selain itu riskan untuk terkena file injection (akan dijelaskan di dalam web security). Jika kita menggunakan metode penampungan di database, akan sulit dalam hal penanganan penyimpanan informasi.

File upload (physical) :

 Form.php :

<form enctype=”multipart/form-data” method=”POST” action=”Upload.php”>

<input type=”file” name=”tryToUpload” />

<input type=”submit” value=”upload” />

</form>

 Upload.php:

Notes : Untuk validasi lainnya bisa ditambahkan sesuai kebutuhan.

Untuk penyimpanan file menggunakan database, anda harus menyiapkan 1 field dengan tipe bloob. Lalu source file yang ada diubah bentuknya menggunakan fungsi file_get_contents(source); lalu di save ke dalam database.

7.3 Paging

Paging adalah konsep menampilkan data per halaman dengan jumlah data per halamannya sesuai yang diinginkan, di bawah ini link contoh script PHP untuk menampilkan 5 data per halaman:

<?php

$host = “localhost”;

$user = “root”;

$pass = “”;

$db = “info”;

$conn = mysql_connect(“$host”,”$user”,”$pass”) or

if(!$_GET['page'])

$page = 0;

else

$page = $_GET['page'];

$qmon = “select * from info order by id desc limit $page,$record_home”;

$query = mysql_query($qmon, $conn);

echo mysql_error();

if(mysql_num_rows($query)==0) {

echo “<BR>Tidak terdapat berita”;

}

<a href=”?page=0″>First</a> – <a

href=”?page=<?=$page-$record_home?>”>Previous</a> -

<?php

}

$nav = “select count(*) from info”;

$query = mysql_query($nav,$conn);

<a href=”?page=<?=$page+$record_home?>”>Next</a> – <a

href=”?page=<?=(ceil($n/$record_home)*$record_home)-$record_home?>”>Last</a>

Fungsi PHP mail() menyediakan fasilitas untuk mengirimkan email secara langsung dari script. Fungsi mail() ini memerlukan program PHP yang sudah diinstall dan juga sistem email yang bekerja. Tidak membutuhkan installasi program tambahan. Program yang digunakan ditentukan oleh pengaturan konfigurasi pada file php.ini.

Runtime Configuration

Sifat dari fungsi mail ini dipengaruhi oleh pengaturan pada file php.ini.

server SMTP

smtp_port “25” Windows: Nomor port

SMTP. Tersedia sejak PHP 4.3

PHP_INI_ALL

sendmail_from NULL Windows:

Menentukan alamat

sendmail_path NULL Unix system:

Menentukan dimana

To Diperlukan. Menentukan penerima email

Subject Diperlukan. Menentukan subyek email. Catatan: parameter ini tidak boleh berisi karakter baris baru

Message Diperlukan. Mendefinisikan pesan yang akan dikirim. Setiap baris harus dipisahkan dengan LF (\ n). Garis tidak boleh melebihi 70 karakter Headers Opsional. Menentukan header tambahan, seperti From, Cc, dan Bcc.

Header tambahan harus dipisahkan dengan CRLF (\ r \ n)

Parameters Opsional. Menentukan parameter tambahan untuk program sendmail Berikut ini merupakan contoh kodingan email dengan nama file “frmMail.php” :

<html>

<title>Simple Mail Form</title>

<body>

<?php

if (isset($_REQUEST['email'])) //if "email" is filled out, send email {

//send email

$email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("[email protected]", "$subject", $message, "From:" . $email);

echo "Thank you for using our mail form";

} else

//if "email" is not filled out, display the form {

echo "<form method='post' action='frmMail.php'>

Email: <input name='email' type='text' /><br />

Subject: <input name='subject' type='text' /><br />

Message:<br />

<textarea name='message' rows='15' cols='40'>

</textarea><br />

<input type='submit' />

</form>";

}

?>

</body>

</html>

Berikut penjelasan contoh kodingan diatas, yaitu:

 Pertama, program akan melakukan pengecekan apakah data email sudah terisi atau belum.

 Jika data email belum diisi, maka program akan menampilkan tampilan form 2 textbox, 1 textarea, dan 1 button submit.

 Setelah data diisi dengan benar, maka program akan masuk ke dalam data yang sudah terisi dan mengirimkan data tersebut ke email dan akan menampilkan pesan “Thank you for using our mail form”

7.5 Exercise

Buatlah sebuah web yang terdapat fitur login untuk menampung session dan terdapat juga fitur file upload dan paging.

Jika NIM/KdDosenatau Password salah maka akan ditampilkan pesan kesalahan pada halaman login.php.

Setting session selama user belum logout dan tampilkan Username yang login pada halaman home.php.

Buatlah menu untuk logout.

Dalam dokumen Diktat Web Database September 2011 (Halaman 74-81)

Dokumen terkait