Что нужно поправить?

Может быть целесообразнее прикрутить это
<form method="post" name="upload_form" action="upload.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
<p align='center'>Максимальный размер файла: 5 мб.<br /><input type="file" name="uploaded_file"><input type="submit"></p>
</form>

<?php
/*
* Загрузка файла на сервер
* Автор: Mowshon (Live-code.ru)
* Дата: 11.11.13
*/

// Максимально допустимый размер загружаемого файла - 5Мб
$MaxFileSizeInBytes = 5242880;
// Разрешение расширения файлов для загрузки
$AllowFileExtension = array('jpg', 'png', 'jpeg', 'gif', 'rar', 'zip', 'doc', 'pdf', 'djvu');
// Оригинальное название файла
$FileName = $_FILES['uploaded_file']['name'];
// Полный путь до временного файла
$TempName = $_FILES['uploaded_file']['tmp_name'];
// Папка где будут загружатся файлы
$UploadDir = "uploads/";
// Полный путь к новому файлу в папке сервера
$NewFilePatch = $UploadDir.$FileName;
if($FileName) {
// Проверка если расширение файла находится в массиве доступных
$FileExtension = pathinfo($FileName, PATHINFO_EXTENSION);
if(!in_array($FileExtension, $AllowFileExtension)) {
echo "Файлы с расширением {$FileExtension} не допускаются";
}
else {
// Проверка размера файла
if(filesize($TempName) > $MaxFileSizeInBytes) {
echo "Размер загружаемого файла превышает 5МБ";
}
else {
// Проверяем права доступа на папку
if(!is_writable($UploadDir)) {
echo "Папка ".$UploadDir." не имеет прав на запись";
}
else {
// Копируем содержимое временного файла $TempName и создаем нового в папке сервера
$CopyFile = copy($TempName, $NewFilePatch);
if(!$CopyFile) {
echo "Возникла ошибка, файл не удалось загрузить!";
}
else {
echo "Файл успешно загружен!<br />Ссылка на файл: <a href='{$NewFilePatch}'>{$NewFilePatch}</a>";
}
}
}
}
}
?>


но здесь почему-то сам файл тоже не закидывается в uploads/. Если да, как его можно адаптировать? Спасибо!
 
каждый оператор должна оканчиваться точкой с запятой
в первой строке ты неправильно скопировал, во второй я пропустил
Код:
$ext = pathinfo($_FILES['pic']['tmp_name']['extension'])
;

move_uploaded_file($_FILES['pic']['tmp_name'], $dir.time().".".$ext)
}
заменить на
Код:
$ext = pathinfo($_FILES['pic']['tmp_name'])['extension'];

move_uploaded_file($_FILES['pic']['tmp_name'], $dir.time().".".$ext);
}
 
Выдает такое:
Parse error
: syntax error, unexpected '[' inE:\home\tn.ru\www\upload.phpon line 18
$ext = pathinfo($_FILES['pic']['tmp_name'])['extension'];
 
Надеюсь теперь заработает
Код:
if(is_uploaded_file($_FILES['pic']['tmp_name']))
{
    $pn=time().".jpg";
    $pw=$_POST['pw'];
    $ph=$_POST['ph'];

    $dir=$config['webroot'].'/uploadfile/all/'.date('Y').'/'.date('m').'/'.date('d').'/';
    mkdirs($dir);
    makethumb($_FILES['pic']['tmp_name'],$dir.$pn,$pw,$ph);
    if (!file_exists($dir.$pn)) {
        $ext = pathinfo($_FILES['pic']['name'],PATHINFO_EXTENSION);
        $pn=time().".".$ext;
        move_uploaded_file($_FILES['pic']['tmp_name'], $dir.$pn);
    }
    $pn=str_replace($config['webroot'],$config['weburl'],$dir).$pn;
    $str="window.parent.document.getElementById('$_GET[obj]').value='$pn';";
    echo "<script>$str;window.parent.close_win();</script>";
    die;
}
 
Последнее редактирование:
Спасибо огромное! помогло! Теперь я так понимаю, что форматы загрузки ограничить никак невозможно?
 
Не могли бы подсказать как правильно организовать .htaccess
Просто создав .htaccess с содержанием php_value engine off в папке uploadfile не помогает.
php скрипты загружаются в папку. Может я что-то не так сделал?
Или скрипты загружаться будут, но не будут выполняться?
Если в коде
if(is_uploaded_file($_FILES['pic']['tmp_name']))
{
$pn=time().".jpg";
$pw=$_POST['pw'];
$ph=$_POST['ph'];

$dir=$config['webroot'].'/uploadfile/all/'.date('Y').'/'.date('m').'/'.date('d').'/';
mkdirs($dir);
makethumb($_FILES['pic']['tmp_name'],$dir.$pn,$pw,$ph);
if (!file_exists($dir.$pn)) {
$ext = pathinfo($_FILES['pic']['name'],PATHINFO_EXTENSION);
$pn=time().".".$ext;
move_uploaded_file($_FILES['pic']['tmp_name'], $dir.$pn);
}
$pn=str_replace($config['webroot'],$config['weburl'],$dir).$pn;
$str="window.parent.document.getElementById('$_GET[obj]').value='$pn';";
echo "<script>$str;window.parent.close_win();</script>";
die;
}
было-бы можно ограничиться загрузкой zip, мне достаточно...
 
Или скрипты загружаться будут, но не будут выполняться?
Да, именно так

Если в коде
....
было-бы можно ограничиться загрузкой zip, мне достаточно...
вы берете расширение загружаемого файла в переменную $ext этой строчкой: $ext = pathinfo($_FILES['pic']['name'],PATHINFO_EXTENSION);

так и проверьте его, например:
if($ext!='zip'){
die('Die, stupid Hacker');
}
 
Назад
Сверху