Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Код, сохраняющий информацию о новом аватаре в БД и выполняющий всю работу по проверке загружаемого файла на корректность и его уменьшениюприведен ниже: <?php session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } $id = $_SESSION['user_id']; function GenerateName($n=10) { $key = ''; $pattern = '1234567890abcdefghijklmnopqrstuvwxyz'; $counter = strlen($pattern)-1; for($i=0; $i<$n; $i++) { $key.= $pattern{rand(0,$counter)}; } return $key; } function resize_image($max_w, $max_h, $img, $fname) { $size = GetImageSize($img); $w = $size[0]; $h = $size[1]; $x_ratio = $max_w / $w; $y_ratio = $max_h / $h; if (($w <= $max_w) && ($h <= $max_h)) { $dstw = $w; $dsth = $h; } else if (($x_ratio * $h) < $max_h) { $dstw = $max_w; $dsth = ceil($x_ratio * $h); } else { $dsth = $max_h; $dstw = ceil($y_ratio * $w); } $src = ImageCreateFromJpeg($img); $dst = imagecreatetruecolor($dstw, $dsth); ImageCopyResampled($dst, $src, 0, 0, 0, 0, $dstw, $dsth, $w, $h); //$fname = substr($img, 0, strpos($img, '.')).'-thumb.jpg'; /*print nl2br("$img: Width: $w, Height: $h, Сжатие по x: $x_ratio, Сжатие по у: $y_ratio Новое имя: $fname, Новая ширина: $dstw, Новая высота: $dsth "); */ ImageJpeg($dst, $fname, 100); } include '../mysql.php'; $error = false; $ert = ''; if ($_FILES['userfile']['error'] > 0) { $error = true; switch ($_FILES['userfile']['error']) { case 1: $ert.='размер файла больше upload_max_filesize\n'; break; case 2: $ert.='размер файла больше max_file_size\n'; break; case 3: $ert.='загружена только часть файла\n'; break; case 4: $ert.='файл не загружен\n'; break; } } // Проверка, имеет ли файл правильный MIME-тип $blacklist = array(".php", ".phtml", ".php3", ".php4", "pl"); foreach ($blacklist as $item) { if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { $ert.="Вы попытались загрузить вредоносный файл.\n"; $error = true; } } $imageinfo = getimagesize($_FILES['userfile']['tmp_name']); if($imageinfo['mime']!= 'image/jpeg') { $ert.="Можно загружать только изображения формата JPEG\n"; $error = true; } // помещаем файл туда, куда нужно $upfile = 'uploads/'.$_FILES['userfile']['name']; if ($_FILES['userfile']['tmp_name']) { $z = $_FILES['userfile']['tmp_name']; if (!move_uploaded_file("$z", $upfile)) { $ert.='Проблема: невозможно переместить файл в каталог назначения\n'; $error = true; } if (!$error) { $fn = '../avatars/'.GenerateName().'.jpg'; resize_image(240, 320, $upfile, $fn); $fn = substr($fn,3); $q = "insert into avatars values(NULL, '$fn')"; mysql_query($q); $avid = mysql_insert_id(); $q = "update user_details set avatar_id=$avid where id={$id}"; mysql_query($q); unlink($upfile); } } else { $ert.='Проблема: возможна атака через загрузку файла.\n'; $error = true; } include '../head.php'; $no_user = false; $same_user = true; include '../menu.php'; echo '<div id="rightCol">'; if ($error) { echo nl2br('<div class="errMessage">Возникли следующие проблемы:<br>'.$ert.'</div>'); } else { echo '<div class="OKMessage">Файл успешно загружен</div>'; } echo '</div>'; echo '<div id="bottom"></div></div>'; include '../foot.php'; ?>
|