Bagaimana cara vallidasi gambar

saya ingin membatasi ukuran dan tipe gambar saat diupload. saya coba menggunakan 2 code tapi masih error. code pertama

if (isset($_POST["submit"])) {
	$bukti = $_FILES['bukti']['tmp_name'];
	$size = $_FILES['bukti']['size'];
	$format = $_FILES['bukti']['type'];
	$kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : '';
	$kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : '';

		$target = "../img/".basename($_FILES['bukti']['name']);

		if ($size < 2000000) {

			if ($format == 'image/jpg' || 'image/jpeg' || 'image/png') {
				move_uploaded_file($_FILES['bukti']['tmp_name'], $terget);
				$sql = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$bukti')";
				$query = mysqli_query($conn,$sql);

				$kd_bayar = mysqli_insert_id($conn);

				$detail = "INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES ('".$kd_bayar."','lunas')";
				$ok = mysqli_query($conn,$detail);

				if ($ok) {
					header('location:../mybooking.php');
				}else{
					header('location:../mybooking.php?status=error');
				}
			}else{
				echo "<script language='javascript'>alert('Maaf format gambar harus JPG,JPEG,PNG')</script>";
			    echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
			    exit();
			}

		}else{
			echo "<script language='javascript'>alert('Maaf file gambar terlalu besar. Max 2MB')</script>";
		    echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
		    exit();
		}


	}
?>

hasilnya malah seperti ini

kemudian saya coba validasi dengan code lain seperti ini

include 'fungsi_validasi_image.php';

if (isset($_POST["submit"])) {
	$lokasi_file = $_FILES['bukti']['tmp_name'];
	$tipe_file = $_FILES['bukti']['type'];
	$bukti = $_FILES['bukti']['name'];
	$direktori = "../img/".basename($_FILES['bukti']['name']);
	$kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : '';
	$kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : '';

	$hasil = cekTypeImageUpload($tipe_file);

	if ($hasil == 1) {
		echo "<script language='javascript'>alert('Maaf hanya menerima file gambar yang bertipe jpg')</script>";
	    echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
	    exit();
	}

	if (!empty($lokasi_file)) {
	move_uploaded_file($lokasi_file, $direktori);
	}

	$sql = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$bukti')";
	$query = mysqli_query($conn,$sql);

	$kd_bayar = mysqli_insert_id($conn);

		$detail = "INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES ('".$kd_bayar."','lunas')";
		$ok = mysqli_query($conn,$detail);
		if ($ok) {
			header('location:../mybooking.php');
		}else{
			header('location:../mybooking.php?status=error');
	}
}
?>

pada file fungsi


<?php
function cekTypeImageUpload($type_file){
	$hasil = 0; // kondisikan terlebih dahulu kalau image benar
	$tipe = isset($tipe_file);
	if ($tipe !== "image/jpg") {
		$hasil = 1; // kondisikan kalau image salah
	}

	return $hasil;
}
?>

tapi hasilnya hanya selalu seperti ini, padahal gambar yang saya masukan bertipe jpg.

satu lagi master, bagaiman agar gambar yang lama di replace oleh gambar yang baru jika diinputkan pada id yang sama.

terima kasih

avatar irya
@irya

59 Kontribusi 13 Poin

Diperbarui 5 tahun yang lalu

2 Jawaban:

<img src=' https://www.imageupload.co.uk/images/2018/09/23/Untitled.png '>

Saya bantu untuk mengubah kodenya agar lebih kompleks lagi,

function.php <pre>

&lt;?php $koneksi = mysqli_connect('localhost', 'root', '', 'phpdasar'); // Koneksi Database

if (!$koneksi){ echo 'Koneksi gagal' . mysqli_error($koneksi); }

