Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема при загрузке фалов


Автор: mnmlmouse 22.8.2011, 14:20
есть страничка functions.php
 в ней есть функция загрузки файлов, как мне сделать так чтобы при загрузке файла
его имя сменялось на раундомное число 

вот сам код:
Код

function img_load($img, $path, $overwrite = false, $uniquename = false) {
    
    /*
    // маленькие проверки на будущие глюки
    $flag = (bool)ini_get('safe_mode');
    if ($flag || (!strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'win'))) {
    if (getmyuid() != fileowner($path)) {
    echo report('Safe mode uncompatibililty. Check owner for '.$path'');
    }
    }
    */
    
    // разрешенные для закачки расширения (типы) файлов
    $allowed = array('jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'png');
    
    // максимальный размер файла. В любом случае он не может быть
    $maxsize = 10000000; // 350Kб
    
    // считываем имя закачиваемого файла
    $filename = $_FILES[$img]['name'];
    
    // считываем размер закачиваемого файла
    $filesize = $_FILES[$img]['size'];
    
    // считываем расширение файла
    $fileext = strtolower(substr(strrchr($filename, "."), 1));
    
    // запрещаем закачку неразрешенных типов, например PHP скриптов!!
    if (!in_array($fileext, $allowed)) { echo report('Недопустимый тип файла'); return false; }
    
    // запрещаем закачку слишком больших файлов
    if($filesize > $maxsize) { echo report('Слишком большой файл'); return false; }
    
    // считываем имя файла, который закачан во временную папку
    $tmpfname = $_FILES[$img]['tmp_name'];
    
    // исправляем имя файла, удаляем недопустимые символы, пробелы.
    //$filename = ereg_replace('[^a-z0-9._]', '', str_replace(' ', '_', str_replace('%20', '_', strtolower($filename))));
    //$tmpfname = resizeimg($tmpfname, 's_'.$tmpfname);
    if ($filename == '') { echo report('Недопустимое имя файла. Только английские буквы, цифры и _'); return false; }
    
    // полный путь к закачке файла
    if ($uniquename) $filepath = $filepath.time().'_';
    
    $filepath = $path.$filename;
    
    if (is_uploaded_file($tmpfname)) {
        // если $overwrite!=true проверяем нету ли уже такого файла
        if (!$overwrite) {
        if (file_exists($filepath)) { echo report('Файл с именем <b>'.$filename.'</b> уже существует. Переименуйте файл или удалите его с сервера'); return; }
        }
        
        if (!move_uploaded_file ($tmpfname, $filepath)) { echo report('Ошибка закачки файла: '.$filename); return false; }
        
        // Если пользователь Апача и FTP разные, например nobody и pupkin, то чтобы иметь доступ по FTP (по умолчанию выставляется 0600) поставьте 0644 или 0666 если хотите также перезаписывать по FTP
        @chmod($filepath, 0644);
    }
return true;
}

Автор: NFL 22.8.2011, 14:58
$filename = mt_rand (10, 1000000);

Автор: mnmlmouse 22.8.2011, 16:38
NFL, огромнейшее спасибо Вам за помощь!

Автор: mnmlmouse 22.8.2011, 18:19
ксажелению такой вариант не работает а может я просто не там ставлю польшая просьба вставте его на нужное место в функции и целиком выложите код! Буду очень благодарен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)