Использование PHP в страницах с расширением html. PHP: делаем "мини-БД" на текстовом файле

Коллекция полезных снипетов (кодов). Коды рассчитаны на частые задачи при редактировании или создании темы.

Как правило, все эти коды нужно размещать в файл темы functions.php . Или, можно создать отдельный.php файл разместить код туда и подключить файл в functions.php темы так:

// подключаем сниппеты require_once "functions-snippets.php";

Внешний вид CSS для TinyMCE редактора

Подключает файл стилей к редактору WordPress TinyMCE. Так мы сможем настроить стили редактора в админке и при редактировании записи видеть как она выглядит во фронт-энде.

// Стили для TinyMCE редактора // Нужно создать файл "editor-styles.css" в папке темы add_action("current_screen", "my_theme_add_editor_styles"); function my_theme_add_editor_styles() { add_editor_style("editor-styles.css"); }

CSS для страницы входа (login)

## CSS для страницы входа (login) ## Нужно создать файл "wp-login.css" в папке темы add_action("login_head", "my_loginCSS"); function my_loginCSS() { echo ""; }

CSS для админ-панели

Подключает файл стилей на все страницы админ панели. Так, можно удобно переделывать и дополнять стили админки.

## CSS стили для админ-панели. Нужно создать файл "wp-admin.css" в папке темы add_action("admin_enqueue_scripts", "my_admin_css", 99); function my_admin_css(){ wp_enqueue_style("my-wp-admin", get_template_directory_uri() ."/wp-admin.css"); }

Удаление Админ-бара с фронт-энда

Админ бар может мешаться когда в теме используются фиксированные (плавающие) блоки. В таких случаях иногда проще убрать этот бар.

## Удаляет Админ-бар с фронт-энда add_filter("show_admin_bar", "__return_false"); ## Включаем поддержку виджетов. Добавляем область для виджетов if(function_exists("register_sidebar")){ register_sidebar(array("before_widget" => "", "after_widget" => "", "before_title" => "", "after_title" => "",)); }

Активация поддержки произвольного меню

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

## Add custom menus register_nav_menus(array("main" => "Главное меню", "in_footer" => "Меню в подвале",));

Добавляем ссылки на RSS фид записей и фид комментариев в

Настраиваемая фоновая картинка или фон ## Включает возможность устанавливать фоновую картинку из админки add_theme_support("custom-background");

В результате код выведет:

