Выпускная квалификационная работа (1218777), страница 7
Текст из файла (страница 7)
Метод принимает название таблицы и массив данных, которые необходимо занести в таблицу.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');}41else {$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*newDate();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,42"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);43$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.""a=" 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.Cron (Command Run ON) – это инструмент для автоматического выполнения заданий на сервере, повторяющихся с заданной периодичностью.
Под заданием планировщика (cron) понимается полный путь до программы, котораядолжна выполняться автоматически с заданной периодичностью, и, если необходимо, набор аргументов. Модуль Планировщик (cron) предоставляет возможности по созданию, изменению, удалению и запуску заданий, а такженастройки параметров, общих для всех заданий планировщика [31].Для создания задания в планировщике необходимо перейти в панельуправления хостингом: инструменты – планировщик cron. В появившимсяокне на рисунке 11 происходит выбор периода время, через которое планировщик будет выполнять код программы.44Рисунок 11 – Планировщик СronВ поле ввода указывается путь к программному коду, который необходимовыполнять с определенной периодичностью.Операции необходимые к выполнению в планировщике Cron:– реализовать метод высвобождения почтового ящика, устанавливая статус занятости – 0;public function release($where) {$data = array ("status" => "0","conversion_status" => "0");return $this->update($data, 'email', $where);}– производить проверку превышения временного лимита привязки почтового ящика;public function remove_user () {$time = date("Y-m-d H:i:s", strtotime("-1 hours"));$where = "timestamp < '$time'";$result = $this->select ('user', $where);$n = count ($result);for ($i=0; $i<$n; $i++) {$row = $result[$i];$row = $row['mail_id'];$row = "id_mail = $row";$this->release ($row);}45$this->remove ('user', $where);return true;}– проверять на событие-конверсию почтовые ящики в базе данных.Данная проверка происходит на изменения количества почтовых сообщений в ящиках, привязанных за пользователями, помощью команд протоколаPOP3.
В случае совершения конверсии, уникальный идентификатор привязанный за пользователем отсылается в Google Analytics.$user_conversion = $cron->user_conversion();$n = count($user_conversion);for ($i=0; $i<$n; $i++) {$gacode = "ga('create', 'UA-78562065-1', '%s');";echo sprintf($gacode, $user_conversion[$i]);}$cron->remove_user();$cron->release_mail();Загрузка всех файлов программного функционала происходит по протоколу FTP.FTP (File Transfer Protocol) – файловый протокол.
Один из самых старыхсетевых протоколов, используемый для передачи файлов в компьютерных сетях. С помощью этого протокола можно подключаться к серверам FTP, смотреть содержание файлов и загружать их с сервера или на сервер.Основной особенностью FTP-протокола является то, что передаваемые понему данные не шифруются - логин и пароль передаются открыто.
Во избежание потерь, разработано два режима передачи информации: текстовый, для передачи HTML-документов, PHP-скриптов и двоичный, для передачи графической информации. Для загрузки данных web-ресурса на сервер или для их получения используются специальные программы. FTP-клиент автоматическиопределяет необходимый режим передачи данных.Доступ к FTP серверам осуществляется с помощью файлового менеджераFileZilla, который имеет настраиваемый интерфейс и дозагрузку файлов приобрыве интернет-соединения.46Режимы соединенияСуществует также два режима соединения с FTP-сервером:– активный, когда клиент подсоединяется по порту 21 и подаёт команды,после чего сервер соединяется с клиентом и передаёт ему данные по этомуканалу;– пассивный, когда клиент подсоединяется к серверу по порту 21 и послепередачи команд, сервер открывает дополнительный порт, через который ипроисходит обмен данными.3.2 Результат разработки программного функционалаВ результате разработки, построен программный функционал для отслеживания процесса совершения почтовых конверсий, позволяющий собиратьинтересующую предприятие информацию и отправлять ее в Google Analyticsдля обработки и формирования статистики.
Автоматизация процесса отслеживания осуществляется за счет привязки определенного почтового ящика за одним посетителем сайта и отправки сигнала в случае взаимодействия клиента спочтой.Необходимость предприятия в данном программном функционале заключается в том, что он позволяет отслеживать и отправлять обработку информацию о целевых клиентах.Привлечение трафика – важная задача, но недостаточно просто получатьпосетителей, нужно, чтоб выполнялась выполнялось целевое действие, в данном случае – отправка почтового письма. Позволяет оценивать качество трафика и сравнивать эффективность разных источников.Сравнение источников получения трафика происходит при помощи отчетов и достигнутых целей. Например, можно сравнить источники по количеству пользователей, которые по нему перешли.















