Главная » Просмотр файлов » ВКР-Автоматизация почтовых конверсий для веб-аналитики(Филипченко)

ВКР-Автоматизация почтовых конверсий для веб-аналитики(Филипченко) (1218776), страница 5

Файл №1218776 ВКР-Автоматизация почтовых конверсий для веб-аналитики(Филипченко) (Автоматизация отслеживания почтовых конверсий для веб-аналитики) 5 страницаВКР-Автоматизация почтовых конверсий для веб-аналитики(Филипченко) (1218776) страница 52020-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

UML-диаграммы позволяет разработчикам программного обеспечение достигнуть соглашения для представления общих понятий (таких как класс, компонент и поведение) и больше сконцентрироваться на проектировании и архитектуре.

Преимущества UML диаграмм:

– UML объектно-ориентирован, в результате чего методы описания результатов анализа и проектирования семантически близки к методам программирования на современных объектно-ориентированных языках;

– UML позволяет описать систему практически со всех возможных точек зрения и разные аспекты поведения системы;

– UML-диаграммы просты для чтения после ознакомления с его синтаксисом;

– UML позволяет вводить собственные текстовые и графические стереотипы, что способствует его расширению охватываемых сфер представления;

– UML получил широкое распространение и динамично развивается [24].

Для подробного отражения работы системы функционала, необходимо разбить существующее представление о задаче на сущности, знаниями об представляемых объектов и соответственно составить UML – диаграмму классов.

Диаграммой классов называется статическая структурная диаграмма, описывающая структуру системы, демонстрирующая классы, их атрибуты, методы, наследование между классами [10].

Существуют различные точки зрения на построения диаграмм классов в зависимости от их применения.

В данной работе на этапе проектирования функционала необходимым шагом будет построение диаграммы классов с точки зрения реализации. Представим диаграмму содержащую используемые непосредственно в программном коде классы, при использовании объектно-ориентированного языка программирования PHP.

Из требований, накладываемых на разрабатываемый функционал, можно выделить следующие сущности:

– почтовые ящики (класс User);

– клиенты сайта (класс Email);

Также для взаимодействия представленных сущностей с базой данных необходимо проработать класс database.

Основываясь на работу функционала представленный на блок-схеме изображенном на рисунке 6 представим UML-диаграмму классов на рисунке 10.

Рисунок 10 – UML-диаграмма классов

Необходимо чтобы работа выполнялась в следующих этапах:

– клиенту, вошедшему на веб-сайт, выделяется индивидуальный почтовый ящик, который он может видеть, как контактный почтовый адрес предприятия. Идентификатор данного почтового адреса заносится в таблицу User;

– из небольшого фрагмента данных извлекается уникальный номер (ClientID) и заносится в таблицу User базы данных;

– осуществить создание ящика или выделение свободного ящик.

– необходимо с определенной периодичностью проводить актуализацию данных, а именно проверку на лимит по времени привязки почтового ящика и поступления сигнала о совершении отправки письма – конверсии;

– в случае совершения целевого действия происходил отправка уникального идентификатора клиента в Google Analytics;

– в случае превышения лимитного времени, происходила отвязка почтового адреса и удаления информации о клиенте;

– происходила переадресация письма на почтовый адрес менеджера предприятия.

3 Автоматизация процесса работы функционала отслеживания почтовых конверсий

После анализа средств реализации был сделан вывод, что будет создаваться программный функционал для отслеживания почтовых конверсий. В качестве средств реализации проекта будут использоваться возможности объектно-ориентированного языка программирования PHP в связке с СУБД MySQL, в качестве панели управления веб-хостингом будет использоваться ISPmanager и его инструментарий.

3.1 Реализация классов на PHP

При создании класса необходимо четко понять задачу, которую мы хотим представить. Часто построение класса является моделированием той сущности, которую необходимо перенести в код. Объект является отражением сущности, которая описана в виде класса. При моделировании класса стоит выявить те необходимые части сущности, над которыми будут производиться необходимые действия, с помощью методов. То есть необходимые части сущности являются полями класса, они как раз отражают данные, которые составляют общий тип данных. Этим тип объекта напоминает данные типа массив.

Методы выполняют разнообразные действия над данными. Методы следует проектировать так, чтобы они работали только с теми данными, которые определены в классе. Не рекомендуется определять методы, которые как-либо влияют на внешние данные. Так называемая стратегия слабого связывания - чем меньше связей между классами и внешними данными - тем проще извлечь класс из системы и повторно использовать его вновь [32].

Для работы данного программного функционала необходимо реализовать работу четырех классов: user, email, database, cron. Разберем данные классы по отдельности.

Класс (database) предназначен для работы с базой данных: соединения с базой данных, добавления записей в таблицы, произведения выборок из таблицы, подсчета строк результатов, производить изменения в таблице, удаления записей.

Реализация методов класса database:

Метод соединяет с сервером MySQL отправляя название сервера, имя пользователя базы данных, пароль.

public function connect() {

$connection = mysql_connect($this->db_host,

$this->db_user, $this->db_pass);

mysql_select_db($this->db_name);

return true;

}

Метод осуществляет выборку данных из таблицы. Метод принимает название таблицы и условия выборки.

protected function select($table, $where) {

$sql = "SELECT * FROM $table WHERE $where";

$result = mysql_query($sql);

return $this->processRowSet($result);

}

Результирующая информация выводится через метод результатом, которого будет ассоциативный массив данных.

