Дипломник: Сазыкин Е. С. Факультет ивт




НазваниеДипломник: Сазыкин Е. С. Факультет ивт
страница6/11
Дата09.03.2013
Размер0.72 Mb.
ТипДиплом
1   2   3   4   5   6   7   8   9   10   11

2.5 Отправка письма



Теперь опишу работу модуля для отправки формы. Это файл form.php.

По традиции он начинается с защиты от прямого доступа к файлу.

if ( substr(__FILE__, strrpos(__FILE__, "/")) == substr($_SERVER['SCRIPT_NAME'], strrpos($_SERVER['SCRIPT_NAME'], "/")) ) {

header("HTTP/1.0 404 Not Found");

echo "ERROR 404";

exit();

}

Затем проверяется условие, которое говорит о том, что открыта страница с формой.

if (isset($_GET['code']) && isset($_GET['id'])){

Затем идет генерация формы. В данной системе генерация представляет собой заполнение глобального массива и выдача в зарезервированные участки. Таким образом браузер получит html код с характерной для конкретной страницы формой. Например, для страницы «лестницы винтовые» заполнение массива происходит так:

switch ($_REQUEST['id']){

case 1:

$args['FORM']['desc'] = "Размеры лестничного проема";

$args['FORM']['I1']['text'] = "длина, м: ";

$args['FORM']['I2']['text'] = "ширина, м: ";

$args['FORM']['I3']['text'] = "высота от пола до пола, м: ";



$args['FORM']['SELECT']['select_desc'] = "Ступени и деревянные элементы из: ";

$args['FORM']['SELECT']['name'] = "tree";

$args['FORM']['SELECT']['OPTION'][]['text'] = "бук";

$args['FORM']['SELECT']['OPTION'][]['text'] = "дуб";

$args['FORM']['SELECT']['OPTION'][]['text'] = "ясень";

$args['FORM']['SELECT']['OPTION'][]['text'] = "орех";

$args['FORM']['SELECT']['OPTION'][]['text'] = "береза";

$args['FORM']['SELECT']['OPTION'][]['text'] = "другое";

break;

После заполнения, остальные операторы пропустятся ибо они установлены по «else». Управление переходит в низ страницы, где происходит вывод шаблона и подстановка переменных.

echo file_get_contents(dirname(__FILE__)."/form.htm");

после первого if следует

elseif (!isset($_REQUEST['code'])){

Говорит о том, что если мы просматриваем страницу, но которой выводится список фотографий.

Проверяем какая страница открыта:

switch ($pc->Tree['id']){

case 17:

$args['type'] .= 'Лестницы винтовые';

$id = 1;

break;

case 22:

$args['type'] .= 'Лестницы маршевые';

$id = 5;

break;



}

В зависимости от того, какая страница запрошена, считываем содержимое определенной папки. Выбираем из неё все фотографии.

$list = glob("./images/".$id."/*.jpg");

$count = count($list);

Затем следует код для впервые загруженных фотографий, чтобы проставить им приоритет. Приоритет – это префикс к имени файла: число_имя_файла. Фотографии выводятся на странице согласно приоритету. Чем меньше число, тем выше приоритет.

for ($z = 0; $z < $count; $z++){

if (!preg_match('/ ^\d+ _ \w+ /x', basename($list[$z], '.jpg'))){

rename($list[$z], dirname($list[$z]). '/'. $z. '_'. basename($list[$z]));

}

}

Далее идет натуральная:

natsort($list);

$list = array_values($list);

if (isset($_GET['onpage'])) {

В переменной $onpage хранится количество выводимых на странице элементов.

$onpage = $_GET['onpage'];

В переменной $style хранится CSS-код для выделения активной страницы.

$style = '';

switch ($onpage){

case 5: $args['ONPAGE']['act1'] = $style; break;

case 10: $args['ONPAGE']['act2'] = $style; break;

case 50: $args['ONPAGE']['act3'] = $style; break;

default: $args['ONPAGE']['act2'] = $style; break;

}

Если $onpage не задан, то берется значение по умолчанию.

}else {

$onpage = 10;

$args['ONPAGE']['act2'] = '';

}

Затем вывод пэйджера (листалки) и вывод самих элементов. В переменной $pp хранится номер, начинаю с которого будут выведены элементы на странице.

$pp = $page * $onpage;

$count_page – всего страниц.

$count_page = ceil(count($list)/$onpage);

Помещаем в массив $args названия изображений и идентификатор страницы:

for ($i = $pp; ($i < $count) && ($i < ($pp + $onpage)); $i++)

$args['VIEW'][] = array('img' => basename($list[$i], '.jpg'), 'id' => $id);

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

if ($count_page > 1)

for ($k = 0; $k < ($count_page); $k++) {

Если страница активна, т.е. открыта, то не делаем её ссылкой, а просто выделяем цветом.

if ( (!isset($_GET['page']) && $k == 0) || (($k+1) == @$_GET['page']) )

$page_num = array('page'=>$k+1, 'NO_ACTIVE_1'=>array(),'NO_ACTIVE_2'=>array());

Если страница активна:

else

$page_num = array('page'=>$k+1, 'ACTIVE_1'=>array('page'=>$k+1,'onpage'=>$onpage),'ACTIVE_2'=>array());

$page_listArr['NUMBER'][$k] = $page_num;

} $args['PAGE_LIST'] = $page_listArr;

}

Затем рассматривается третий вариант – когда форма отправлена:

elseif ((trim(@$_POST['i4']) != "") && (trim($_POST['i5']) != "") && (trim($_POST['i7']) != "")){

Идет сборка необходимых переменных и проверка на «прикреплен ли файл»:

if (!empty($_FILES['mail_file']['tmp_name'])){

Если файл прикреплен, то считываем его временное имя, проверяем, изображение ли это.

$info = @getimagesize($_FILES['mail_file']['tmp_name']);

if (preg_match('{image/(.*)}is', $info['mime'], $mas)){

$path = $_FILES['mail_file']['name'];

Копируем файл на сервер:

if (copy($_FILES['mail_file']['tmp_name'], $path))

$picture = $path;

}else{

Если передан не файл, делаем переадресацию на страницу формы и выдаем сообщение, что письмо не отправлено.

header("Location: http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}?sendmsg=0");

exit();

}

}

И отправка письма:

if(empty($picture))

echo (mail($mail_to, $thm, $msg))? "Сообщение отправлено" : "Сообщение отправить не удалось. Повторите попытку";

else{

if (send_mail($mail_to, $thm, $msg, $picture) == true)

header("Location: http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}?sendmsg=1");

Если письмо с вложением отправить не удалось, делаем переадресацию на страницу формы и выдаем сообщение, что письмо не отправлено:

else

header("Location: http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}?sendmsg=0");

exit();

}

Функция для отправки письма с вложением. Принимает 4 параметра: кому отправить, тема письма, тело письма, путь к файлу.

function send_mail($mail_to, $thema, $html, $path){

if ($path){

$fp = fopen($path,"rb");

if (!$fp){

print "Cannot open file";

exit();

}

$file = fread($fp, filesize($path));

fclose($fp);

}

В этой переменной надо сформировать имя файла (без всякого пути)

$name = "file.jpg";

Ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём:

$EOL = "\r\n";

Любая строка, которой не будет ниже в потоке данных.

$boundary = "--".md5(uniqid(time()));

Установка загаловков письма:

$headers = "MIME-Version: 1.0;$EOL";

$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";

$headers .= "From: address@server.com";

$multipart = "--$boundary$EOL";

$multipart .= "Content-Type: text/html; charset=UTF-8$EOL";

$multipart .= "Content-Transfer-Encoding: base64$EOL";

Раздел между заголовками и телом html-части:

$multipart .= $EOL;

$multipart .= chunk_split(base64_encode($html));



$multipart .= "$EOL--$boundary$EOL";

$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";

$multipart .= "Content-Transfer-Encoding: base64$EOL";

$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";

Раздел между заголовками и телом прикрепленного файла

$multipart .= $EOL;

$multipart .= chunk_split(base64_encode($file));

$multipart .= "$EOL--$boundary--$EOL";

Отправка

if(!mail($mail_to, $thema, $multipart, $headers))

return false;

else

return true;

}
1   2   3   4   5   6   7   8   9   10   11

Похожие:

Дипломник: Сазыкин Е. С. Факультет ивт iconГосударственное образовательное учреждение высшего профессионального образования
Факультет русской филологии и журналистики. Факультет истории и юриспруденции. Факультет татарской и сопоставительной филологии....
Дипломник: Сазыкин Е. С. Факультет ивт iconУчебное пособие по английскому языку для студентов специальности ивт очной формы обучения Березники 2003
Учебное пособие по английскому языку для студентов специальностей ивт очной формы обучения / Сост. Е. Б. Кучина, Г. Р чайникова;...
Дипломник: Сазыкин Е. С. Факультет ивт iconРасписание занятий для 5-го курса (магистратура) ивт

Дипломник: Сазыкин Е. С. Факультет ивт iconПроблемы формирования бюджета Ханты-Мансийского Автономного Округа
Дипломник: Долгушин Сергей Юрьевич Руководитель проекта: Полномочный представитель Президента РФ в Ханты-Мансийском Автономном Округе...
Дипломник: Сазыкин Е. С. Факультет ивт iconРабочая программа обсуждена на заседании кафедры ивт
Изучение принципов проектирования пользовательского интерфейса прикладных программ
Дипломник: Сазыкин Е. С. Факультет ивт iconКонтрольная работа за 1 полугодие по ивт. 11 класс
Цель: Контроль зун по организации обработки больших объемов информации; создании базы данных в ms access
Дипломник: Сазыкин Е. С. Факультет ивт iconЭкономический факультет финансовый факультет юридический факультет
Программа вступительного испытания по обществознанию для поступления в Нижегородский государственный университет им. Н. И. Лобачевского...
Дипломник: Сазыкин Е. С. Факультет ивт iconИсследование физико-химических эффектов
Предложена феноменологическая модель эффекта Шварца-Хоры в тонких диэлектрических пленках, позволяющая дать объяснение основных характеристик...
Дипломник: Сазыкин Е. С. Факультет ивт iconКонспект к открытому интегрированному уроку биологии информатики
«Динамика биологических популяций. Математическое моделирование. Биологические модели развития популяций». (11 класс). Учителя: Кузнецов...
Дипломник: Сазыкин Е. С. Факультет ивт iconНоу впо «Международный институт рынка» Факультет лингвистики Научно-практическая конференция учащихся
Члены жюри: ст преподаватель Царфина А. А., ассистент Пилосян К. К., Петрова И. (3 курс, факультет лингвистики), Грешнова Д. (3 курс,...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница