Загрузка изображения на сервер с проверками

С8
На сайте с 23.08.2012
Offline
108
316

Здравствуйте! Мне нужно реализовать загрузку фотографии на сервер с проверками и переименовкой. Есть такие отрывки кодов, как только не пробовала, не могу собрать их в один файл.

В этом коде все отлично загружается, но без проверок и с русским названием.

$uploaddir = 'avatars/';

if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploaddir .

$_FILES['foto']['name'])) {

print "Файл успешно загружен!";

} else {

print "Какая-то ошибка!";

}

Вот коды для проверок:

Здесь у меня в папку ничего не загружается, и файл заносится в базу с временным именем и потерей расширения, хотя есть скрипт для замены имени.

function isSecurity($foto){

$name = $_FILES['foto']['name'];

$type = $_FILES['foto']['type'];

$size = $_FILES['foto']['size'];

$blacklist = array(".php", ".phtml", ".php3", ".php4");

foreach ($blacklist as $item) {if(preg_match("/$item\$/i", $name))return false;}

if (($type != "image/gif") && ($type != "image/png") && ($type != "image/jpg") && ($type != "image/jpeg"))return false;

if ($size > 800 * 1024) return false;

}

function LoadFoto($foto){

$type = $_FILES['foto']['type'];

$uploaddir = "avatars/";

$name = md5(microtime()).".".substr($type, strlen("image/"));

$uploadfile = $uploaddir.$name;

if(move_uploaded_file($foto["tmp_name"], $uploadfile))

{

setFoto($name); return true;

}

else return false;

}

function setFoto($name)

{

mysql_query ("INSERT INTO obyavleniya SET foto='$name' WHERE id='$id'");

}

Помогите советом, пожалуйста и если будете писать код, напишите, пожалуста, с пояснениями. Спасибо.

---------- Добавлено 11.09.2012 в 13:32 ----------

Если есть, напишите, пожалуйста, свой рабочий код с пояснениями.

Пробовала вот так, вроде все понятно, но тоже не выходит, файл вообще не загружается, а в базе сохраняется под временным именем, хотя имя обрабатывается функцией:

if (isset($_POST['foto'])) {

function isSecurity($foto){

$name = $_FILES['foto']['name'];

$type = $_FILES['foto']['type'];

$size = $_FILES['foto']['size'];

$blacklist = array(".php", ".phtml", ".php3", ".php4");

foreach ($blacklist as $item) {if(preg_match("/$item\$/i", $name))return false;}

if (($type != "image/gif") && ($type != "image/png") && ($type != "image/jpg") && ($type != "image/jpeg"))return false;

if ($size > 800 * 1024) return false;

}

function LoadFoto($foto){

$type = $_FILES['foto']['type'];

$uploaddir = "avatars/";

$name = md5(microtime()).".".substr($type, strlen("image/"));

$uploadfile = $uploaddir.$name;

if(move_uploaded_file($foto["tmp_name"], $uploadfile))

{

setFoto($name); return true;

}

else return false;

}

function setFoto($name)

{

$result1 = mysql_query ("INSERT INTO obyavleniya (foto)) VALUES ('$name')");

}

if (isSecurity($foto)) LoadFoto($foto);

else $message = "Ошибка при загрузке фото";

}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий