1. Насейкина, Л.Ф. Основы Microsoft FrontPage.:учебно-методическое пособие. - Оренбург: ИПК ГОУ ОГУ, 2006. – 145 с.
2. Насейкина, Л.Ф. Разработка Web-приложений средствами языка HTML.: учебное пособие. – Оренбург: ИПК ГОУ ОГУ, 2006. – 180 с.
3. Насейкина, Л.Ф. Программирование динамических Web-сайтов средствами каскадных таблиц стилей (CSS).: учебное пособие. – Оренбург: ИПК ГОУ ОГУ, 2006. – 155 с.
4. Насейкина, Л.Ф. Сетевые информационные технологии.: Учебное пособие. - Оренбург: ИПК ГОУ ОГУ, 2005. - 167 с.
5. Основы Web-технологий / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин; под редакцией П.Б. Храмцова.– М.: ИНТУИТ.РУ “Интернет-Университет Информационных Технологий”, 2003. – 512 с. – ISBN 5-9556-0001
6. Гончаров, А. Самоучитель HTML. / А. Гончаров. - CПб.: Питер, 2001. - 240 с. - ISBN 5-272-00072-2.
7. Гультяев, А. К. Dreamweaver 4 - инструмент создания интерактивных Web – страниц.: практическое пособие / А. К. Гультяев. - CПб.: Корона принт, 2001. - 224 с. - ISBN 5-7931-0153-5.
8. Матросов, А.В. HTML 4.0. Новый уровень создания HTML – документов.: наиболее полное руководство в подлиннике / А.В. Матросова, А.О. Сергеев, М.П. Чаунин. - СПб.: БХВ-Петербург, 2001. - 672 с.
|
|
9. Штайнер, Г. HTML / XML / CSS.: Справочник / Г. Штайнер. - М.: Лаборатория Базовых Знаний, 2001. - 512 с. - ISBN 5-93208-091-4.
10. Шафран, Э. Создание Web-страниц / Э. Шафран. - CПб.: Питер, 2000. - 320 с. - ISBN 5-314-00072-5.
ПРИЛОЖЕНИЕ А
Код программы
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require(dirname(__FILE__). '/wp-blog-header.php');
* Этот файл содержит следующие параметры:
*
* * Настройки MySQL
* * Секретные ключи
* * Префикс таблиц базы данных
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/
// ** Параметры MySQL: Эту информацию можно получить у вашего хостинг-провайдера ** //
/** Имя базы данных для WordPress */
define('DB_NAME', 'shop-thec');
/** Имя пользователя MySQL */
define('DB_USER', 'root');
/** Пароль к базе данных MySQL */
define('DB_PASSWORD', '');
/** Имя сервера MySQL */
define('DB_HOST', 'localhost');
/** Кодировка базы данных для создания таблиц. */
define('DB_CHARSET', 'utf8mb4');
/** Схема сопоставления. Не меняйте, если не уверены. */
define('DB_COLLATE', '');
/**#@+
* Уникальные ключи и соли для аутентификации.
*
* Смените значение каждой константы на уникальную фразу.
* Можно сгенерировать их с помощью {@link https://api.wordpress.org/secret-key/1.1/salt/ сервиса ключей на WordPress.org}
* Можно изменить их, чтобы сделать существующие файлы cookies недействительными. Пользователям потребуется авторизоваться снова.
*
* @since 2.6.0
*/
*
* Измените это значение на true, чтобы включить отображение уведомлений при разработке.
* Разработчикам плагинов и тем настоятельно рекомендуется использовать WP_DEBUG
* в своём рабочем окружении.
*
* Информацию о других отладочных константах можно найти в Кодексе.
|
|
*
* @link https://codex.wordpress.org/Debugging_in_ */
define('WP_DEBUG', false);
/* Это всё, дальше не редактируем. Успехов! */
/** Абсолютный путь к директории. */
if (!defined('ABSPATH'))
define('ABSPATH', dirname(__FILE__). '/');
/** Инициализирует переменны и подключает файлы. */
require_once(ABSPATH. 'wp-settings.php');
// cron.php
<?php
/**
* WordPress Cron Implementation for hosts, which do not offer CRON or for which
* the user has not set up a CRON job pointing to this file.
*
* The HTTP request to this file will not slow down the visitor who happens to
* visit when the cron job is needed to run.
*
* @package WordPress
*/
ignore_user_abort(true);
if (!empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON'))
die();
/**
* Tell WordPress we are doing the CRON task.
*
* @var bool
*/
define('DOING_CRON', true);
if (!defined('ABSPATH')) {
/** Set up WordPress environment */
require_once(dirname(__FILE__). '/wp-load.php');
}
/**
* Retrieves the cron lock.
*
* Returns the uncached `doing_cron` transient.
*
* @ignore
* @since 3.3.0
*
* @return string|false Value of the `doing_cron` transient, 0|false otherwise.
*/
function _get_cron_lock() {
global $wpdb;
$value = 0;
if (wp_using_ext_object_cache()) {
/*
* Skip local cache and force re-fetch of doing_cron transient
* in case another process updated the cache.
*/
$value = wp_cache_get('doing_cron', 'transient', true);
} else {
$row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron'));
if (is_object($row))
$value = $row->option_value;
}
return $value;
}
if (false === $crons = _get_cron_array())
die();
$keys = array_keys($crons);
$gmt_time = microtime(true);
if (isset($keys[0]) && $keys[0] > $gmt_time)
die();
// The cron lock: a unix timestamp from when the cron was spawned.
$doing_cron_transient = get_transient('doing_cron');
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
if (empty($doing_wp_cron)) {
if (empty($_GET[ 'doing_wp_cron' ])) {
// Called from external script/job. Try setting a lock.
if ($doing_cron_transient && ($doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time))
return;
$doing_cron_transient = $doing_wp_cron = sprintf('%.22F', microtime(true));
set_transient('doing_cron', $doing_wp_cron);
} else {
$doing_wp_cron = $_GET[ 'doing_wp_cron' ];
}
}
/*
* The cron lock (a unix timestamp set when the cron was spawned),
* must match $doing_wp_cron (the "key").
*/
if ($doing_cron_transient!= $doing_wp_cron)
return;
foreach ($crons as $timestamp => $cronhooks) {
if ($timestamp > $gmt_time)
break;
foreach ($cronhooks as $hook => $keys) {
foreach ($keys as $k => $v) {
$schedule = $v['schedule'];
if ($schedule!= false) {
$new_args = array($timestamp, $schedule, $hook, $v['args']);
call_user_func_array('wp_reschedule_event', $new_args);
}
wp_unschedule_event($timestamp, $hook, $v['args']);
/**
* Fires scheduled events.
*
* @ignore
* @since 2.1.0
*
* @param string $hook Name of the hook that was scheduled to be fired.
* @param array $args The arguments to be passed to the hook.
*/
do_action_ref_array($hook, $v['args']);
// If the hook ran too long and another cron process stole the lock, quit.
|
|
if (_get_cron_lock()!= $doing_wp_cron)
return;
}
}
}
if (_get_cron_lock() == $doing_wp_cron)
delete_transient('doing_cron');
die();
<?php
/**
* WordPress User Page
*
* Handles authentication, registering, resetting passwords, forgot password,
* and other user handling.
*
* @package WordPress
*/
/** Make sure that the WordPress bootstrap has run before continuing. */
require(dirname(__FILE__). '/wp-load.php');
// Redirect to https login if forced to use SSL
if (force_ssl_admin() &&! is_ssl()) {
if (0 === strpos($_SERVER['REQUEST_URI'], 'http')) {
wp_redirect(set_url_scheme($_SERVER['REQUEST_URI'], 'https'));
exit();
} else {
wp_redirect('https://'. $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']);
exit();
}
}
/**
* Output the login page header.
*
* @param string $title Optional. WordPress login Page title to display in the `<title>` element.
* Default 'Log In'.
* @param string $message Optional. Message to display in header. Default empty.
* @param WP_Error $wp_error Optional. The error to pass. Default empty.
*/
function login_header($title = 'Log In', $message = '', $wp_error = '') {
global $error, $interim_login, $action;
// Don't index any of these forms
add_action('login_head', 'wp_no_robots');
add_action('login_head', 'wp_login_viewport_meta');
if (empty($wp_error))
$wp_error = new WP_Error();
// Shake it!
$shake_error_codes = array('empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password');
/**
* Filters the error codes array for shaking the login form.
*
* @since 3.0.0
*
* @param array $shake_error_codes Error codes that shake the login form.
*/
$shake_error_codes = apply_filters('shake_error_codes', $shake_error_codes);
if ($shake_error_codes && $wp_error->get_error_code() && in_array($wp_error->get_error_code(), $shake_error_codes))
add_action('login_head', 'wp_shake_js', 12);
$separator = is_rtl()? ' › ': ' ‹ ';
?><!DOCTYPE html>
<!--[if IE 8]>
<html xmlns="http://www.w3.org/1999/xhtml" class="ie8" <?php language_attributes();?>>
<![endif]-->
|
|
<!--[if!(IE 8) ]><!-->
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes();?>>
<!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type');?>; charset=<?php bloginfo('charset');?>" />
<title><?php echo get_bloginfo('name', 'display'). $separator. $title;?></title>
<?php
wp_enqueue_style('login');
/*
* Remove all stored post data on logging out.
* This could be added by add_action('login_head'...) like wp_shake_js(),
* but maybe better if it's not removable by plugins
*/
if ('loggedout' == $wp_error->get_error_code()) {
?>
<script>if("sessionStorage" in window){try{for(var key in sessionStorage){if(key.indexOf("wp-autosave-")!=-1){sessionStorage.removeItem(key)}}}catch(e){}};</script>
<?php
}
/**
* Enqueue scripts and styles for the login page.
*
* @since 3.1.0
*/
do_action('login_enqueue_scripts');
/**
* Fires in the login page header after scripts are enqueued.
*
* @since 2.1.0
*/
do_action('login_head');
if (is_multisite()) {
$login_header_url = network_home_url();
$login_header_title = get_network()->site_name;
} else {
$login_header_url = __('https://wordpress.org/');
$login_header_title = __('Powered by WordPress');
}
/**
* Filters link URL of the header logo above login form.
*
* @since 2.1.0
*
* @param string $login_header_url Login header logo URL.
*/
$login_header_url = apply_filters('login_headerurl', $login_header_url);
/**
* Filters the title attribute of the header logo above login form.
*
* @since 2.1.0
*
* @param string $login_header_title Login header logo title attribute.
*/
$login_header_title = apply_filters('login_headertitle', $login_header_title);
$classes = array('login-action-'. $action, 'wp-core-ui');
if (is_rtl())
$classes[] = 'rtl';
if ($interim_login) {
$classes[] = 'interim-login';
?>
<style type="text/css">html{background-color: transparent;}</style>
<?php
if ('success' === $interim_login)
$classes[] = 'interim-login-success';
}
$classes[] =' locale-'. sanitize_html_class(strtolower(str_replace('_', '-', get_locale())));
/**
* Filters the login page body classes.
*
* @since 3.5.0
*
* @param array $classes An array of body classes.
* @param string $action The action that brought the visitor to the login page.
*/
$classes = apply_filters('login_body_class', $classes, $action);
?>
</head>
<body class="login <?php echo esc_attr(implode(' ', $classes));?>">
<?php
/**
* Fires in the login page header after the body tag is opened.
*
* @since 4.6.0
*/
do_action('login_header');
?>
<div id="login">
<h1><a href="<?php echo esc_url($login_header_url);?>" title="<?php echo esc_attr($login_header_title);?>" tabindex="-1"><?php bloginfo('name');?></a></h1>
<?php
unset($login_header_url, $login_header_title);
/**
* Filters the message to display above the login form.
*
* @since 2.1.0
*
* @param string $message Login message text.
*/
$message = apply_filters('login_message', $message);
if (!empty($message))
echo $message. "\n";
// In case a plugin uses $error rather than the $wp_errors object
if (!empty($error)) {
$wp_error->add('error', $error);
unset($error);
}
if ($wp_error->get_error_code()) {
$errors = '';
$messages = '';
foreach ($wp_error->get_error_codes() as $code) {
$severity = $wp_error->get_error_data($code);
foreach ($wp_error->get_error_messages($code) as $error_message) {
if ('message' == $severity)
$messages.= ' '. $error_message. "<br />\n";
else
$errors.= ' '. $error_message. "<br />\n";
}
}
if (! empty($errors)) {
/**
* Filters the error messages displayed above the login form.
*
* @since 2.1.0
*
* @param string $errors Login error message.
*/
echo '<div id="login_error">'. apply_filters('login_errors', $errors). "</div>\n";
}
if (! empty($messages)) {
/**
* Filters instructional messages displayed above the login form.
*
* @since 2.5.0
*
* @param string $messages Login messages.
*/
echo '<p class="message">'. apply_filters('login_messages', $messages). "</p>\n";
}
}
} // End of login_header()
/**
* Outputs the footer for the login page.
*
* @param string $input_id Which input to auto-focus
*/
function login_footer($input_id = '') {
global $interim_login;
// Don't allow interim logins to navigate away from the page.
if (! $interim_login):?>
<p id="backtoblog"><a href="<?php echo esc_url(home_url('/'));?>"><?php
/* translators: %s: site title */
printf(_x('← Back to %s', 'site'), get_bloginfo('title', 'display'));
?></a></p>
<?php endif;?>
</div>
<?php if (!empty($input_id)):?>
<script type="text/javascript">
try{document.getElementById('<?php echo $input_id;?>').focus();}catch(e){}
if(typeof wpOnload=='function')wpOnload();
</script>
<?php endif;?>
<?php
/**
* Fires in the login page footer.
*
* @since 3.1.0
*/
do_action('login_footer');?>
<div class="clear"></div>
</body>
</html>
<?php
}
/**
* @since 3.0.0
*/
function wp_shake_js() {
?>
<script type="text/javascript">
addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
function s(id,pos){g(id).left=pos+'px';}
function g(id){return document.getElementById(id).style;}
function shake(id,a,d){c=a.shift();s(id,c);if(a.length>0){setTimeout(function(){shake(id,a,d);},d);}else{try{g(id).position='static';wp_attempt_focus();}catch(e){}}}
addLoadEvent(function(){ var p=new Array(15,30,15,0,-15,-30,-15,0);p=p.concat(p.concat(p));var i=document.forms[0].id;g(i).position='relative';shake(i,p,20);});
</script>
<?php
}
/**
* @since 3.7.0
*/
function wp_login_viewport_meta() {
?>
<meta name="viewport" content="/>
<?php
}
/**
* Handles sending password retrieval email to user.
*
* @return bool|WP_Error True: when finish. WP_Error on error
*/
function retrieve_password() {
$errors = new WP_Error();
if (empty($_POST['user_login'])) {
$errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or email address.'));
} elseif (strpos($_POST['user_login'], '@')) {
$user_data = get_user_by('email', trim(wp_unslash($_POST['user_login'])));
if (empty($user_data))
$errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.'));
} else {
$login = trim($_POST['user_login']);
$user_data = get_user_by('login', $login);
}
/**
* Fires before errors are returned from a password reset request.
*
* @since 2.1.0
* @since 4.4.0 Added the `$errors` parameter.
*
* @param WP_Error $errors A WP_Error object containing any errors generated
* by using invalid credentials.
*/
do_action('lostpassword_post', $errors);
if ($errors->get_error_code())
return $errors;
if (!$user_data) {
$errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or email.'));
return $errors;
}
// Redefining user_login ensures we return the right case in the email.
$user_login = $user_data->user_login;
$user_email = $user_data->user_email;
$key = get_password_reset_key($user_data);
if (is_wp_error($key)) {
return $key;
}
$message = __('Someone has requested a password reset for the following account:'). "\r\n\r\n";
$message.= network_home_url('/'). "\r\n\r\n";
$message.= sprintf(__('Username: %s'), $user_login). "\r\n\r\n";
$message.= __('If this was a mistake, just ignore this email and nothing will happen.'). "\r\n\r\n";
$message.= __('To reset your password, visit the following address:'). "\r\n\r\n";
$message.= '<'. network_site_url("wp-login.php?action=rp&key=$key&login=". rawurlencode($user_login), 'login'). ">\r\n";
if (is_multisite()) {
$blogname = get_network()->site_name;
} else {
/*
* The blogname option is escaped with esc_html on the way into the database
* in sanitize_option we want to reverse this for the plain text arena of emails.
*/
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
}
/* translators: Password reset email subject. 1: Site name */
$title = sprintf(__('[%s] Password Reset'), $blogname);
/**
* Filters the subject of the password reset email.
*
* @since 2.8.0
* @since 4.4.0 Added the `$user_login` and `$user_data` parameters.
*
* @param string $title Default email title.
* @param string $user_login The username for the user.
* @param WP_User $user_data WP_User object.
*/
$title = apply_filters('retrieve_password_title', $title, $user_login, $user_data);
/**
* Filters the message body of the password reset mail.
*
* @since 2.8.0
* @since 4.1.0 Added `$user_login` and `$user_data` parameters.
*
* @param string $message Default mail message.
* @param string $key The activation key.
* @param string $user_login The username for the user.
* @param WP_User $user_data WP_User object.
*/
$message = apply_filters('retrieve_password_message', $message, $key, $user_login, $user_data);
if ($message &&!wp_mail($user_email, wp_specialchars_decode($title), $message))
wp_die(__('The email could not be sent.'). "<br />\n". __('Possible reason: your host may have disabled the mail() function.'));
return true;
}
//
// Main
//
$action = isset($_REQUEST['action'])? $_REQUEST['action']: 'login';
$errors = new WP_Error();
if (isset($_GET['key']))
$action = 'resetpass';
// validate action so as to default to the login screen
if (!in_array($action, array('postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login'), true) && false === has_filter('login_form_'. $action))
$action = 'login';
nocache_headers();
header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
if (defined('RELOCATE') && RELOCATE) { // Move flag is set
if (isset($_SERVER['PATH_INFO']) && ($_SERVER['PATH_INFO']!= $_SERVER['PHP_SELF']))
$_SERVER['PHP_SELF'] = str_replace($_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF']);
$url = dirname(set_url_scheme('http://'. $_SERVER['HTTP_HOST']. $_SERVER['PHP_SELF']));
if ($url!= get_option('siteurl'))
update_option('siteurl', $url);
}
//Set a cookie now to see if they are supported by the browser.
$secure = ('https' === parse_url(wp_login_url(), PHP_URL_SCHEME));
setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN, $secure);
if (SITECOOKIEPATH!= COOKIEPATH)
setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN, $secure);
/**
* Fires when the login form is initialized.
*
* @since 3.2.0
*/
do_action('login_init');
/**
* Fires before a specified login form action.
*
* The dynamic portion of the hook name, `$action`, refers to the action
* that brought the visitor to the login form. Actions include 'postpass',
* 'logout', 'lostpassword', etc.
*
* @since 2.8.0
*/
do_action("login_form_{$action}");
$http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
$interim_login = isset($_REQUEST['interim-login']);
switch ($action) {
case 'postpass':
if (! array_key_exists('post_password', $_POST)) {
wp_safe_redirect(wp_get_referer());
exit();
}
$hasher = new PasswordHash(8, true);
setcookie('wp-postpass_'. COOKIEHASH, $hasher->HashPassword(wp_unslash($_POST['post_password'])), $expire, COOKIEPATH, COOKIE_DOMAIN, $secure);
wp_safe_redirect(wp_get_referer());
exit();
case 'logout':
check_admin_referer('log-out');
$user = wp_get_current_user();
wp_logout();
if (! empty($_REQUEST['redirect_to'])) {
$redirect_to = $requested_redirect_to = $_REQUEST['redirect_to'];
} else {
$redirect_to = 'wp-login.php?loggedout=true';
$requested_redirect_to = '';
}
/**
* Filters the log out redirect URL.
*
* @since 4.2.0
*
* @param string $redirect_to The redirect destination URL.
* @param string $requested_redirect_to The requested redirect destination URL passed as a parameter.
* @param WP_User $user The WP_User object for the user that's logging out.
*/
$redirect_to = apply_filters('logout_redirect', $redirect_to, $requested_redirect_to, $user);
wp_safe_redirect($redirect_to);
exit();
case 'lostpassword':
case 'retrievepassword':
if ($http_post) {
$errors = retrieve_password();
if (!is_wp_error($errors)) {
$redirect_to =!empty($_REQUEST['redirect_to'])? $_REQUEST['redirect_to']: 'wp-login.php?checkemail=confirm';
wp_safe_redirect($redirect_to);
exit();
}
}
if (isset($_GET['error'])) {
if ('invalidkey' == $_GET['error']) {
$errors->add('invalidkey', __('Your password reset link appears to be invalid. Please request a new link below.'));
} elseif ('expiredkey' == $_GET['error']) {
$errors->add('expiredkey', __('Your password reset link has expired. Please request a new link below.'));
}
}
$lostpassword_redirect =! empty($_REQUEST['redirect_to'])? $_REQUEST['redirect_to']: '';
/**
* Filters the URL redirected to after submitting the lostpassword/retrievepassword form.
*
* @since 3.0.0
*
* @param string $lostpassword_redirect The redirect destination URL.
*/
$redirect_to = apply_filters('lostpassword_redirect', $lostpassword_redirect);
/**
* Fires before the lost password form.
*
* @since 1.5.1
*/
do_action('lost_password');
login_header(__('Lost Password'), '<p class="message">'. __('Please enter your username or email address. You will receive a link to create a new password via email.'). '</p>', $errors);
$user_login = isset($_POST['user_login'])? wp_unslash($_POST['user_login']): '';
?>