Добавлен: 07.11.2023
Просмотров: 205
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1.1.2 Роль веб-сайта в работе медицинской клиники
1.2 Обоснование выбора средств создания веб-сайта
1.3 Обзор систем управления базами данных
2.1.3 Характеристики оборудования
2.3 Средства для разработки и проектирование сайта
2.3.1 Анализ средств для разработки и создания Web-сайта
2.3.2 Фреймворки, используемые при разработке Web-сайтов: сравнительный анализ
2.3.4 Разработка веб-сайта в CMS WordPress
3. Тестирование веб-сайта и руководство пользователя
Заключение
Результатом выпускной квалификационной работы является готовый веб-сайт поликлиники.
Были решены следующие частные задачи:
· ознакомление с современными Интернет - технологиями и их использование в настоящей разработке;
· изучение программного инструментария, применяемого для разработки и создания Web-сайтов программы Wordpress;
· ознакомление со структурой поликлиники;
· определение структуры Web-страниц;
· изучены методы размещения сайтов в Интернете
Полученный в итоге веб-сайт может полностью удовлетворить все требования заказчика.
Список использованной литературы
1. Голомбински К. Добавь воздуха! Основы визуального дизайна для
графики, веб и мультимедиа [Текст] / К. Голомбински, Р. Хаген. — СанктПетербург: Питер, 2013. — 272 с.
2. Городулин В. Основы CSS [Электронный ресурс]. — Режим доступа: http://css.manual.ru/articles/css_basics (дата обращения: 20.11.2017).
3. Демченко Д. Обзор систем управления сайтом (CMS) [Электронный
ресурс]. — Режим доступа: http://www.white-windows.ru/obzor-sistemupravleniya-sajtom-cms/ (дата обращения: 18.01.2018).
4. Дакетт Джон HTML и CSS. Разработка и дизайн веб-сайтов [Текст] /
Джон Дакетт. — Москва: ЭКСМО, 2013. — 480 с.
5. Для тех, кто делает сайты [Электронный ресурс]. — Режим доступа:
http://htmlbook.ru (дата обращения: 12.03.2017).
6. Дунаев В. В. Основы WEB-дизайна [Текст]: самоучитель /
В. В. Дунае. — 2-е издание, перераб. и доп. — Санкт-Петербург: Питер, 2012.
— 480 с.
7. Как создать сайт [Электронный ресурс]. — Режим доступа:
http://myrusakov.ru (дата обращения: 20.12.2017).
8. Квентор И. Адаптивная верстка сайтов [Электронный ресурс]. —
Режим доступа: http://www.websovet.com/adaptive-layout-introduction (дата
обращения: 19.11.2017).
9. Лоусон Б. Изучаем HTML5. Библиотека специалиста [Текст] /
Б. Лоусон, Р. Шарп. — Санкт-Петербург: Питер, 2013. — 286 с.
10. Макфарланд Д. Большая книга CSS [Текст] / Д. Макфарланд. — 3-е
изд. — Санкт-Петербург: Питер, 2014. — 608 с.
11. Маркотт И. Отзывчивый веб-дизайн [Текст] / И. Маркотт. — Книга 1. — пер. Миронов П. — Москва: Манн, Иванов и Фербер, 2012. — 231 с.
12.Чебыкин Р. Разработка и оформление текстового содержания сайтов. — Санкт-Петербург: БХВ-Петербург, 2014. — 528 c.
13.Сарычев А. Идеально! Как создать и переделать свой сайт. Правильный подход и передовые техники разработки [Текст] / А. Сарычев. —
Москва: СилаУма, 2013. — 369 с.
14.Сидерхолм Д. CSS3 для веб-дизайнеров [Текст] / Д. Сидерхолм.
Книга 5. — пер. Кудашев E. — Москва: Манн, Иванов и Фербер. 2013. —
273 с.
Приложение
Компетенции
Приложение А
if (!defined('KB_IN_BYTES')) { define('KB_IN_BYTES', 1024); }
if (!defined('MB_IN_BYTES')) { define('MB_IN_BYTES', 1024 * KB_IN_BYTES); }
if (!defined('GB_IN_BYTES')) { define('GB_IN_BYTES', 1024 * MB_IN_BYTES); }
if (!defined('DUPLICATOR_PHP_MAX_MEMORY')) { define('DUPLICATOR_PHP_MAX_MEMORY', 4096 * MB_IN_BYTES); }
date_default_timezone_set('UTC'); // Some machines don’t have this set so just do it here.
@ignore_user_abort(true);
if (!function_exists('wp_is_ini_value_changeable')) {
/**
* Determines whether a PHP ini value is changeable at runtime.
*
* @staticvar array $ini_all
*
* @link https://secure.php.net/manual/en/function.ini-get-all.php
*
* @param string $setting The name of the ini setting to check.
* @return bool True if the value is changeable at runtime. False otherwise.
*/
function wp_is_ini_value_changeable( $setting ) {
static $ini_all;
if ( ! isset( $ini_all ) ) {
$ini_all = false;
// Sometimes `ini_get_all()` is disabled via the `disable_functions` option for "security purposes".
if ( function_exists( 'ini_get_all' ) ) {
$ini_all = ini_get_all();
}
}
// Bit operator to workaround https://bugs.php.net/bug.php?id=44936 which changes access level to 63 in PHP 5.2.6 - 5.2.17.
if ( isset( $ini_all[ $setting ]['access'] ) && ( INI_ALL === ( $ini_all[ $setting ]['access'] & 7 ) || INI_USER === ( $ini_all[ $setting ]['access'] & 7 ) ) ) {
return true;
}
// If we were unable to retrieve the details, fail gracefully to assume it's changeable.
if ( ! is_array( $ini_all ) ) {
return true;
}
return false;
}
}
@set_time_limit(3600);
if (wp_is_ini_value_changeable('memory_limit'))
@ini_set('memory_limit', DUPLICATOR_PHP_MAX_MEMORY);
if (wp_is_ini_value_changeable('max_input_time'))
@ini_set('max_input_time', '-1');
if (wp_is_ini_value_changeable('pcre.backtrack_limit'))
@ini_set('pcre.backtrack_limit', PHP_INT_MAX);
if (wp_is_ini_value_changeable('default_socket_timeout'))
@ini_set('default_socket_timeout', 3600);
DUPX_Handler::init_error_handler();
/**
* Bootstrap utility to exatract the core installer
*
* Standard: PSR-2
*
* @package SC\DUPX\Bootstrap
* @link http://www.php-fig.org/psr/psr-2/
*
* To force extraction mode:
* installer.php?unzipmode=auto
* installer.php?unzipmode=ziparchive
* installer.php?unzipmode=shellexec
*/
/*** CLASS DEFINITION START ***/
abstract class DUPX_Bootstrap_Zip_Mode
{
const AutoUnzip = 0;
const ZipArchive = 1;
const ShellExec = 2;
}
class DUPX_Bootstrap
{
//@@ Params get dynamically swapped when package is built
const ARCHIVE_FILENAME = '20220407_kokodelapaix_6aadd7dfee5437343644_20220420094218_archive.zip';
const ARCHIVE_SIZE = '56847132';
const INSTALLER_DIR_NAME = 'dup-installer';
const PACKAGE_HASH = '6aadd7d-20094218';
const SECONDARY_PACKAGE_HASH = 'c0f5587-20094218';
const VERSION = '1.4.4';
public $hasZipArchive = false;
public $hasShellExecUnzip = false;
public $mainInstallerURL;
public $installerContentsPath;
public $installerExtractPath;
public $archiveExpectedSize = 0;
public $archiveActualSize = 0;
public $activeRatio = 0;
/**
* Instantiate the Bootstrap Object
*
* @return null
*/
public function __construct()
{
// clean log file
self::log('', true);
//ARCHIVE_SIZE will be blank with a root filter so we can estimate
//the default size of the package around 17.5MB (18088000)
$archiveActualSize = @file_exists(self::ARCHIVE_FILENAME) ? @filesize(self::ARCHIVE_FILENAME) : false;
$archiveActualSize = ($archiveActualSize !== false) ? $archiveActualSize : 0;
$this->hasZipArchive = class_exists('ZipArchive');
$this->hasShellExecUnzip = $this->getUnzipFilePath() != null ? true : false;
$this->installerContentsPath = str_replace("\\", '/', (dirname(__FILE__). '/' .self::INSTALLER_DIR_NAME));
$this->installerExtractPath = str_replace("\\", '/', (dirname(__FILE__)));
$this->archiveExpectedSize = strlen(self::ARCHIVE_SIZE) ? self::ARCHIVE_SIZE : 0 ;
$this->archiveActualSize = $archiveActualSize;
if($this->archiveExpectedSize > 0) {
$this->archiveRatio = (((1.0) * $this->archiveActualSize) / $this->archiveExpectedSize) * 100;
} else {
$this->archiveRatio = 100;
}
$this->overwriteMode = (isset($_GET['mode']) && ($_GET['mode'] == 'overwrite'));
}
/**
* Run the bootstrap process which includes checking for requirements and running
* the extraction process
*
* @return null | string Returns null if the run was successful otherwise an error message
*/
public function run()
{
date_default_timezone_set('UTC'); // Some machines don't have this set so just do it here
self::log('==DUPLICATOR INSTALLER BOOTSTRAP v1.4.4==');
self::log('----------------------------------------------------');
self::log('Installer bootstrap start');
$archive_filepath = $this->getArchiveFilePath();
$archive_filename = self::ARCHIVE_FILENAME;
$error = null;
$is_installer_file_valid = true;
if (preg_match('/_([a-z0-9]{7})[a-z0-9]+_[0-9]{6}([0-9]{8})_archive.(?:zip|daf)$/', $archive_filename, $matches)) {
$expected_package_hash = $matches[1].'-'.$matches[2];
if (self::PACKAGE_HASH != $expected_package_hash) {
$is_installer_file_valid = false;
self::log("[ERROR] Installer and archive mismatch detected.");
}
} else {
self::log("[ERROR] Invalid archive file name.");
$is_installer_file_valid = false;
}
if (false === $is_installer_file_valid) {
$error = "Installer and archive mismatch detected.
Ensure uncorrupted installer and matching archive are present.";
return $error;
}
$extract_installer = true;
$installer_directory = dirname(__FILE__).'/'.self::INSTALLER_DIR_NAME;
$extract_success = false;
$archiveExpectedEasy = $this->readableByteSize($this->archiveExpectedSize);
$archiveActualEasy = $this->readableByteSize($this->archiveActualSize);
//$archive_extension = strtolower(pathinfo($archive_filepath)['extension']);
$archive_extension = strtolower(pathinfo($archive_filepath, PATHINFO_EXTENSION));
$manual_extract_found = (
file_exists($installer_directory."/main.installer.php")
&&
file_exists($installer_directory."/dup-archive__".self::PACKAGE_HASH.".txt")
&&
file_exists($installer_directory."/dup-database__".self::PACKAGE_HASH.".sql")
);
$isZip = ($archive_extension == 'zip');
//MANUAL EXTRACTION NOT FOUND
if (! $manual_extract_found) {
//MISSING ARCHIVE FILE
if (! file_exists($archive_filepath)) {
self::log("[ERROR] Archive file not found!");
$error = ""
. "Archive not found! The required archive file must be present in the 'Extraction Path' below. When the archive file name was created "
. "it was given a secure hashed file name. This file name must be the exact same name as when it was created character for character. "
. "Each archive file has a unique installer associated with it and must be used together. See the list below for more options:
"
. "
- "
- If the archive is not finished downloading please wait for it to complete. "
- Rename the file to it original hash name. See WordPress-Admin ❯ Packages ❯ Details. "
- When downloading, both files both should be from the same package line. "
- Also see: How to fix various errors that show up before step-1 of the installer? "
. "
. "
. "
. "
. "
"
."Extraction Path: {$this->installerExtractPath}/
";
return $error;
}
// Sometimes the self::ARCHIVE_SIZE is ''.
$archive_size = self::ARCHIVE_SIZE;
if (!empty($archive_size) && !self::checkInputVaslidInt($archive_size)) {
$no_of_bits = PHP_INT_SIZE * 8;
$error = 'Current is a '.$no_of_bits.'-bit SO. This archive is too large for '.$no_of_bits.'-bit PHP.'.'
';
self::log('[ERROR] '.$error);
$error .= 'Possibibles solutions:
';
$error .= '- Use the file filters to get your package lower to support this server or try the package on a Linux server.'.'
';
$error .= '- Perform a Manual Extract Install'.'
';
switch ($no_of_bits == 32) {
case 32:
$error .= '- Ask your host to upgrade the server to 64-bit PHP or install on another system has 64-bit PHP'.'
';
break;
case 64:
$error .= '- Ask your host to upgrade the server to 128-bit PHP or install on another system has 128-bit PHP'.'
';
break;
}
if (self::isWindows()) {
$error .= '- Windows DupArchive extractor to extract all files from the archive.'.'
';
}
return $error;
}
//SIZE CHECK ERROR
if (($this->archiveRatio < 90) && ($this->archiveActualSize > 0) && ($this->archiveExpectedSize > 0)) {
self::log("ERROR: The expected archive size should be around [{$archiveExpectedEasy}]. The actual size is currently [{$archiveActualEasy}].");
self::log("ERROR: The archive file may not have fully been downloaded to the server");
$percent = round($this->archiveRatio);
$autochecked = isset($_POST['auto-fresh']) ? "checked='true'" : '';
$error = "Archive file size warning.
The expected archive size should be around [{$archiveExpectedEasy}]. "
. "The actual size is currently [{$archiveActualEasy}]. The archive file may not have fully been downloaded to the server. "
. "Please validate that the file sizes are close to the same size and that the file has been completely downloaded to the destination server. If the archive is still "
. "downloading then refresh this page to get an update on the download size.
";
return $error;
}
}
// OLD COMPATIBILITY MODE
if (isset($_GET['extract-installer']) && !isset($_GET['force-extract-installer'])) {
$_GET['force-extract-installer'] = $_GET['extract-installer'];
}
if ($manual_extract_found) {
// INSTALL DIRECTORY: Check if its setup correctly AND we are not in overwrite mode
if (isset($_GET['force-extract-installer']) && ('1' == $_GET['force-extract-installer'] || 'enable' == $_GET['force-extract-installer'] || 'false' == $_GET['force-extract-installer'])) {
self::log("Manual extract found with force extract installer get parametr");
$extract_installer = true;
} else {
$extract_installer = false;
self::log("Manual extract found so not going to extract dup-installer dir");
}
} else {
$extract_installer = true;
}
if ($extract_installer && file_exists($installer_directory)) {
self::log("EXTRACT dup-installer dir");
$scanned_directory = array_diff(scandir($installer_directory), array('..', '.'));
foreach ($scanned_directory as $object) {
$object_file_path = $installer_directory.'/'.$object;
if (is_file($object_file_path)) {
if (unlink($object_file_path)) {
self::log('Successfully deleted the file '.$object_file_path);
} else {
$error .= '[ERROR] Error deleting the file '.$object_file_path.' Please manually delete it and try again.';
self::log($error);
}
}
}
}
//ATTEMPT EXTRACTION:
//ZipArchive and Shell Exec
if ($extract_installer) {
self::log("Ready to extract the installer");
self::log("Checking permission of destination folder");
$destination = dirname(__FILE__);
if (!is_writable($destination)) {
self::log("destination folder for extraction is not writable");
if (self::chmod($destination, 'u+rwx')) {
self::log("Permission of destination folder changed to u+rwx");
} else {
self::log("[ERROR] Permission of destination folder failed to change to u+rwx");
}
}
if (!is_writable($destination)) {
self::log("WARNING: The {$destination} directory is not writable.");
$error = "NOTICE: The {$destination} directory is not writable on this server please talk to your host or server admin about making ";
$error .= "writable {$destination} directory on this server.
";
return $error;
}
if ($isZip) {
$zip_mode = $this->getZipMode();
if (($zip_mode == DUPX_Bootstrap_Zip_Mode::AutoUnzip) || ($zip_mode == DUPX_Bootstrap_Zip_Mode::ZipArchive) && class_exists('ZipArchive')) {
if ($this->hasZipArchive) {
self::log("ZipArchive exists so using that");
$extract_success = $this->extractInstallerZipArchive($archive_filepath);
if ($extract_success) {
self::log('Successfully extracted with ZipArchive');
} else {
if (0 == $this->installer_files_found) {
$error = "[ERROR] This archive is not properly formatted and does not contain a dup-installer directory. Please make sure you are attempting to install the original archive and not one that has been reconstructed.";
self::log($error);
return $error;
} else {
$error = '[ERROR] Error extracting with ZipArchive. ';
self::log($error);
}
}
} else {
self::log("WARNING: ZipArchive is not enabled.");
$error = "NOTICE: ZipArchive is not enabled on this server please talk to your host or server admin about enabling ";
$error .= "ZipArchive on this server.
";
}
}
if (!$extract_success) {
if (($zip_mode == DUPX_Bootstrap_Zip_Mode::AutoUnzip) || ($zip_mode == DUPX_Bootstrap_Zip_Mode::ShellExec)) {
$unzip_filepath = $this->getUnzipFilePath();
if ($unzip_filepath != null) {
$extract_success = $this->extractInstallerShellexec($archive_filepath);
if ($extract_success) {
self::log('Successfully extracted with Shell Exec');
$error = null;
} else {
$error .= '[ERROR] Error extracting with Shell Exec. Please manually extract archive then choose Advanced > Manual Extract in installer.';
self::log($error);
}
} else {
self::log('WARNING: Shell Exec Zip is not available');
$error .= "NOTICE: Shell Exec is not enabled on this server please talk to your host or server admin about enabling ";
$error .= "Shell Exec on this server or manually extract archive then choose Advanced > Manual Extract in installer.";
}
}
}
// If both ZipArchive and ShellZip are not available, Error message should be combined for both
if (!$extract_success && $zip_mode == DUPX_Bootstrap_Zip_Mode::AutoUnzip) {
$unzip_filepath = $this->getUnzipFilePath();
if (!class_exists('ZipArchive') && empty($unzip_filepath)) {
self::log("WARNING: ZipArchive and Shell Exec are not enabled on this server.");
$error = "NOTICE: ZipArchive and Shell Exec are not enabled on this server please talk to your host or server admin about enabling ";
$error .= "ZipArchive or Shell Exec on this server or manually extract archive then choose Advanced > Manual Extract in installer.";
}
}
} else {
DupArchiveMiniExpander::init("DUPX_Bootstrap::log");
try {
DupArchiveMiniExpander::expandDirectory($archive_filepath, self::INSTALLER_DIR_NAME, dirname(__FILE__));
} catch (Exception $ex) {
self::log("[ERROR] Error expanding installer subdirectory:".$ex->getMessage());
throw $ex;
}
}
$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
$is_nginx = (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
$sapi_type = php_sapi_name();
$php_ini_data = array(
'max_execution_time' => 3600,
'max_input_time' => -1,
'ignore_user_abort' => 'On',
'post_max_size' => '4096M',
'upload_max_filesize' => '4096M',
'memory_limit' => DUPLICATOR_PHP_MAX_MEMORY,
'default_socket_timeout' => 3600,