|
|
|
| Эдравствуйте! Помогите пожалуйста разобраться в ситуации:
нужно пользователю дать возможность закачать файл на сервер(это решено), путь к картинке сохраняю в базе. Если пользователь возвращается к редактирования страницы, с которым ассоциирован рисунок и закачивает новый, то все ок. Но если не меняет старый, а меняем какие-то другие элементы формы, то путь к рисунку обнуляется, что является ошибкой. Извините, если не сумел объеснить точнее, хотя и пытался.. Чтобы было понятнее о чем речь вот часть кода сраницы с формой:
<?
require_once("../database.php");
?>
<form action="sampleposteddata.php" method="post" target="" enctype='multipart/form-data'>
<input name="ID" type="hidden" value="<?php echo $ID; ?>">
Путь к картинке:
<?php
if (!empty($picture)) {
echo $picture;
echo "<input name=\"picture\" type=\"hidden\" value=\"".$picture."\"> ";
echo " Заменить картинку:: ";
echo "<input type=\"file\" size=\"32\" name=\"picture\" class=input> ";
}
else {
echo "<input type=\"file\" size=\"32\" name=\"picture\" class=input> ";
}
?>
</form>
|
и вот кусок обработчика:
<?
//bla-bla-bla
if(!empty($_FILES['picture']['tmp_name']))
{
$ext=strtolower(strrchr($_FILES['picture']['name'], "."));
$extensions=array(".jpg", ".gif");
if (in_array($ext, $extensions))
{
if(copy($_FILES["picture"]["tmp_name"], "../../picture/".mktime().$ext))
{
$picture = "picture/".mktime().$ext;
}
}
else
{
echo "<a href='index.php' >Íàçàä</a><br>";
die("Расширения должны быть jpg или gif ");
}
}
//bla-bla
?>
|
| |
|
|
|
|
 38 байт |
|
|
для: artem64
(03.12.2008 в 20:33)
| | Что за файл я прикрепил? | |
|
|
|
|
|
|
|
для: sim5
(03.12.2008 в 20:43)
| | новый вид шутка?:) | |
|
|
|
|
|
|
|
для: sl1p
(03.12.2008 в 21:58)
| | Нет не шутка, а вполне серьезно. Впрочем, если вы тоже надеетесь на расширение, можете считать это шуткой. | |
|
|
|
|
|
|
|
для: sim5
(04.12.2008 в 05:54)
| | Все-таки слово критик, явно от слова кретин происходит... А по существу вопроса кто-нибудь может высказаться? | |
|
|
|
|
|
|
|
для: artem64
(07.12.2008 в 21:53)
| | Вы филолог или программист?
По существу будет тогда когда сможете корректно задать вопрос. | |
|
|
|
|
|
|
|
для: artem64
(07.12.2008 в 21:53)
| | А обнуляется потому что:
echo "<input name=\"picture\" type=\"hidden\" value=\"".$picture."\"> ";
echo " Заменить картинку:: ";
echo "<input type=\"file\" size=\"32\" name=\"picture\" class=input> ";
имена одинаковые
сделайте
echo "<input name=\"oldpicture\" type=\"hidden\" value=\"".$picture."\"> ";
Хотя я бы вообще не передавал это скрытое поле... оно вообще тут ненужно лежит себе на сервере файл и пусть лежит. | |
|
|
|
|
|
|
|
для: Valick
(07.12.2008 в 23:38)
| | - | |
|
|
|
|
|
|
|
для: artem64
(07.12.2008 в 21:53)
| | Кретин не кретин, это к филологам, а вот не собирать у себя мусор на сервере, это уж, извините, ваша задача. Вы можете чего-то не допонимать, но уж точо знаете, что запросто можете у себя на компьютере переименовывать файлы, давать им произвольные расширения... Так что же вы по ним проверку то делаете? Никогда не считайте ничего мелочью.
Редатирование же картинки, то у вас в базе прописано что-то (юзер, статья, или...) чему принадлежит изображение. Это изображение при редактировании можно показать, и новое поле ввода. Если есть загрузка нового изображения, то, если не менять имя файла, просто загружаем его с перезаписью старого, и в базе ничего не обновляем. Если имя при загрузке получается новое, то загружаем новое изображение, удаляем старое изображение, и делаем обновление в базе. И ничего никуда не пропадет. | |
|
|
|