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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Помогите! Не видит елемента массива POST['file'] при отправке поля file (типа file)
 
 автор: stas1987   (14.07.2007 в 12:09)   письмо автору
 
 

Доброе утро!

Есть форма:

<form enctype='multipart/form-data' action=/a.php method=post>
Фото <input type=file name=file[]><br>
Мини-эскиз <input type=file name=file[]><br>
Автосоздание мини-эскиза<input type=checkbox name=auto value=1><br>
<input type=submit>
</form>

Файл a.php

echo $_POST['file'][0]."<br>".$_POST['file'][1]."<br>".$_POST['auto'];

Так вот, при заполнении всех полей и выбранном checkbox, все переменные кроме auto пустые! Почему?

   
 
 автор: Unkind   (14.07.2007 в 12:12)   письмо автору
 
   для: stas1987   (14.07.2007 в 12:09)
 

Потому что свои файлы надо искать в массиве $_FILES.

   
 
 автор: stas1987   (14.07.2007 в 12:14)   письмо автору
 
   для: Unkind   (14.07.2007 в 12:12)
 

Так мне нужно проверить, например, пустые ли переменные file[0] или file[1]?
Я в курсе про $_FILES

   
 
 автор: Unkind   (14.07.2007 в 12:19)   письмо автору
 
   для: stas1987   (14.07.2007 в 12:14)
 

А что же Вы там ожидаете увидеть? Раз знаете про $_FILES, то почему там и не проверяете?

   
 
 автор: stas1987   (14.07.2007 в 12:27)   письмо автору
 
   для: Unkind   (14.07.2007 в 12:19)
 

Т.е. если мне нужно не введено ли пустых строк, я должен сделать так:


if(trim($_FILES['file']['name'])!==''){
echo"ok";
}

   
 
 автор: Unkind   (14.07.2007 в 12:37)   письмо автору
 
   для: stas1987   (14.07.2007 в 12:27)
 

<?php
for($i 0; isset($_FILES["file"]["error"][$i]); $i++)
{
    if(
$_FILES["file"]["error"][$i] == 4)
    {
        echo(
"Файл № " $i " не был загружен.<br />\r\n");
    }
}
?>

   
 
 автор: stas1987   (14.07.2007 в 12:47)   письмо автору
 
   для: Unkind   (14.07.2007 в 12:37)
 

Спасибо! А как мне сделать проверку, типа


<?php
list($w,$h,$type,$a)=getimagesize($_FILES['file']['name'][0]);
if(
$type!==2){
echo 
"error!";
}
?>


Я так понял, что они уже находяться в temp директории сервера.
Т.е. они автоматически загружаются при отправке формы?

   
 
 автор: Unkind   (14.07.2007 в 13:11)   письмо автору
 
   для: stas1987   (14.07.2007 в 12:47)
 

Точно так же.

<?php

$types 
= array(IMAGETYPE_GIFIMAGETYPE_JPGIMAGETYPE_PNG);

for(
$i 0; isset($_FILES["file"]["tmp_name"][$i]); $i++) 

    if(!
in_array(exif_imagetype($_FILES["file"]["tmp_name"][$i]), $types)) 
    { 
           echo(
"Неверный формат изображения.<br />\r\n");           
    }
}
?>


Я так понял, что они уже находяться в temp директории сервера.
Т.е. они автоматически загружаются при отправке формы?

Конечно.

   
 
 автор: stas1987   (14.07.2007 в 17:48)   письмо автору
 
   для: Unkind   (14.07.2007 в 13:11)
 

А можно ли сделать так, чтобы сначала проверить расширение, а затем уже грузить в temp. Ведб пользователю сначала нужно подождать пока оно загрузится на сервер, тем более если расширение не то (поправка на дурака), то он будет вынужден ждать еще

   
 
 автор: Unkind   (14.07.2007 в 17:58)   письмо автору
 
   для: stas1987   (14.07.2007 в 17:48)
 

А можно ли сделать так, чтобы сначала проверить расширение, а затем уже грузить в temp.
Средствами PHP нельзя. Ваш скрипт начнет работу после принятия всех данных от пользователя, в том числе и сохранения файлов, которые он посылал.

Это надо на JavaScript реализовывать.

   
 
 автор: stas1987   (14.07.2007 в 18:02)   письмо автору
 
   для: Unkind   (14.07.2007 в 17:58)
 

Понял. Большое спасибо! Жаль, конечно, что нельзя проверить переменную $_POST['file'], но я думаю что AJAX, хотя лучше javascript, мне в этом поможет

   
 
 автор: Unkind   (14.07.2007 в 18:08)   письмо автору
 
   для: stas1987   (14.07.2007 в 18:02)
 

но я думаю что AJAX, хотя лучше javascript
AJAX не какой-то языка программирования. Это всего лишь подход к построению пользовательских интерфейсов веб-приложений, при котором страница полностью не перезагружается при выполнении каких-то запросов к серверу.

   
 
 автор: stas1987   (14.07.2007 в 18:13)   письмо автору
 
   для: Unkind   (14.07.2007 в 18:08)
 

Да я в курсе. Просто мне нужен скрипт, который бы работал на большенстве типов и версиях браузеров. А я пока не встречал таких, которые бы удовлетворяли мои требование. Не посоветуете ли мне случайно сайт, где можно скачать, например, не слишком громоздкую валидацию форм.

   
 
 автор: sms-send   (14.07.2007 в 18:27)   письмо автору
 
   для: stas1987   (14.07.2007 в 18:13)
 

http://dklab.ru/lib/JsHttpRequest/

   
 
 автор: stas1987   (14.07.2007 в 21:52)   письмо автору
 
   для: sms-send   (14.07.2007 в 18:27)
 

А если я в javascript вообще никак???
Вернее, я знаю только что такое getelementbyid - в моем понимании это грубо говоря:


<?php
$id
=ereg_replace("/.*\i\d\=\'(.*)\'.*/","\\1",$string);
?>


Сложно ли мне будет работать с этой библиотекой по моим нуждам (+ динамические списки)

   
Rambler's Top100
вверх

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