protected function processRowSet($rowSet) {

$resultArray = array();

while($row = mysql_fetch_assoc($rowSet)) {

array_push($resultArray, $row);

}

return $resultArray;

}

Метод осуществляет обновления данных в таблице. Метод принимает название таблицы, данные которые необходимо занести в таблицу, и условие, при котором данное действие выполняется.

protected function update($data, $table, $where) {

$set = "";

foreach ($data as $column => $value) {

$set .= ($set == "") ? "" : ", ";

$set .= "$column = $value";

}

$sql = "UPDATE $table SET $set WHERE $where";

mysql_query($sql) or die(mysql_error());

return true;

}

Метод осуществляет добавление новой записи в таблицы. Метод принимает название таблицы и массив данных, которые необходимо занести в таблицу.

protected function insert($data, $table) {

$columns = "";

$values = "";

foreach ($data as $column => $value) {

$columns .= ($columns == "") ? "" : ", ";

$columns .= $column;

$values .= ($values == "") ? "" : ", ";

$values .= $value;

}

$sql = "insert into $table ($columns) value ($values)";

mysql_query($sql) or die(mysql_error());

return mysql_insert_id();

}

Метод осуществляющий удаление данных из таблицы и принимает название таблицы и условие удаления.

protected function remove($table, $where) {

$sql = "DELETE FROM $table WHERE $where";

mysql_query($sql) or die(mysql_error());

return true;

}

Данный класс является родительским классом для всех остальных классов. Методы имеют инкапсуляцию: protected. Взаимодействие с методами осуществляется только в классах наследниках.

Реализация методов класса user:

Метод осуществляет проверку на уникальность пользователя в таблице, в случае положительного результата, заносит в таблицу уникальный идентификатор пользователя, извлеченного из временных файлов на компьютере клиента.

function uniqueness($userId) {

$data = "userId = '$userId'";

$row = $this->num_rows('user', $data);

if ($row == 0) {

$data = array ("userId" => "'$userId'");

return $this->insert($data, 'user');}

else {

$result = $this->select('user', $data);

$result = $result[0];

$row = $result['id_user'];

return $row;

}

}

Присваивание уникального идентификатора производит отслеживающий код – набор программных команд на языке JavaScript.

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];

a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})

(window,document,'script','//www.google-analytics.com/analytics.js','ga');

Метод осуществляет проверку привязки почтового ящика к пользователю.

function check($id_user) {

$data = "id_user = '$id_user'";

$result = $this->select('user', $data);

$result = $result[0];

$row = $result['mail_id'];

if ($row == 0) {

return false;

}

else {

return $row;

}

}

Метод осуществляет привязку почтового ящика к пользователю.

public function assignment($id_user, $num_mail) {

$data = array ("mail_id" => "$num_mail");

$where = "id_user = $id_user";

$this->update($data, 'user', $where);

return true;

}

Метод осуществляет извлечение уникального идентификатора из временных файлов.

public function gaParseCookie() {

if (isset($_COOKIE['_ga'])) {

list($version,$domainDepth, $cid1, $cid2) = split("[\.]", $_COOKIE["_ga"],4);

$contents = array("version" => $version,

"domainDepth" => $domainDepth,

"cid" => $cid1.".".$cid2);

$cid = $contents['cid'];

}

return $cid;

return $this->gaGenUUID();

}

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

private function gaGenUUID() {

$cid = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',

mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),

mt_rand( 0, 0xffff ),

mt_rand( 0, 0x0fff ) | 0x4000,

mt_rand( 0, 0x3fff ) | 0x8000,

mt_rand( 0, 0xffff ),mt_rand( 0, 0xffff ),mt_rand( 0, 0xffff ));

return $cid;

}

Реализация методов класса email:

Метод осуществляющий проверку наличия свободных ящиков в базе данных:

public function availability_free() {

$where = "status = 0";

if ($this->num_rows('email', $where) != 0) {

$result = $this->select('email', $where);

$result = $result[0];

$row = $result['id_mail'];

$where = "id_mail = $row";

$data = array ("status" => "1");

$this->update($data, 'email', $where);

return $row;

}

else {

return $this->create_mail();

}

}

В случае отсутствия свободных ящиков создает новый и сохраняет в базу данных. Через функцию file_get_contents отправка запроса на веб-хостинг на создание почтового ящика.

private function create_mail() {

$name = 'user';

$sql = "SELECT * FROM email";

$result = mysql_query($sql);

$num_rows = mysql_num_rows($result) + 1;

$name .= $num_rows;

file_get_contents("https://109.120.169.172:1500/manager?authinfo=".$this->db_user.":".$this->db_pass."&out=xml

&func=email.edit&elid=" "&sok=yes&name=".$name."&domain=".$this->domain."&passwd=".$this->passwd."&confirm=".$this->passwd."&forward=".$this->forward."&quota=" 0);

$data = array ("name_mail" => "'$name@$this->domain'",

"status" => "1");

$this->insert($data, 'email');

return mysql_insert_id();

}

Метод возвращающий название привязанного к пользователю почтового ящика.

public function return_name_mail($num_mail) {

$where = "id_mail = $num_mail";

$result = $this->select('email', $where);

$result = $result[0];

$email = $result['name_mail'];

return $email;

}

Разберем подробно инструмент автоматического выполнения заданий на сервере cron.

Характеристики

Тип файла
Документ
Размер
773,75 Kb
Высшее учебное заведение

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7053
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее