|
|
|
| файл addnews.php:
<?php
// Выставляем уровень обработки ошибок
Error_Reporting(E_ALL & ~E_NOTICE);
// Устнавливаем соединение с базой данных
include "config.php";
// Проверим - достаточно ли информации для занесения в базу данных
if(empty($_POST['title'])) links("Отсутствует title");
if(empty($_POST['keywords'])) links("Отсутствует keywords");
if(empty($_POST['description'])) links("Отсутствует description");
if(empty($_POST['tegs'])) links("Отсутствует теги");
if(empty($_POST['name'])) links("Отсутствует заголовок");
if(empty($_POST['body'])) links("Содержание не введено");
if(empty($_POST['url_text']) && !empty($_POST['url'])) $_POST['url_text'] = $_POST['url'];
// Определяем, скрыта новоть или нет
if($_POST['hide'] == "on") $showhide = "show";
else $showhide = "hide";
// Добавляем протокол в url, если пользователь забыл это сделать сам
$_POST['url'] = strtr($_POST['url'], "HTTP", "http");
if (!empty($_POST['url'])) {
if (strtolower((substr($_POST['url'], 0, 7))!="http://") && (strtolower(substr($_POST['url'], 0, 7))!="ftp://")) $url="http://".$_POST['url'];
}
// Проверяем время
if(!preg_match("|^[\d]+$|",$_POST['date_year'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_month'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_day'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_hour'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_minute'])) puterror("Ошибка при обращении к блоку новостей");
// Заменяем одинарные кавычки обратными, чтобы избежать конфликта
// при добавлении информации в таблицу
if (!get_magic_quotes_gpc())
{
$_POST['title'] = mysql_escape_string($_POST['title']);
$_POST['keywords'] = mysql_escape_string($_POST['keywords']);
$_POST['description'] = mysql_escape_string($_POST['description']);
$_POST['tegs'] = mysql_escape_string($_POST['tegs']);
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['body'] = mysql_escape_string($_POST['body']);
}
// Если поле выбора картинки не пустое - закачиваем её на сервер
$path = "";
// Если требуется загрузить файл - загружаем
if($_POST['chk_filename'] == "on")
{
if (!empty($_FILES['filename']['tmp_name']))
{
// Формируем путь к файлу
$path = "../files_news/".date("YmdHis",time());
// Если оператор пожелал переименовать файл - переименовываем
if($_POST['chk_rename'] == "on")
{
// Проверяем, чтобы не было прямых и обратных слешей
$_POST['rename'] = str_replace("\\","",$_POST['rename']);
$_POST['rename'] = str_replace("/","",$_POST['rename']);
$_POST['rename'] = stripcslashes($_POST['rename']);
$path = "files/".substr($_POST['rename'], 0, strrpos($_POST['rename'], "."));
}
// Проверяем, не является ли файл скриптом PHP или Perl, html, если это так преобразуем его в формат .txt
$extentions = array("#\.php#is",
"#\.phtml#is",
"#\.php3#is",
"#\.html#is",
"#\.htm#is",
"#\.hta#is",
"#\.pl#is",
"#\.xml#is",
"#\.inc#is",
"#\.shtml#is",
"#\.xht#is",
"#\.xhtml#is");
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['filename']['name'], ".");
$add = $ext;
foreach($extentions AS $exten)
{
if(preg_match($exten, $ext)) $add = ".txt";
}
$path .= $add;
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['filename']['tmp_name'], "../".$path))
{
// Уничтожаем файл во временной директории
@unlink($_FILES['filename']['tmp_name']);
// Изменяем права доступа к файлу
@chmod("../".$path, 0644);
}
}
else links("Не указан файл для загрузки");
}
include("function.php");
// Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
// $image и помещающую её в файл $smallimage
if(!resizeimg($path, $smallimage, 133, 100))
{
links($_POST['id_catalog'],
"Ошибка при создании уменьшенной копии изображения с
помощью библиотеки GDLib");
}
// Формируем и выполняем SQL-запрос на добавление новости
$query = "INSERT INTO seo_news VALUES (0,
'".$_POST['title']."',
'".$_POST['keywords']."',
'".$_POST['description']."',
'".$_POST['tegs']."',
'".$_POST['name']."',
'".$_POST['body']."',
'".$_POST['date_year']."-".$_POST['date_month']."-".$_POST['date_day']." ".sprintf("%02d",$_POST['date_hour']).":".sprintf("%02d",$_POST['date_minute']).":00',
'".$_POST['url']."',
'".$_POST['url_text']."',
'$path',
'".$_POST['category']."',
'$showhide');";
if(mysql_query($query)) header("Location: index.php?page=".$_GET['page']);
else links("Ошибка при добавлении новостной позиции");
// Вспомогательная функция для вывода ссылок возврата
function links($msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке новостей</a></p>";
echo "<p><a href=index.php>Администрирование новостей</a></p>";
exit();
}
?>
|
файл function.php:
<?
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
$filename = "../".$filename;
// Имя файла с уменьшенной копией.
$smallimage = "../".$smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
?>
|
Выдает ошибки:
Warning: imagejpeg() [function.imagejpeg]: Unable to open '../' for writing: No such file or directory in Z:\home\domen.ru\www\admin\seo-news\function.php on line 43
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\domen.ru\www\admin\seo-news\function.php:51) in Z:\home\domen.ru\www\admin\seo-news\addnews.php on line 122
|
| |
|
|
|
|
|
|
|
для: Dizels
(21.07.2008 в 19:13)
| | код function.php был взят отсюда: http://softtime.ru/forum/read.php?id_forum=1&id_theme=145
Честно говоря я из этой функции к примеру так до конца и не понял - куда будет сохраняться маленькое изображение и как оно будет называться.
Так что прошу помочь и с этим. | |
|
|
|
|
|
|
|
для: Dizels
(21.07.2008 в 19:22)
| | Вы "честно" скопировали код, не позаботившись о путях и т.д..
Вторая ошибка из-за того, что до передачи заголвка уже был вывод в браузер. | |
|
|
|
|
|
|
|
для: sim5
(21.07.2008 в 19:34)
| | Да нет, пути как-раз правильно прописаны.
Вышеприведенные файлы лежат в папке seo-news которая в свою очередь лежит в папке admin.
Сами файлы храняться в корне в папке files_news | |
|
|
|
|
|
|
|
для: Dizels
(21.07.2008 в 19:45)
| | ../ - указывает на уровень который выше, разберитесь. | |
|
|
|
|
|
|
|
для: sim5
(21.07.2008 в 20:10)
| | Ну все правильно, он и есть выше | |
|
|
|
|
|
|
|
для: Dizels
(21.07.2008 в 20:17)
| | Вы знаете как перводится это сообщение: Unable to open '../' for writing: No such file or directory
Могу помочь: "Нельзя открыть '.. /' для записи: нет такого файла или директории".
Это может быть - если неверн или несуществует указазнный путь/файл. Разбирайтесь. | |
|
|
|
|
|
|
|
для: sim5
(21.07.2008 в 20:23)
| |
Warning: imagejpeg() [function.imagejpeg]: Unable to open '' for writing: No error in Z:\home\domen.ru\www\admin\seo-news\function.php on line 43
|
Теперь вот такое выдает, это как я понимаю означает, что не может записать. Но почему? | |
|
|
|
|
|
|
|
для: Dizels
(21.07.2008 в 22:27)
| | Потому, что вы не выясняете путь записи файла по отношению к скрипту, а пытаетесь угадать его. | |
|
|
|
|
|
|
|
для: sim5
(22.07.2008 в 04:54)
| | Я пытался понять - по моему пониманию - все пути были написаны верно, но скрипт не работает, начал пробывать подбирать - тоже не выходит.
Помогите плз, только не словами - ищи. Это я и так делаю, так как мне интересно не просто сделать, а и понять что и почему, чтобы во второй раз сам мог решить проблему.
Может "ткнете" меня в мою ошибку?
Если недостаточно какой-то инфы - дайте знать, я ее предоставлю. | |
|
|
|
|
|
|
|
для: Dizels
(22.07.2008 в 10:45)
| | >Может "ткнете" меня в мою ошибку?
Да sim5 вам сказал, что ваша ошибка в путях-разберитесь с ними для начала, а потом с функцией imagejpeg
imagejpeg ( resource $image [, string $filename [, int $quality]] )
|
| |
|
|
|
|