function query($query){ global $koneksi; // Variable Scope, Memanggil $koneksi kedalam function query

$result = mysqli_query($koneksi, $query); $rows = []; // Membuat variable kosong untuk diisi dengan variable $row dalam bentuk array assosiative while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } return $rows; // Mengembalikan nilai dari $rows dalam bentuk array; }

// Insert Gambar

function daftar(){ // buat fungsi daftar global $koneksi;

$ekstensi_valid = ['png','jpg']; // Ektensi gambar yg diperbolehkan misalnya ['jpeg','bmp'] $nama = $_FILES['file']['name']; // Nama gambar yg diupload $extensigambar = explode('.', $nama); // nama gambar dipecah contohnya gambar.jpg maka akan dipisah menjadi "gambar", ".", "jpg" untuk memudahkan proses selanjutnya $extensigambar = strtolower(end($extensigambar)); // nama gambar akan dipaksa menggunakan huruf kecil jika ada Nama.JPg === nama.jpg $ukuran = $_FILES['file']['size']; // ukuran gambar $file_tmp = $_FILES['file']['tmp_name']; // tempat penyimpanan sementara gambar $error = $_FILES['file']['error']; // error yg akan dihasilkan jika terjadi error

if (!in_array($extensigambar, $ekstensi_valid)){ echo " &lt;script&gt; alert('Yang anda upload bukan gambar'); &lt;/script&gt; "; return false; }

if ($error === 4){ // error === 4 artinya gambar belum diupload, ada banyak error2 di php bisa dilihat di dokumentasi php echo " &lt;script&gt; alert('foto belum dimasukan'); &lt;/script&gt; "; return false; }

if ($ukuran &gt; 1044070){ // ukuran gambar dalam bentuk byte echo " &lt;script&gt; alert('File yg anda upload terlalu besar'); &lt;/script&gt; "; return false; }

//generate nama // mengacak nama gambar agar menjadi unik. $namabaru = uniqid(); $namabaru .= '.'; $namabaru .= $extensigambar;

move_uploaded_file($file_tmp, 'files/'.$namabaru); // 'files/' adalah nama folder tempat penyimpanan gambar. $query = "INSERT INTO upload VALUES ( '', '$namabaru') ";

mysqli_query($koneksi, $query);
return mysqli_affected_rows($koneksi);

} ?&gt; </pre>

buat index.php <pre>

&lt;?php include 'function.php';

if (isset($_POST["submit"])){ if (daftar($_POST) &gt; 0){ echo " &lt;script&gt; alert('foto berhasil diupload'); &lt;/script&gt; "; } }

$gambar = query("SELECT * FROM upload"); //Nama database

?&gt; &lt;!DOCTYPE html&gt; &lt;html lang="en" dir="ltr"&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;form class="" action="" method="post" enctype="multipart/form-data"&gt; &lt;input type="file" name="file"&gt; &lt;button type="submit" name="submit"&gt;Submit!&lt;/button&gt; &lt;/form&gt;

&lt;table border="1" cellpadding="10" cellspacing="0"&gt; &lt;tr&gt; &lt;th&gt;id&lt;/th&gt; &lt;th&gt;gambar&lt;/th&gt; &lt;/tr&gt; &lt;?php foreach($gambar as $gbr): ?&gt; &lt;tr&gt; &lt;td&gt;&lt;?= $gbr["id"]; ?&gt;&lt;/td&gt; &lt;td&gt;&lt;img src="files/&lt;?= $gbr["nama_file"]; ?&gt;" height="100" width="100"&gt;&lt;/td&gt; &lt;/tr&gt; &lt;?php endforeach; ?&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;

</pre>

avatar elangindra12
@elangindra12

2 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

kenapa saya bisa error di bagian fungsi query $row = []; mas? <pre>
&lt;?php include '../config/connection.php';

if (!$conn) { echo "Koneksi gagal!" .mysqli_error($conn); }

function query($query){ global $conn;

$result = mysqli_query($conn, $query); $rows = []; while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } return $rows; }

// Insert Gambar

function daftar(){ global $conn;

$ekstensi_valid = ['png','jpg']; $bukti = $_FILES['bukti']['name']; $kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : ''; $kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : ''; $extensigambar = explode('.', $bukti); $extensigambar = strtolower(end($extensigambar)); $ukuran = $_FILES['bukti']['size']; $file_tmp = $_FILES['bukti']['tmp_name']; $error = $_FILES['bukti']['error'];

if (!in_array($extensigambar, $ekstensi_valid)){ echo " &lt;script&gt; alert('Yang anda upload bukan gambar'); &lt;/script&gt; "; return false; }

if ($error === 4){ echo " &lt;script&gt; alert('foto belum dimasukan'); &lt;/script&gt; "; return false; }

if ($ukuran &gt; 1044070){ echo " &lt;script&gt; alert('File yg anda upload terlalu besar'); &lt;/script&gt; "; return false; }

$namabaru = uniqid(); $namabaru .= '.'; $namabaru .= $extensigambar;

move_uploaded_file($file_tmp, '../img/'.$namabaru); $query = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$namabaru') "; mysqli_query($conn, $query); $kd_bayar = mysqli_insert_id($conn);

$detail = &quot;INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES (&#039;&quot;.$kd_bayar.&quot;&#039;,&#039;lunas&#039;)&quot;;
$ok = mysqli_query($conn,$detail);

if ($ok) {
	header(&#039;location:../mybooking.php&#039;); 
}else{
	header(&#039;location:../mybooking.php?status=error&#039;); 
}
return mysqli_affected_rows($conn);

} ?&gt; </pre>

<img src='https://i.imgur.com/PO8NGf6.png'>

avatar irya
@irya

59 Kontribusi 13 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban