اريد كود php يقوم بتغير اسم الصورة تلقائي بعد الرفع

وهذا هو الكود الذي ارفع به الصور ولكن اذا رفعت صورة تحمل نفس الاسم لا تتكرر في ملف الرفع (uploaded_img)اذا كانت نفس الاسم تكون صورة واحدة فقط لكل المنشورات التي تحمل الصورة نفسها واذا حذف الصورة تتخرب جميع المنشورات التي تحمل نفس اسمها, ولهذا اريد تعديل الكود هذا الذي اقوم برفع الصور عبره الى جعله يغير اسم الصورة بعد رفعها تلقائي

if(isset($_POST['add_product'])){

  $name = $_POST['name'];

  $name = filter_var($name, FILTER_SANITIZE_STRING);

  $city = $_POST['city'];

  $city = filter_var($city, FILTER_SANITIZE_STRING);

  $date = $_POST['date'];

  $date = filter_var($date, FILTER_SANITIZE_STRING);

  $price = $_POST['price'];

  $price = filter_var($price, FILTER_SANITIZE_STRING);

  $number = $_POST['number'];

  $number = filter_var($number, FILTER_SANITIZE_STRING);

  $place = $_POST['place'];

  $place = filter_var($place, FILTER_SANITIZE_STRING);

  $category = $_POST['category'];

  $category = filter_var($category, FILTER_SANITIZE_STRING);

  $details = $_POST['details'];

  $details = filter_var($details, FILTER_SANITIZE_STRING);

  $image = $_FILES['image']['name'];

  $image = filter_var($image, FILTER_SANITIZE_STRING);

  $image_size = $_FILES['image']['size'];

  $image_tmp_name = $_FILES['image']['tmp_name'];

  $image_folder = 'uploaded_img/'.$image;

  $image_type=$_FILES['image']['type'];

  $select_products = $conn->prepare("SELECT * FROM `car` WHERE name = ?");

  $select_products->execute([$name]);

  if(! in_array($image_type,array('image/png','image/gif','image/jpg','image/jpeg'))){

   $errors[] = $message['center'] = 'قم بتحميل صورة صالحة بالضغط على المربع الاصفر';

  }else{

   $insert_products = $conn->prepare("INSERT INTO `car`(name, category, details, price, image, number, place,type,city,date) VALUES(?,?,?,?,?,?,?,?,?,?)");

   $insert_products->execute([$name, $category, $details, $price, $image, $number, $place,$image_type,$city,$date ]);

   if($insert_products){

     if($image_size > 2000000){

      $message[] = 'حجم الصورة جدا كبير';

     }else{

      move_uploaded_file($image_tmp_name, $image_folder);

      $message[] = 'تم نشر الإعلان';

     }

   }

  }

};

?>


Adnane_Kadri أضف ردا

يمكنك تلافي هاته المشكلة بتوليد اسم فريد للصورة أو الملف قبل رفعه، استعمل الشيفرة التالية مثلا:

// توليد اسم فريد للصورة باستخدام الوقت الحالي
$image_name = time() . '_' . $_FILES['image']['name'];

// تحديد المسار الجديد للصورة
$image_folder = 'uploaded_img/' . $image_name;

// باقي الشيفرة...

يتم هاهنا استخدام الدالة time لجلب عدد الثواني بصيغة Unix كاسم فريد للصورة، أما باقي الشيفرة فستكون مثلما هي عليه. فقط استبدل المسار القديم بالمسار الجديد .

اسال الله ان يحشرك في زمرة الانبياء والصالحين