Masalah di bagian mencegah nama kembar di php

selamat pagi. saya mau nanya, saya sedang mengikuti tutorial php intermediate di bagian mencegah nama kembar. dan saya menemui masalah seperti ini,

 <?php
  if ( isset($_POST['submit']) ) {
    // print_r($_FILES);

    $nama     = $_FILES['gambar']['name'];
    $error    = $_FILES['gambar']['error'];
    $size     = $_FILES['gambar']['size'];
    $asal     = $_FILES['gambar']['tmp_name'];
    $format   = $_FILES['gambar']['type'];
    $namafile = 'upload/' . $nama;
    $time     = time();

    // cara lain dalam format/type file
    // $format2 = pathinfo($nama, PATHINFO_EXTENSION);

    if ( $error == 0) {
      if ( $size < 1000000 ) {

        // cara lain dalam format/type file
        // if ( $format2 == 'png' || $format2 == 'jpg' ||  $format2 == 'jpeg' ) {
        if ( $format == 'image/png' || $format == 'image/jpg' ||  $format == 'image/jpeg' ) {

          if ( file_exists($namafile) ) {
            $namafile = str_replace('.png' || '.jpg' || '.jpeg', "", $namafile);
            $namafile = $namafile . '_' . $time;
          }
          //mengupload
          move_uploaded_file($asal . $namafile);
          echo "berhasil upload.";
        } else {
          echo "formatnya tidak sesuai ketentuan.";
        }

      } else {
        echo "ukurannya kegedean.";
      }
    } else {
      echo "ada error.";
    }

  }
?>

jika ada berbagai jenis tipe untuk string replacenya, adakah cara yg lebih simpel atau mudah?

dan untuk proses selanjutnya jika ada berbagai jenis tipe filenya, lalu bagaimana caranya agar formatnya tetap sama?

mohon bantuannya.

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Diperbarui 6 tahun yang lalu

4 Jawaban:

Jawaban Terpilih

Untuk mendapat Filename, kamu bisa gunakan pathinfo() :

Cara 1:


$name = 'file.jpg';
echo $file_name = pathinfo($name, PATHINFO_FILENAME); // file
echo $extension = pathinfo($name, PATHINFO_EXTENSION); // jpg

Hasil Cara 1:

 file
jpg

Cara 2:


<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

Hasil Cara 2:

 /www/htdocs/inc
lib.inc.php
php
lib.inc

**Cara 1 dan Cara 2 Sama saja, hanya berbeda implementasi saja, bisa disesuaikan kebutuhannya

Source: 1. https://stackoverflow.com/questions/27497304/getting-file-name-without-extension 2. http://php.net/manual/en/function.pathinfo.php

avatar keccikun
@keccikun

364 Kontribusi 196 Poin

Dipost 6 tahun yang lalu

terima kasih atas jawabannya @abyanjksatu.

dari cara yg pertama saya jadi ingat kembali itu cara yg di kasih tau oleh mas hilman di video tutorialnya, meskipun pada akhirnya mas hilman menggunakan fungsi original di videonya. maka dari itu saya aga lupa dengan cara lainnya.

dan ini hasil perbaikan kode saya,

 if ( isset($_POST['submit']) ) {
    // print_r($_FILES);

    $nama     = $_FILES['gambar']['name'];
    $error    = $_FILES['gambar']['error'];
    $size     = $_FILES['gambar']['size'];
    $asal     = $_FILES['gambar']['tmp_name'];
    $format2 = pathinfo($nama, PATHINFO_EXTENSION);
    $namafile = 'upload/' . $nama;
    $time     = time();

    // cara lain dalam format/type file
    // $format   = $_FILES['gambar']['type'];

    if ( $error == 0) {
      if ( $size < 1000000 ) {

        // cara lain dalam format/type file
        // if ( $format == 'image/png' || $format == 'image/jpg' ||  $format == 'image/jpeg' ) {
        if ( $format2 == 'png' || $format2 == 'jpg' ||  $format2 == 'jpeg' ) {

          if ( file_exists($namafile) ) {
            $namafile = str_replace('.' . $format2, "", $namafile);
            $namafile = $namafile . '_' . $time . '.' . $format2;
          }
          //mengupload
          move_uploaded_file($asal, $namafile);
          echo "berhasil upload.";
        } else {
          echo "formatnya tidak sesuai ketentuan.";
        }

      } else {
        echo "ukurannya kegedean.";
      }
    } else {
      echo "ada error.";
    }

  }
?>

untuk membuat tambahan nama unik, adakah yang bisa digunakan selain menggunakan fungsi time()?

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Dipost 6 tahun yang lalu

"untuk membuat tambahan nama unik, adakah yang bisa digunakan selain menggunakan fungsi time()? "

Jawab:

Kamu bisa gunakan uniqid() function

 <?php
echo uniqid();
?>

source: https://stackoverflow.com/questions/4371941/best-method-to-generate-unique-filenames-when-uploading-files-php tutorial: https://www.w3schools.com/php/func_misc_uniqid.asp

avatar keccikun
@keccikun

364 Kontribusi 196 Poin

Dipost 6 tahun yang lalu

sekali lagi terima kasih bantuannya @abyanjksatu.

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban