Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Не загружается картинка на сервер

Сообщения:  [1-10]   [11-19] 

 
 автор: lElectroHardl   (28.02.2011 в 21:24)   письмо автору
 
   для: Trianon   (28.02.2011 в 18:44)
 

Ага. Пасиб.

  Ответить  
 
 автор: Trianon   (28.02.2011 в 18:44)   письмо автору
 
   для: lElectroHardl   (28.02.2011 в 18:24)
 

сперва следует добавить строку в БД , потом взять id (mysql_insert_id() ) и уже его использовать для нужд.

  Ответить  
 
 автор: neadekvat   (28.02.2011 в 18:40)   письмо автору
 
   для: lElectroHardl   (28.02.2011 в 18:24)
 

Например, генерируйте уникальное значение изображения, никак не завязанное на id. Ну, и храните это значения в отдельном столбце.

  Ответить  
 
 автор: lElectroHardl   (28.02.2011 в 18:24)   письмо автору
 
   для: Trianon   (26.02.2011 в 16:54)
 

Не подскажите, как это исправить?

  Ответить  
 
 автор: Trianon   (26.02.2011 в 16:54)   письмо автору
 
   для: lElectroHardl   (26.02.2011 в 16:48)
 

Потому что php (и SQL кстати тоже) может выполнять потоки запросов параллельно и одновременно.
Потому что в момент исполнения процитированного оператора скрипта - в таблице запись сама по себе не появляется.
А до момента как будет выполнен INSERT (в этом запросе) - в другом запросе того же скрипта нито не мешает выполниться такому же оператору еще раз.
Да, записей будет добавлено несколько. Но файлы, отвечающие некоторым из них, смогут получить равные значения (отличающиеся от id соответствующих записей )

  Ответить  
 
 автор: lElectroHardl   (26.02.2011 в 16:48)   письмо автору
 
   для: Trianon   (26.02.2011 в 16:35)
 

б) С чего это оно получит одно и тоже значение? Я же каждый раз по новой обращаюсь к базе, в которой каждый раз изменяется значение id.

  Ответить  
 
 автор: Trianon   (26.02.2011 в 16:35)   письмо автору
 
   для: lElectroHardl   (26.02.2011 в 16:24)
 

а) этот код проверяет тип переданного файла, сообщенный клиентом, а не его расширение.

А при формировании имени Вы используете именно рашширение (то есть часть имени) , а не тип.


б) вот эта строка. $last_foto = $last_foto["id"] + 1;

В момент выполнения id еще не создан в таблице.
При одновременном выполнении нескольких схожих запросов, эта переменная может получить одно и то же число в качестве значения.

  Ответить  
 
 автор: lElectroHardl   (26.02.2011 в 16:24)   письмо автору
 
   для: Trianon   (25.02.2011 в 23:12)
 

а) а разве
preg_match("/^[image\/jpeg|image\/png|image\/gif]+$/", $imageinfo["mime"])
этого не проверяет?
б) не понял.

  Ответить  
 
 автор: Trianon   (25.02.2011 в 23:12)   письмо автору
 
   для: lElectroHardl   (25.02.2011 в 22:45)
 

>В каком параметре?
Я написал - если дело именно в copy. Соответственно в параметрах copy() . Их у нее два.

>Как может одна фото (даже больше размером чем не загружаемая картинка) загружаться, а вторая картинка нет?

Не поверите - легко.
Более того, даже одна и та же картинка может сей момент загружаться, а три секунды спустя - нет.

>Прикрепил файл скрипта

Функции copy() я в ней не обнаружил.

Зато обнаружил достаточно других огрехов.
В частности:
а) использование расширения файла из данных клиента, без жесткого контроля по списку допустимых.
б) применение нераспределенного первичного ключа - значения id , которое еще не выдано INSERT-AUTO_INCREMENT-механизмом..

Так что полагаю, проблема не только в параметрах copy().

  Ответить  
 
 автор: sim5   (25.02.2011 в 22:47)   письмо автору
 
   для: lElectroHardl   (25.02.2011 в 22:06)
 

Разработчиками РНР, а почему можно прочитать в официальном руководстве.
copy() использовалась до версии 4.
А ошибки, которые могут возникать при загрузке файлов, так это не только "не могу записать файл....", но еще надо самому проверять ошибки массива FILES.

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования