|
|
|
|
|
для: Trianon
(28.02.2011 в 18:44)
| | Ага. Пасиб. | |
|
|
|
|
|
|
|
для: lElectroHardl
(28.02.2011 в 18:24)
| | сперва следует добавить строку в БД , потом взять id (mysql_insert_id() ) и уже его использовать для нужд. | |
|
|
|
|
|
|
|
для: lElectroHardl
(28.02.2011 в 18:24)
| | Например, генерируйте уникальное значение изображения, никак не завязанное на id. Ну, и храните это значения в отдельном столбце. | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2011 в 16:54)
| | Не подскажите, как это исправить? | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.02.2011 в 16:48)
| | Потому что php (и SQL кстати тоже) может выполнять потоки запросов параллельно и одновременно.
Потому что в момент исполнения процитированного оператора скрипта - в таблице запись сама по себе не появляется.
А до момента как будет выполнен INSERT (в этом запросе) - в другом запросе того же скрипта нито не мешает выполниться такому же оператору еще раз.
Да, записей будет добавлено несколько. Но файлы, отвечающие некоторым из них, смогут получить равные значения (отличающиеся от id соответствующих записей ) | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2011 в 16:35)
| | б) С чего это оно получит одно и тоже значение? Я же каждый раз по новой обращаюсь к базе, в которой каждый раз изменяется значение id. | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.02.2011 в 16:24)
| | а) этот код проверяет тип переданного файла, сообщенный клиентом, а не его расширение.
А при формировании имени Вы используете именно рашширение (то есть часть имени) , а не тип.
б) вот эта строка. $last_foto = $last_foto["id"] + 1;
В момент выполнения id еще не создан в таблице.
При одновременном выполнении нескольких схожих запросов, эта переменная может получить одно и то же число в качестве значения. | |
|
|
|
|
|
|
|
для: Trianon
(25.02.2011 в 23:12)
| | а) а разве
preg_match("/^[image\/jpeg|image\/png|image\/gif]+$/", $imageinfo["mime"])
| этого не проверяет?
б) не понял. | |
|
|
|
|
|
|
|
для: lElectroHardl
(25.02.2011 в 22:45)
| | >В каком параметре?
Я написал - если дело именно в copy. Соответственно в параметрах copy() . Их у нее два.
>Как может одна фото (даже больше размером чем не загружаемая картинка) загружаться, а вторая картинка нет?
Не поверите - легко.
Более того, даже одна и та же картинка может сей момент загружаться, а три секунды спустя - нет.
>Прикрепил файл скрипта
Функции copy() я в ней не обнаружил.
Зато обнаружил достаточно других огрехов.
В частности:
а) использование расширения файла из данных клиента, без жесткого контроля по списку допустимых.
б) применение нераспределенного первичного ключа - значения id , которое еще не выдано INSERT-AUTO_INCREMENT-механизмом..
Так что полагаю, проблема не только в параметрах copy(). | |
|
|
|
|
|
|
|
для: lElectroHardl
(25.02.2011 в 22:06)
| | Разработчиками РНР, а почему можно прочитать в официальном руководстве.
copy() использовалась до версии 4.
А ошибки, которые могут возникать при загрузке файлов, так это не только "не могу записать файл....", но еще надо самому проверять ошибки массива FILES. | |
|
|
|
|