Как еще можно защитить эту страницу?
<?php
date_default_timezone_set('Europe/Moscow');
session_start();
include_once("bd_connect.php");
if (!isset($_FILES['myfile'])){
echo "Ошибка загрузки";
exit;
}
if($_FILES['myfile']['error'] > 0)
{
switch ($_FILES['myfile']['error'])
{
case 1: echo 'Размер файла превышает допустимое значение UPLOAD_MAX_FILE_SIZE'; break;
case 2: echo 'Размер файла превышает допустимое значение MAX_FILE_SIZE'; break;
case 3: echo 'Не удалось загрузить часть файла'; break;
case 4: echo 'Файл не был загружен'; break;
case 6: echo 'Отсутствует временная папка.'; break;
case 7: echo 'Не удалось записать файл на диск.'; break;
case 8: echo 'PHP-расширение остановило загрузку файла.'; break;
}
exit;
}
else
{
$date=date("Y-m-d H:m");
$foto_dir = "/images/";
$foto_name = $foto_dir.time()."_photo.jpg";
$upfile = getcwd()."/images/" . time()."_photo.jpg";
}
$allowed= array
(
'image/png',
'image/jpeg',
'image/jpeg',
'image/jpeg',
'image/gif',
'image/bmp',
'image/vnd.microsoft.icon',
'image/tiff',
'image/tiff',
'image/svg+xml',
'image/svg+xml'
);
if(!in_array($_FILES['myfile']['type'],$allowed))
{
echo $_FILES ['myfile']['type']."Пошел ты!";
exit;
}
$blacklist = array(".php", ".phtml", ".php3", ".php4");
foreach ($blacklist as $item)
{
if(preg_match("/$item\$/i", $_FILES['myfile']['name']))
{
echo "Нельзя загружать скрипты.";
exit;
}
}
$imageinfo = getimagesize($_FILES['myfile']['tmp_name']);
if(!in_array($imageinfo['mime'],$allowed))
{
echo $imageinfo['mime']."Пошел ты!";
exit;
}
$fp = fopen($upfile, 'r');
$contents = fread($fp, filesize ($upfile));
fclose($fp);
$contents = strip_tags($contents);
$fp = fopen($upfile, 'w');
fwrite($fp, $contents);
fclose($fp);
if (move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
{
$q = "INSERT INTO photos (user,date,name) VALUES
('".$login."','".$date."','".$foto_name."')";
$query = mysql_query($q);
echo "Выбранный файл загружен.\n";
}
else{
echo "Ошибка загрузки файла.\n";
}
?>