|
|
|
| Доброе утро!
Есть форма:
<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 пустые! Почему? | |
|
|
|
|
|
|
|
для: stas1987
(14.07.2007 в 12:09)
| | Потому что свои файлы надо искать в массиве $_FILES. | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 12:12)
| | Так мне нужно проверить, например, пустые ли переменные file[0] или file[1]?
Я в курсе про $_FILES | |
|
|
|
|
|
|
|
для: stas1987
(14.07.2007 в 12:14)
| | А что же Вы там ожидаете увидеть? Раз знаете про $_FILES, то почему там и не проверяете? | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 12:19)
| | Т.е. если мне нужно не введено ли пустых строк, я должен сделать так:
if(trim($_FILES['file']['name'])!==''){
echo"ok";
}
|
| |
|
|
|
|
|
|
|
для: 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");
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 12:37)
| | Спасибо! А как мне сделать проверку, типа
<?php
list($w,$h,$type,$a)=getimagesize($_FILES['file']['name'][0]);
if($type!==2){
echo "error!";
}
?>
|
Я так понял, что они уже находяться в temp директории сервера.
Т.е. они автоматически загружаются при отправке формы? | |
|
|
|
|
|
|
|
для: stas1987
(14.07.2007 в 12:47)
| | Точно так же.
<?php
$types = array(IMAGETYPE_GIF, IMAGETYPE_JPG, IMAGETYPE_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 директории сервера.
Т.е. они автоматически загружаются при отправке формы?
Конечно. | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 13:11)
| | А можно ли сделать так, чтобы сначала проверить расширение, а затем уже грузить в temp. Ведб пользователю сначала нужно подождать пока оно загрузится на сервер, тем более если расширение не то (поправка на дурака), то он будет вынужден ждать еще | |
|
|
|
|
|
|
|
для: stas1987
(14.07.2007 в 17:48)
| | А можно ли сделать так, чтобы сначала проверить расширение, а затем уже грузить в temp.
Средствами PHP нельзя. Ваш скрипт начнет работу после принятия всех данных от пользователя, в том числе и сохранения файлов, которые он посылал.
Это надо на JavaScript реализовывать. | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 17:58)
| | Понял. Большое спасибо! Жаль, конечно, что нельзя проверить переменную $_POST['file'], но я думаю что AJAX, хотя лучше javascript, мне в этом поможет | |
|
|
|
|
|
|
|
для: stas1987
(14.07.2007 в 18:02)
| | но я думаю что AJAX, хотя лучше javascript
AJAX не какой-то языка программирования. Это всего лишь подход к построению пользовательских интерфейсов веб-приложений, при котором страница полностью не перезагружается при выполнении каких-то запросов к серверу. | |
|
|
|
|
|
|
|
для: Unkind
(14.07.2007 в 18:08)
| | Да я в курсе. Просто мне нужен скрипт, который бы работал на большенстве типов и версиях браузеров. А я пока не встречал таких, которые бы удовлетворяли мои требование. Не посоветуете ли мне случайно сайт, где можно скачать, например, не слишком громоздкую валидацию форм. | |
|
|
|
|
|
|
|
|
для: sms-send
(14.07.2007 в 18:27)
| | А если я в javascript вообще никак???
Вернее, я знаю только что такое getelementbyid - в моем понимании это грубо говоря:
<?php
$id=ereg_replace("/.*\i\d\=\'(.*)\'.*/","\\1",$string);
?>
|
Сложно ли мне будет работать с этой библиотекой по моим нуждам (+ динамические списки) | |
|
|
|