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

Форум PHP

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

 

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

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

тема: Загрузка нескольких файлов на сервер
 
 автор: Dmitriy76   (17.12.2007 в 20:35)   письмо автору
 
 

Здравствуйте есть скрипт взятый на этом сайте . Он работоет 50 на 50 . Как найти ошибку .
Постоянно выскакивает Undefined index att
<form enctype='multipart/form-data' method=post>
<table>
<tr>
<td><input type="file" size="32" name="att[]" class=input></td>
<td><input type="button" name="drop" value=" &minus; " onclick="dropFile(this);">
<input type="button" value=" + " onclick="addFile(this);"></td>
</tr>
</table>
<input class=button type=submit value='Загрузить'>
</form>
<script language='JavaScript1.1' type='text/javascript'>
<!--
function dropFile(btn)
{
if(document.getElementById)
{
while (btn.tagName != 'TR') btn = btn.parentNode;
btn.parentNode.removeChild(btn);
}
}
function addFile(btn)
{
if(document.getElementById)
{
while (btn.tagName != 'TR') btn = btn.parentNode;
var newTr = btn.parentNode.insertBefore(btn.cloneNode(true),btn.nextSibling);
thisChilds = newTr.getElementsByTagName('td');
for (var i = 0; i < thisChilds.length; i++)
{
if (thisChilds[i].className == 'files') thisChilds[i].innerHTML = '<input size="32" name="att[]" class=input type="file">';
}
}
}
//-->
</script>
<?php
// Обработчик HTML-формы
// Загружаем все файлы на сервер
for($i = 0; $i < count($_FILES['att']['name']); $i++)
{
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['att']['tmp_name'][$i], "files/".$_FILES['att']['name'][$i]))
{
// Уничтожаем файл во временной директории
unlink($_FILES['att']['tmp_name'][$i]);
// Изменяем права доступа к файлу
chmod("files/".$_FILES['att']['name'][$i], 0644);
}
}

// Осуществляем автоматическую перезагрузку страницы
// если содержимое суперглобального массива $_POST
// не является пустым
if(!empty($_POST))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=".$_SERVER['PHP_SELF']."'>
</HEAD></HTML>";
}
?>

   
 
 автор: sim5   (17.12.2007 в 20:55)   письмо автору
 
   для: Dmitriy76   (17.12.2007 в 20:35)
 

Потому, что у вас без проверки, пришел ли массив $_FILES['att'] или нет, запускается цикл, соотвественно вы и получаете ошибку.

   
 
 автор: Dmitriy76   (17.12.2007 в 21:49)   письмо автору
 
   для: sim5   (17.12.2007 в 20:55)
 

Я перед циклом поставил if ($_SERVER['REQUEST_METHOD'] == 'POST') и всё равно!

   
 
 автор: sim5   (17.12.2007 в 22:00)   письмо автору
 
   для: Dmitriy76   (17.12.2007 в 21:49)
 

И что вы надеетесь получить из этой проверки, если форма не отправлялась? Может так попробовать if (isset($_FILES['att']))?

PS. Кстати, закиньте вы JS блок между <head> и </head>, ну не серьезно это, когда не оправдано, пялить его после формы.

   
 
 автор: Faraon   (17.12.2007 в 22:00)   письмо автору
 
   для: Dmitriy76   (17.12.2007 в 21:49)
 

Полную ошибку можете привести?
Возможно здесь может быть имеет место права на директорию, куда вы копируете файлы

   
 
 автор: sim5   (17.12.2007 в 22:01)   письмо автору
 
   для: Faraon   (17.12.2007 в 22:00)
 

Да какие права? Форма не отправлена, а товарищ метод передачи узнает. Определять нужно - пришли данные от формы или нет, а не метод передачи.

   
 
 автор: Dmitriy76   (17.12.2007 в 22:26)   письмо автору
 
   для: sim5   (17.12.2007 в 22:01)
 

if (isset($_FILES['att'])) -------- помогло ! Воистину век живи век учись!

   
 
 автор: Faraon   (17.12.2007 в 22:29)   письмо автору
 
   для: Dmitriy76   (17.12.2007 в 22:26)
 

Иногда, это в каких случаях?Увас индексы параметров не определены

   
 
 автор: sim5   (17.12.2007 в 22:31)   письмо автору
 
   для: Dmitriy76   (17.12.2007 в 22:26)
 

Сколько раз вам повторять, вы получаете предупреждение, что индекс на который вы ссылаетесь здесь:
for($i = 0; $i < count($_FILES['att']['name']); $i++)
НЕ ОПРЕДЕЛЕН!!! А все потому, что форма еще не отправлена при первой загрузке страницы. Вам лень сделать хотя бы так?:

<?
if (isset($_FILES['att'])) {
//и только после этого
for($i 0$i count($_FILES['att']['name']); $i++) {

   
 
 автор: Dmitriy76   (17.12.2007 в 22:39)   письмо автору
 
   для: sim5   (17.12.2007 в 22:31)
 

Работает !!!! Спасибо sim5 и всем проявившим внимание!

   
Rambler's Top100
вверх

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