body.custom-background { background-color: #bdd96e; }

Включение шорткодов в виджет «Текст»

Многие плагины используют шотркоды, но не у всех есть виджеты. В таком случае было бы удобно использовать шорткод плагина в виджете «Текст».

## Шорткоды в виджете "Текст" if(! is_admin()){ add_filter("widget_text", "do_shortcode", 11); }

Случайный текст по умолчанию в поле контента в админке

При создании новой записи (поста или страницы) иногда удобно, чтобы там были какие-то заметки, пояснения как и что нужно писать. Для этого можно вставлять в контент дефолный текст:

## Случайный дефолтный текст для редактора add_filter("default_content", "writing_encouragement_func"); function writing_encouragement_func($content) { global $post_type; // Тексты для редактора, тип записи post if($post_type == "post"){ $array = array("Какое-то сообщение", "Какое-то сообщение",); return $array[ array_rand($array) ]; } // Тексты для редактора, тип записи page else { $array = array("Какое-то сообщение", "Какое-то сообщение",); return $array[ array_rand($array) ]; } }

Изменение количество записей на странице поиска

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

Этот пример показывает как вывести 100 записей на странице.

## change amount of posts on the search page - set here to 100 add_action("pre_get_posts", "search_results_per_page_func"); function search_results_per_page_func($query) { // запрос на странице поиска if(! is_admin() && $query->is_main_query() && $query->is_search()){ $query->set("posts_per_page", 100); } return $query; }

Определяет сколько слов должно быть в цитате, которая обычно выводится на архивных страницах записей (рубрики, метки). Цитату выводит функция the_excerpt() .

## Изменение длины цитаты add_filter("excerpt_length", "custom_excerpt_length_func"); function custom_excerpt_length_func($length) { return 20; // кол-во слов }

Удаление полей из профиля в админке: AIM, Yahoo IM, Jabber ## удаляет из профиля поля: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "remove_contactmethod"); function remove_contactmethod($contactmethods) { unset($contactmethods["aim"]); unset($contactmethods["jabber"]); unset($contactmethods["yim"]); return $contactmethods; } Добавление полей в профиль в админке: facebook, twitter ## Добавляет в профиль поля: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "add_contactmethod"); function add_contactmethod($contactmethods) { $contactmethods["twitter"] = "Twitter"; $contactmethods["facebook"] = "Facebook"; return $contactmethods; } Добавление класса has_sidebar к тегу , если есть сайдбар

Для того чтобы этот хак работал, нужно чтобы в теме в теге использовался, как принято, тег шаблона body_class() .

## Добавление класса `has_sidebar` к тегу ``, если есть сайдбар add_filter("body_class", "has_sidebar_func"); function has_sidebar_func($classes){ if(is_active_sidebar("sidebar")){ // добавляем класс $classes = "has_sidebar"; } return $classes; }

Добавление виджета в консоль

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

## Произвольный виджет в консоли в админ-панели add_action("wp_dashboard_setup", "my_custom_dashboard_widgets"); function my_custom_dashboard_widgets() { wp_add_dashboard_widget("custom_help_widget", "Заметки темы", "custom_dashboard_help"); } function custom_dashboard_help() { echo "

Добро пожаловать в тему "Моя тема"! Тут некоторые заметки по теме."; }

Получим такой виджет:

Включение скрипта ответа на комментарий

Этот скрипт передвигает форму комментариев при нажатии на кнопку "Ответить".

## Подключение скрипта ответа на комментарий add_action("wp_footer", "enable_threaded_comments"); function enable_threaded_comments(){ if(is_singular() && comments_open() && get_option("thread_comments")) wp_enqueue_script("comment-reply"); }

Картинки Включение миниатюр записи

По умолчанию для записей нет блока где можно установить миниатюру записи. Чтобы такой блок появился, его нужно включить. Нужно включить поддержку миниатюр. Делается это очень просто:

## Включение миниатюр записи add_theme_support("post-thumbnails"); set_post_thumbnail_size(200, 200, true); // Normal post thumbnails

Создание дополнительных промежуточных размеров миниатюр

При загрузке изображения для нее создаются дополнительные размеры - миниатюры. К базовым размерам можно легко добавить свои - произвольные.

## Создание промежуточных размеров миниатюр if(function_exists("add_image_size")){ add_image_size("mysize-horizont", 300, 200, true); add_image_size("mysize-vertical", 400, 500, true); }

Чтобы получить зарегистрированный размер, используйте функцию:

Добавление миниатюры в RSS фид

Этот код добавляет миниатюру записи в начало RSS фида.

## Добавление миниатюры в RSS фид add_filter("the_excerpt_rss", "add_thumbnail_to_feed"); //add_filter("the_content_feed", "add_thumbnail_to_feed"); // обычно этот хук не используется, но тоже может быть... function add_thumbnail_to_feed($content){ $img = get_the_post_thumbnail(null, array(100, 80), array("align" => "left", "style" => "margin-right:15px;")); $content = $img . $content; return $content; }

Отменяем обертку картинок в тег

В контенте

При выводе контента в теме с помощью the_content() , срабатывает функция wpautop() и в результате если находится на отдельной строке, он оборачивается в

Т.е. было стало .

Этот пример показывает как убрать такое странное поведение.

## Отменяем обертку картинок в тег `

` в контенте add_filter("the_content", "remove_img_ptags_func"); function remove_img_ptags_func($content){ return preg_replace("/

\s*((?:]+>)?\s*]+>\s*(?:)?)\s*/i", "\1", $content); } // Подключение скрипта html5 для IE с cdn add_action("wp_head", "IEhtml5_shim_func"); function IEhtml5_shim_func(){ echo ""; // или если нужна еще и поддержка при печати // echo ""; }

Установим максимальное количество ревизий записи

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

Идеально - ограничить кол-во ревизий, например до 5:

If(! defined("WP_POST_REVISIONS")) define("WP_POST_REVISIONS", 5);

Определять константу надо в плагине или раньше.

Защита Удаление версии WP

Нужно это для того, чтобы хакеры не знали версию WP и не могли определить слабые места. Вместе с этим кодом нужно также удалить файл readme.html в корне сайта, потому что в нем тоже указывается текущая версия.

## Полное Удаление версии WP ## Также нужно удалить файл readme.html в корне сайта remove_action("wp_head", "wp_generator"); // из заголовка add_filter("the_generator", "__return_empty_string"); // из фидов и URL

Отключим выводи ошибок на странице авторизации

В случае ошибки, при вводе логина или пароля, WP сообщает что именно было введен неправильно: логин или пароль. Это дает дополнительную информацию для «подборщиков» паролей.

Отключим возможность править файлы в админке для тем и плагинов

Возможность редактировать файлы прямо из админки может стать большой дырой в защите. Давайте её закроем.

## Отключим возможность редактировать файлы в админке для тем, плагинов define("DISALLOW_FILE_EDIT", true);

Закроем публикацию через xmlrpc.php

По умолчанию включена возможность публикации записей через файл xmlrpc.php .

Это такая возможность пубилковать записи из вне, например с почты... Чаще всего этот функционал не нужен и в нем могут быть потенциальные дыры. Поэтому его чаще всего желаетльно отключить. Кстати, в ранних версиях WordPress этот функционал был отключен по умолчанию и его нужно было включить чтобы им пользоваться.

## закроем возможность публикации через xmlrpc.php add_filter("xmlrpc_enabled", "__return_false");

At Cheat Happens

Hottest Stuff On CheatCC!


Hottest Stuff On CheatCC!


Level select

Note: This procedure involves editing a game file; create a backup copy of the file before proceeding. Use a text editor to edit the "hitman2.ini" file in the game folder. Locate the "DefaultScene=AllLevels/logos.gms" entry and change it to "DefaultScene=AllLevels/levelmenu.gms". All levels will be marked as completed and a level selection menu will be unlocked.

Level skip

Note:

", where is an uppercase letter. Begin a game and change to third person view or use the sniper scope or binoculars. Press that key and the current level will be marked as completed.

Teleport

Note: This procedure involves editing a game file; create a backup copy of the file before proceeding. Use a text editor to edit the "keyboard.cfg" file in the game folder. Locate the following group of text:

Change the "K_NEXT" text to "K_ ", where is an uppercase letter. Begin a game and change to third person view or use the sniper scope or binoculars. Press that key and 47 will teleport where the crosshairs are on flat solid ground.

Silenced ballers gun

Successfully complete a level with a "Silent Assassin" rank to unlock the silenced ballers gun.

Sawed-off shotgun

Successfully complete a level with a "Silent Assassin" rank twice to unlock the sawed-off shotgun.

M4

Successfully complete five levels with a "Silent Assassin" rank to get the M4. Alternately, successfully complete the Shogun Showdown level with a "Silent Assassin" rank. Alternately, successfully complete the St. Petersburg Stakeout, Tubeway Torpedo, and Invitation to a Party levels with a "Silent Assassin" rank all in one session.

Gun collection

Throughout all the levels you will run into many different types of guns. Whenever you see a gun that you do not already have, pick it up. After you complete the level on which you found the gun, the gun will now be available at your house. You will have ammunition in the room for you to use if desired. However, there are many guns that are too big to carry inside your clothes and therefore must be held in the open. You will not be able to pick up a gun of the same size or greater without dropping the one you are holding. You will find other guns on the same level that you cannot pick up because you are already holding one, and the gun you want is simply too big to conceal. In this case, you will have to decide which gun you want more then finish the level with it. You can always replay that level to get the other gun that was left behind.

Cheat Codes

Note: This procedure involves editing a game file; create a backup copy of the file before proceeding. Use a text editor to edit the "hitman2.ini" file in the game folder. Add the line "EnableCheats 1" (case-sensitive) to the bottom of the file. Type one of the following case-sensitive codes while playing the game to activate the corresponding cheat function:

Result Cheat Code
Toggle God mode (US keyboard) IOIRULEZ
Toggle God mode (European keyboard) IOIRULEY
All weapons and items IOIGIVES
Full ammunition IOIEQPWEAP
Refill health IOIHITLEIF
Toggle slow motion enemy death IOISLO
Toggle bomb mode IOIER
Enable punching IOIHITALI
Toggle lethal mode IOILEPOW
Toggle gravity IOIGRV
All guns act as nail guns IOINGUN
Toggle megastrength weapons IOIPOWER

From: [email protected], [email protected], and [email protected]

Cheat Codes (demo version)

Note: This procedure involves editing a game file; create a backup copy of the file before proceeding. Use a text editor to edit the "hitman2.ini" file in the game folder. Add the line "enableconsole 1" at the bottom of the file. While playing the game, press ~ , then enter one of the following codes at the console window to activate the corresponding cheat function:

Result Cheat Code
Toggle God mode god
Toggle debug mode ipdebug
Toggle Invisibility invisible
Infinite ammunition infammo
All weapons giveall

HitmanPro обнаруживает, идентифицирует и удаляет вирусы, шпионские программы, трояны, руткиты и другие вредоносные программы.

Утилита использует собственный движок поведенческого анализа и экспертизы файлового кластера, а также инновационную облачную технологию проверки с помощью антивирусных баз данных SophosLabs, Kaspersky и Bitdefender. Сканер HitmanPro обнаруживает и удаляет потенциально вредоносные угрозы с минимальным влиянием на производительность системы.

* HitmanPro - бесплатный антивирусный сканер. Функция удаления доступна 30 дней бесплатно.

Основные возможности HitmanPro

Может ли ваш антивирус справиться с новейшими угрозами?

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

Поведенческое обнаружение + коллективный опыт

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

Без установки

HitmanPro занимает 12 мегабайт и не требует установки. Программу можно запустить прямо с рабочего стола, USB-диска, CD/DVD или удаленного хранилища. Даже если ваш антивирус контролируется вредоносной программой или шифровальщиком, HitmanPro будет работать корректно и сможет обнаруживать и удалять угрозы.

Комплексное восстановление

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

Награды в тестировании

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

1) Создание простой формы

Теги и задают начало и конец формы. Начинающий форму тег содержит два атрибута: action и method . Атрибут action содержит адрес URL сценария, который должен быть вызван для обработки сценария. Атрибут method указывает браузеру, какой вид HTTP запроса необходимо использовать для отправки формы; возможны значения POST и GET .

Замечание

Главное отличие методов POST и GET заключается в способе передачи информации. В методе GET параметры передаются через адресную строку, т.е. по сути в HTTP-заголовке запроса, в то время как в методе POST параметры передаются через тело HTTP-запроса и никак не отражаются на виде адресной строки.

Задача: Пусть необходимо создать выпадающий список с годами с 2000 по 2050.
Решение: Необходимо создать HTML форму c элементом SELECT и PHP – сценарий для обработки формы.

Обсуждение:

Для начала создадим два файла: form.html и action.php . В файле form.html будет содержаться html-форма с выпадающим списком. Причем значения в списке можно указать двумя способами:

I. Ввод данных вручную:


2000
2001
2002
……………………………………………
2050

II. Ввод данных через цикл:



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

Описание:

Создадим HTML-форму для отправки файла на сервер.




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

Затем необходимо написать сценарий обработчик action.php . Перед написание обработчика необходимо определиться в какой каталог мы будет копировать файл:

Замечание

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

Данный пример демонстрирует создание каталога и копирование файла в этот каталог на сервер.

Также хотел бы продемонстрировать пример с элементом checkbox . Этот элемент немного отличается от других элементов тем, что если не один из элементов checkbox ’a не выбран, то суперглобальная переменная $_POST вернет пустое значение:


Синий
Черный
Белый




Есть еще вопросы или что-то непонятно - добро пожаловать на наш