Косая черта во входном тексте и class.upload.php не работает

0

У меня есть простая форма для загрузки продуктов в базу данных: имя и образ. Для имени я использую стандартное текстовое поле ввода, а для изображения я использую класс class.upload.php для изменения размера и переименования.

Это будет работать нормально, но если я использую имя продукта со слэшем внутри, что-то вроде: статья 6/10 - 10/10 - 20/10 отправляет меня на крушение класса для изменения размера изображения. Не соответствует указанным размерам, и я всегда переименовал его в 10.jpg вместо этого как-то вроде: 03110e1afaf5c168e83a0cf18eed368e.jpg

Итак, статья: 610 - 1010 - 2010 работает

статья: 6/10 - 10/10 - 20/10 не работает

Это сценарий, который я использую:

  function addProduct()

   {
     include('class.upload.php'); 

$catId       = $_POST['cboCategory'];
$name        = $_POST["txtName"];

$width = 800;

$immagine = $_FILES['fleImage']['tmp_name'];
$dimensioni = getimagesize($immagine);
$larghezza = $dimensioni[0];
$altezza = $dimensioni[1];


if ($larghezza>$width)
 {         


   $db_name = str_replace(" ","_",$name);
   $image1 = md5(rand() * time()) . ".$db_name";  
   $fileName = pathinfo($image1, PATHINFO_FILENAME );


  $handle = new upload($_FILES['fleImage']);
    if ($handle->uploaded) {
     $handle->file_new_name_body   =    $fileName;
     $handle->image_resize     = true;
     $handle->image_x          = 800;
     $handle->image_ratio_y    = true;

  $handle->process('../../images/product/');


  // thumbnail

   $db_name = str_replace(" ","_",$name);
   $image2 = md5(rand() * time()) . ".$db_name";  
   $thumb = pathinfo($image2, PATHINFO_FILENAME );

  $handle->file_new_name_body   =   $thumb;
  $handle->image_resize     = true;
  $handle->image_ratio_crop = true;
  $handle->image_x          = 360;
  $handle->image_y          = 270;

  $handle->process('../../images/product/');   

  if ($handle->processed) {
      // header("Location: index.php"); 
      $handle->clean();
  } else {
      echo 'error : ' . $handle->error;
  }
}


$thumbnail = $thumb.'.jpg';
$main_image = $fileName.'.jpg';

$sql   = "INSERT INTO tbl_product (cat_id, pd_name, pd_image, pd_thumbnail, pd_date)
        VALUES ('$catId', '$name', '$main_image', '$thumbnail', NOW())";

 $result = dbQuery($sql);

 header("Location: index.php?catId=$catId");    

 }
  }
  • 2
    Итак, почему бы просто не сделать то же самое для того, что вы используете, чтобы заменить пробелы подчеркиванием? Заменить косые черты чем-то другим.
  • 0
    Зачем заменять косые черты? это часть названия статьи. Я не могу заменить его В любом случае, что должно делать имя входного текста с классом?
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ
$image1 = md5(rand() * time()) . ".$db_name";

В этот момент $ image1 содержит что-то вроде "03110e1afaf5c168e83a0cf18eed368earticle6/10_-10/10-_20/10"

$fileName = pathinfo($image1, PATHINFO_FILENAME );

pathinfo разрезает все, кроме имени файла, в этом случае $ filename == "10" Позже вы присоедините окончание ".jpg"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню