функция Foreach(). ПОМОГИТЕ!

Тема в разделе "PHP программирование", создана пользователем Alexygen, 2 авг 2007.

Статус темы:
Закрыта.
  1. Alexygen

    Alexygen Гость

    Пытаюсь загрузить файл на сервер таким образом:
    foreach ($HTTP_POST_VARS as $key => $value) {
    move_uploaded_file($_FILES['filename']['tmp_name'],"../modules/catalog/things_images/$new_name");
    }

    при этом надо в переменной $_FILES['filename']['tmp_name'] указать filename, а этот параметр у меня хранится в переменной $key полученным foreach. Подскажите, пожалуйста, как мне указать правильные параметры move_uploaded_file, чтобы он заработал.

    Зарание огромное спасибо!
     
  2. MajestiC

    MajestiC Гость

    Первое. Избавься от синтаксиса PHP 3. Уже лет 5 используют $_POST вместо $HTTP_POST_VARS.

    Второе. filename - это название input в форме, зачем пробегать по всему посту? <input type="file" name="filename">

    Третье. А где проверка на is_uploaded_file?

    Четвертое. Давай посмотрим на логику твоего вопроса. "а этот параметр у меня хранится в переменной $key полученным foreach". Так кто тебе мешает вместо $_FILES['filename']['tmp_name'] писать $_FILES[$key]['tmp_name']? (Хоть я очень сильно сомневаюсь что этот код рабочий)
     
  3. Alexygen

    Alexygen Гость

    foreach ($_POST as $key => $value) {
    move_uploaded_file($_FILES[$key]['tmp_name'],"../modules/catalog/things_images/$new_name");
    }
    не работает! а forech я использую потому что имя инпута постоянно разное, т.е. меняется ...
     
  4. Oflashp

    Oflashp Гость

    Мб поможет, просто вытащил из своих работ недавних:
    Код (Text):
    <?
    $num_of_upforms = 10;
    $game_id = $_REQUEST[game_id];
    ?>
    <br>
    <form enctype="multipart/form-data" action='index.php' method='post' name='game_upload_image'>
    <input name="do" type="hidden" value='game_upload_image'>
    <input name="game_id" type="hidden" value='<? echo $game_id;?>'>
    <table width="85%" border="0" cellspacing="1" cellpadding="5" class='block'>
    <tr>
    <th colspan="2" align="left" scope="col" class='block_inside_center_top'><b>Загрузка изображений</b></th>
    </tr>
    <?
    for($i=0;$i <= $num_of_upforms; $i++)
    {
    ?>
    <tr>
    <th align="left" valign="middle" scope="col" class='block_inside_left'>Изображение <? $num = $i + 1;echo $num;?>:</th>
    <input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
    <th align="left" valign="middle" scope="col" class='block_inside_right'><input name="image[<? echo $i;?>]" type="file"></th>
    </tr>
    <?
    }
    ?>
    <tr align="center">
    <th colspan="2" valign="middle" scope="col"><input type="submit" name="Submit" value="Добавить"></th>
    </tr>
    </table>
    </form>
    <br>
    А вот обработчик:
    Код (Text):
    if($do == 'game_upload_image')
    {
    $width_resized = '155';
    $game_id = $_REQUEST['game_id'];
    $image = $_FILES['image'];
    $num_images = 10;
    $time = $glob_time;
    //echo $game_id;
    if($game_id != '')
    {
    //echo 1;
    $mysql_query_game = mysql_query("SELECT ID FROM game_db WHERE ID = '$game_id' LIMIT 1");
    if(mysql_num_rows($mysql_query_game) == 1)
    {
    //echo 2;
    //echo $image['tmp_name']."=>".$valw."<br>";
    for($i=0;$i<=$num_images;$i++)
    {
    if($image['tmp_name'][$i] != '' && $image['type'][$i] == 'image/jpeg' && $image['size'][$i] != '2097152')
    {
    //echo 4;
    $dir = '../games/gallery/';
    $new_dir = $dir.$game_id."/";
    $new_dir_w = $dir.$game_id."";
    if(!is_dir($new_dir))
    {
    mkdir($new_dir);
    }
    $mysql_img_insert = mysql_query("INSERT INTO game_gallery(img_id, game_id, img_file, img_folder, date, visible) VALUES ('', '$game_id', '', '$new_dir_w', '$time', '0')");
    $id = mysql_insert_id();
    $uploadfile = substr(md5(basename($image['name'][$i]).$id),0, 10) . ".jpg";
    $em_upload_file = substr(md5(basename($image['name'][$i])),0, 10);
    $save_url = $client_dir.$id."/".$uploadfile;
    if(move_uploaded_file($image['tmp_name'][$i], $new_dir . $uploadfile))
    {
    $result .= "Файл - изображение '".$new_dir . $uploadfile."' загружен.<br>";
    $num_images = $num_images+1;
    $mysql_img_insert = mysql_query("UPDATE game_gallery SET img_file = '$uploadfile', visible = '1' WHERE img_id = '$id'");
    }
    else
    {
    $mysql_img_insert = mysql_query("DELETE FROM game_gallery WHERE img_id = '$id'");
    $result .= "<br>Ошибка при загрузке файла '".$new_dir . $uploadfile."'";
    }
    $d = "?d=game_view&id=".$game_id;
    }
    }

    }
    }
    write_result($result, $d, '', $type);
    }
    }
     
  5. MajestiC

    MajestiC Гость

    Для: Oflashp
    Ну что это за код? (конструктивная критика)
    $game_id = $_REQUEST[game_id]; - у тебя тут должен быть notice (почему в кавычки не взял game_id?)
    Почему в html иногда аттрибуты в двойных кавычках, иногда в одинарных?
    Сколько можно использовать register_globals? Ну уже сколько можно писать по стандартам PHP 3 (которому уже больше 7 лет), слава богу в php 6 он будет вызывать e_core_error.

    Это ты просто проверяешь разрешение файла, а не его тип. Я тебе отошлю имя файла asdasf.jpg и оно будет иметь type = 'image/jpeg', так как type это mime от разрешения файла. Копай в сторону getimagesize.

    Всё еще надеемся на magic_quotes_gpc? (Это относится ко всем запросам). Не хорошо. Учить mysql_escape_string/mysql_real_escape_string (не смотреть на addslashes) и отказаться от magic_quotes_gpc (настройка php)

    Где проверка на is_uploaded_file?

    В конце концов лучше использовать шаблонизатор, код-лапша не хорошо выглядит.

    Не правильная формулировка вопроса. Опиши всю задачу в целом.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей