|
|
|
| Добрый день!! Я написал фотогалерею, закачал на сервак. Вот скрипт формы и обработчика:
ФОРМА:
include("conf/config.php");//Подключаем файл конфигурации
include("../../config/mysql_connect.php");//Подключаем конфигаруционный файл гостевой книги
include('../../config/function_ok.php');//Подключаем файл ошибки а ok
include('../../config/function_err.php');//Подключаем файл ошибки на err
include('../../config/function_resize.php');//Фунция для работы с изображеними
$id_gal = $_GET['id_gal'];//Извлекаем индекс галереии
$msg_nav = $_GET['msg_nav'];//Извлекаем точку останова пользователя
//*****************************************************************************
// Делаемзапрос в БД *
//*****************************************************************************
$sql="SELECT * FROM foto
WHERE id_gal = ".$id_gal."";
$sql = mysql_query($sql);
$num = mysql_num_rows($sql);
$num = $num + 1;
//*****************************************************************************
// Формируем HTML форму *
//*****************************************************************************
echo "
<center>
<TABLE width=600 cellpadding = 0 cellspacing = 0 border = 0 >
<TR>
<TD width=\"2%\"><IMG src='http://$server/graf/1.gif' width=14 height=12 border=0></TD>
<TD width=\"96%\" background='http://$server/graf/2.gif'></TD>
<TD width=\"2%\"><IMG src='http://$server/graf/3.gif' width=14 height=12 border=0></TD>
</TR>
<TR>
<TD background='http://$server/graf/4.gif'></TD>
<TD>
<table width=100% border = 0 >
<tr>
<TD>
<form enctype='multipart/form-data' name='dob_gal' action=dob_foto_obr.php method=post>
<table width=100% border=0>
<tr>
<td colspan=2><font color=66666 size=5><b>Добовления фотографии</b></font><br><br></td>
</tr>
<tr>
<td valign=top><b>Введите описание:</b></td><td><input name=name type=text size=47</td>
</tr>
<tr>
<td><b>Укажите фото:</b></td><td><input size=50 name='images' type='file'></td>
</tr>
<tr>
<td><b>Введите позицию:</b></td><td><input size=3 name=poz type=text value=".$num."></td>
</tr>
<tr>
<td><b>Отоброжение:</b></td>
<td>
<select size='1' name=hide>
<option value='show' select>Отображать
<option value='hide'>Скрыть
</option>
</select>
</td>
</tr>
<tr>
<td align=right colspan=2><br><input type=submit value='Добавить'></td>
</tr>
</table>
<input name=id_gal type=hidden value=".$id_gal.">
<input name=msg_nav type=hidden value=".$msg_nav.">
</form>
</TD>
</tr>
</TABLE>
</TD>
<TD background='http://$server/graf/8.gif'></TD>
<TR>
<TD width='2%'><IMG src='http://$server/graf/5.gif' width=14 height=12 border=0></TD>
<TD width='96%' background='http://$server/graf/6.gif'></TD>
<TD width='2%'><IMG src='http://$server/graf/7.gif' width=14 height=12 border=0></TD>
</TR></center>\n";
exit();
?>
|
АБРОБОТЧИК:
include("conf/config.php");//Подключаем файл конфигурации
include("../../config/mysql_connect.php");//Подключаем конфигаруционный файл гостевой книги
include('../../config/function_ok.php');//Подключаем файл ошибки а ok
include('../../config/function_err.php');//Подключаем файл ошибки на err
include('../../config/function_resize.php');//Фунция для работы с изображеними
//*****************************************************************************
// Извлекаем данные из POST массива *
//*****************************************************************************
$id_gal = $_POST['id_gal'];//Извлекаем ключ галереии куда мы буде добовлять фото
$msg_nav = $_POST['msg_nav'];//Страница остонова пользователя
$name = $_POST['name'];//Извлекаем описание фото
$poz = $_POST['poz'];//Извлекаем позицию фотографии
$hide = $_POST['hide'];//Проверяем на скрытность
//*****************************************************************************
// Проверяем переданные данные *
//*****************************************************************************
if($id_gal == "")// Проверяем переданн ключ
{
echo " <html><head>
<meta http-equiv = \"Refresh\" content = \"3; url=index.php?msg_nav=$msg_nav\">
</head></html>\n";
err("Ошибка! Не был переданн ключ галереии<br><font size=2>Через несколько секунд вы будете переадресованы</font>");
}
if($name == "")// Проверяем на проверку передачи описания
{
err("Ошибка! Не введенно описание к фото<br><a href='javascript:history.back()'>Назад</a>");
}
if($poz == "")// Проверяем на передачу ключа позиции
{
err("Ошибка! Не введена позиция фото<br><a href='javascript:history.back()'>Назад</a>");
}
//*****************************************************************************
// проверяем на sql ин *
//*****************************************************************************
/*
if(preg_match("|^[^\']+$|", $name))
{
err("Ошибка!!! Такой запрос не допустим");
}
if(preg_match("|^[^\']+$|", $id_gal))
{
err("Ошибка!!! Такой запрос не допустим");
}
if(preg_match("|^[^\']+$|", $msg_nav))
{
err("Ошибка!!! Такой запрос не допустим");
}
if(preg_match("|^[^\']+$|", $poz))
{
err("Ошибка!!! Такой запрос не допустим");
}
if(preg_match("|^[^\']+$|", $hide))
{
err("Ошибка!!! Такой запрос не допустим");
}
*/
//****************************************************************************************************************
// Работаем с изображением *
//****************************************************************************************************************
//*********************************************************************************************
// Проверяем пользователь будет загружать свое фото *
//*********************************************************************************************
if($_FILES['images']['name'] != "")
{
$format = strrchr($_FILES['images']['name'] , ".");//извлекаем расширение файла
$file_name = date("d_m_Y___G_i_s")."".$format;//записываем число и время + к нему расширение файла
if($_FILES['images']['size'] > $size*1024) //проверяем на размер файла, тоесть
{
err("Ваше фото привышает $size kb<br><a href='javascript:history.back()'>Назад</a>");
}
//***********************************************************************************************
// Проверяем фомат закаченных файлов *
//***********************************************************************************************
$mass = array(".JPG",".jpg",".BMP",".bmp",".PNG",".png",".gif",".GIF");//Разрещение на закачку файлов
if(!in_array($format, $mass))//производим пробег по массиву
{
err("Неправильный формат изображения<br><a href='javascript:history.back()'>Назад</a>");
}
//**************************************************************************************************
// Копируем в папку данных *
//**************************************************************************************************
if(!copy($_FILES['images']['tmp_name'],"../foto/big/".$_FILES['images']['name']))
{
err("Ошибка загрузки файлов на сервер!<br><a href='javascript:history.back()'>Назад</a>");
}
if(!copy($_FILES['images']['tmp_name'],"../foto/small/".$_FILES['images']['name']))
{
err("Ошибка загрузки файлов на сервер!<br><a href='javascript:history.back()'>Назад</a>");
}
unlink($_FILES['images']['tmp_name']);//удаляем файл из временной дириктории
rename("../foto/big/".$_FILES['images']['name'],"../foto/big/".$file_name);//Переименоваем файл в подходящий
rename("../foto/small/".$_FILES['images']['name'],"../foto/small/".$file_name);//Переименоваем файл в подходящий
if(!resizeimg("../foto/small/".$file_name,"../foto/small/".$file_name, 100, 100))
{
err("Ошибка при обработки библиотекой GDlib 2.0<br><a href='javascript:history.back()'>Назад</a>");
}
}
//*****************************************************************************
// Добавляем данные в библиотеку *
//*****************************************************************************
$sql = "INSERT INTO foto VALUES(NULL,
'$name',
'$id_gal',
'$poz',
'$file_name',
NOW(),
'$hide'
)";
$sql = mysql_query($sql);
if($sql)
{
ok('Фото успешно добавлено.<br><a href=dob_gal.php>Добавить еще</a> <a href=index.php>Панель администратора</a>');
}
else
{
err('Возникла ошибка при добавлении фотографии<br><a href="javascript:history.back();">Назад</a>');
}
|
Проблема в том, что если фотография больше 200 kb, скрипт-обработчик долго выполняется на сервере, а потом выдает ошибки как-будто форма не заполненна данными. На домашнем сервере все работает нормально. И хостинг поддерживает закачку файлов до 2mb. Может нужно использовать функцию set_time_limit(0);. НЕ ЗНАЮ ЧТО ДЕЛАТЬ. Меньше чем 200kb все закачивается и работает нормально.
Заранее всем, СПАСИБО!!! | |
|
|
|
|
|
|
|
для: staglu
(22.09.2007 в 12:45)
| | Объёмные файлы лучше прикрплять в виде архива. | |
|
|
|
|
|
|
|
для: staglu
(22.09.2007 в 12:45)
| | Напрашивается такой совет:
Пиши в форме:
action="mailto:ya@ya.ru"
Но как потом разбирать эту почту?
Незнаю, однако проблема ограничения по времени уйдёт | |
|
|
|