PHP tetap menyimpan data gambar ke Folder Server, padahal ada salah satu data di formulir yang error
ROOT93 - Ada berbagai macam teknik yang digunakan seseorang untuk menyimpan sebuah data gambar pada sebuah website / aplikasi, salah satu cara yang termudah adalah menyimpan filenya folder server, dan nama filenya ke database MySQL
Suatu hari saya mengalami sebuah masalah dimana, data gambar tetap terupload meskipun ada nilai atau salah satu parameter yang salah didalam formulir. Namun data atau nilai – nilai parameter yang dikirimnya tidak tersimpan ke database, jadi hanya data gambarnya saja yang terupload. Tentu saja ini sebuah kesalahan, karena harusnya ketika ada data yang salah maka tidak boleh ada parameter yang tereksekusi atau tersimpan baik ke folder server ataupun database.
Sebelum data di insert ke database, maka akan ada pengecekan seperti berikut ini . Contoh
#kode pengecekan sebelum insert
if(empty($kode_daftar_err) && empty($no_rekening_err) && empty($nama_bank_err) && empty($pesan_tambahan_err) && empty($bukti_pembayaran_err)){
Ketika adal satu data yang error misalnya kode daftar, maka otomatis eksekusi ke perintah selanjutnya akan dihentikan.
Nah disini justru file gambar tetap di eksekusi atau disimpan ke folder server. Setelah diperiksa ternyata ada perintah eksekusi sebelum parameter berikut kodepengecekan diatas. Jadi didalam percabangan atau pada validasi gambar, ketika gambar/foto berhasil divalidasi saya menyimpannya ke dalam variabel, contoh :
$bukti_pembayaran=move_uploaded_file($tmp_dir,$upload_dir.$itempic3);
Parameter diatas sebetulnya benar, tapi sayangnya ditempatkan sebelum kode pengecekan, sehingga ketika ada salah satu data yang error maka yang terjadi adalah, perintah move_uploaded_file() akan tetap tereksekusi
Supaya perintah tersebut tidak tereksekusi, maka didalam percabangan untuk validasi gambarnya, kita set saja nilai variabel benarnya misalnya jadi
$bukti_pembayaran=$tmp_dir;
Setelah itu sisanya untuk fungsi move uploadnya kita tambahkan didalam execute atau setelah proses pengecekan kode insert, sehingga menjadi seperti berikut ini. Contoh
if(execute($stmt)&& (move_uploaded_file($bukti_pembayaran,$upload_dir.$itempic3))){
bla bla…
Intinya kesalahan ini terjadi akibat parameter move_uploaded_file() kita eksekusi sebelum paramater pengecekan data sebelum insert, sehingga akhirnya data gambar tetap terupload meskipun ada beberapa nilai di formulir yang salah
Baca juga : Upload, Tampil dan Delete Gambar di PHP Part II (New)
Suatu hari saya mengalami sebuah masalah dimana, data gambar tetap terupload meskipun ada nilai atau salah satu parameter yang salah didalam formulir. Namun data atau nilai – nilai parameter yang dikirimnya tidak tersimpan ke database, jadi hanya data gambarnya saja yang terupload. Tentu saja ini sebuah kesalahan, karena harusnya ketika ada data yang salah maka tidak boleh ada parameter yang tereksekusi atau tersimpan baik ke folder server ataupun database.
Sebelum data di insert ke database, maka akan ada pengecekan seperti berikut ini . Contoh
#kode pengecekan sebelum insert
if(empty($kode_daftar_err) && empty($no_rekening_err) && empty($nama_bank_err) && empty($pesan_tambahan_err) && empty($bukti_pembayaran_err)){
Ketika adal satu data yang error misalnya kode daftar, maka otomatis eksekusi ke perintah selanjutnya akan dihentikan.
Nah disini justru file gambar tetap di eksekusi atau disimpan ke folder server. Setelah diperiksa ternyata ada perintah eksekusi sebelum parameter berikut kodepengecekan diatas. Jadi didalam percabangan atau pada validasi gambar, ketika gambar/foto berhasil divalidasi saya menyimpannya ke dalam variabel, contoh :
$bukti_pembayaran=move_uploaded_file($tmp_dir,$upload_dir.$itempic3);
Parameter diatas sebetulnya benar, tapi sayangnya ditempatkan sebelum kode pengecekan, sehingga ketika ada salah satu data yang error maka yang terjadi adalah, perintah move_uploaded_file() akan tetap tereksekusi
Supaya perintah tersebut tidak tereksekusi, maka didalam percabangan untuk validasi gambarnya, kita set saja nilai variabel benarnya misalnya jadi
$bukti_pembayaran=$tmp_dir;
Setelah itu sisanya untuk fungsi move uploadnya kita tambahkan didalam execute atau setelah proses pengecekan kode insert, sehingga menjadi seperti berikut ini. Contoh
if(execute($stmt)&& (move_uploaded_file($bukti_pembayaran,$upload_dir.$itempic3))){
bla bla…
Intinya kesalahan ini terjadi akibat parameter move_uploaded_file() kita eksekusi sebelum paramater pengecekan data sebelum insert, sehingga akhirnya data gambar tetap terupload meskipun ada beberapa nilai di formulir yang salah
(Ahmad Zaelani / root93)
sedikit belajar soal php dari root93, lumayan
ReplyDelete