PHP: делаем "мини-БД" на текстовом файле. Использование PHP в страницах с расширением html Настраиваемая фоновая картинка или фон
Зачастую на 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
Как видно, второй пример с циклом, более компактный. Думаю, не стоит приводить скрипт обработчика данной формы, потому что он обрабатывается точно так же как текстовое поле, т.е. значения списка можно извлечь из суперглобального массива $_POST .
Описание:
Создадим HTML-форму для отправки файла на сервер.
В данной html-форме присутствует элемент browse , который открывает диалоговое окно для выбора файла для загрузки на сервер. При нажатии на кнопку "Передать файл" , файл передается сценарию-обработчику.
Затем необходимо написать сценарий обработчик action.php . Перед написание обработчика необходимо определиться в какой каталог мы будет копировать файл:
Замечание
Если вы доверяете пользователям закачивать на ваш сервер любые файлы, нужно быть предельно осторожным. Злоумышленники могут внедрить «нехороший» код в картинку или файл и отправить на сервер. В таких случаях нужно жестоко контролировать загрузку файлов.
Данный пример демонстрирует создание каталога и копирование файла в этот каталог на сервер.
Также хотел бы продемонстрировать пример с элементом checkbox . Этот элемент немного отличается от других элементов тем, что если не один из элементов checkbox ’a не выбран, то суперглобальная переменная $_POST вернет пустое значение:
Синий
Черный
Белый
Есть еще вопросы или что-то непонятно - добро пожаловать на наш | |
|
Коллекция полезных снипетов (кодов). Коды рассчитаны на частые задачи при редактировании или создании темы.
Как правило, все эти коды нужно размещать в файл темы 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");
П ри создании даже персонального сайта, далеко не каждый может предусмотреть все возможные способы его дальнейшего использования. Очень важно подготовить почву для дальнейшего развития сайта. Если в прошлом вы создали сайт и по умолчанию присвоили всем страницам расширение.html , а только потом решили использовать PHP, то тогда читайте дальше.
Раньше для использования SSI, названия страниц сайта должны были заканчиваться расширением.shtml , но сегодня большинство интернет-серверов сконфигурированы так, что SSI можно использовать и на страницах с расширением.html , что весьма удобно. С PHP совсем другая история — расширение.php является расширением по умолчанию. Разработчики сайтов, заранее зная, что будет использоваться данный язык программирования, стразу присваивают правильное расширение.
Но что делать, когда все страницы заканчиваются расширением.html ?
Заменяем расширение HTML на PHPЭто можно сделать несколькими способами. Самый явный способ — дать всем страницам расширение.php или изменить уже существующие расширения (.html, .shtml и т.д.). У этого способа есть недостатки. Например уже проиндексированным страницам с расширением.html придётся заново индексироваться поисковыми системами. Или ещё хуже — все внешние ссылки, которые ссылаются явным образом на ту или иную страницу, будут недействительны. И придется оповещать владельцев каждого сайта об этих изменениях и создавать для каждой страницы еще одну страницу с 301 ошибкой. Конечно, изменить одно расширение на другое допустимо, но что делать если сайт уже имеет много страниц и много ссылок на разные страницы с других сайтов?
По осознанной причине на данный момент все страницы этого сайта заканчиваются расширением html, и мне никак не хотелось делать вышеприведённые изменения, тем самым создавая себе лишние трудности.
Можно обойтись и другим способом. Если сервер, на котором размещается сайт, поддерживает mod_rewrite (в большинстве случаев поддерживает), и есть доступ к файлу.htaccess , то можно добавить следующие строки в этот самый файл:
RewriteEngine on RewriteRule ^(.*)\.html $1\.php
Добавив этот код в.htaccess , можно не волноваться. Все запрашиваемые несуществующие страницы с расширением.html будут автоматически заменяться расширением.php благодаря чудесам от Apache. Но и этот способ является не единственным. Можно прописать следующее в том же самом.htaccess файле:
AddHandler application/x-httpd-php .php .html .htm
На мой взгляд самый удачный способ. Это делает HTML-страницы равными PHP-страницам, то есть все функции PHP теперь могут быть использованы на страницах с расширением HTML. Если нет доступа к файлу.htaccess , то можно написать письмо хостинг компании, и вежливо попросить админов прописать в конфигурации Apache (httpd.conf) нужное значение для сайта.
Кстати, если до этого на сайте использовалось SSI следующим образом:
то тогда в новом PHP’шном состоянии этот код нужно заменить на:
Ну вот и всё, думаю какой-нибудь из вышеприведённых способов поможет.
At Cheat Happens
Hottest Stuff On CheatCC!
Hottest Stuff On CheatCC!
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 skipNote:
", 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.
TeleportNote: 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 gunSuccessfully complete a level with a "Silent Assassin" rank to unlock the silenced ballers gun.
Sawed-off shotgunSuccessfully complete a level with a "Silent Assassin" rank twice to unlock the sawed-off shotgun.
M4Successfully 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 collectionThroughout 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 CodesNote: 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 позволяет удалять стойкие угрозы, закрепившиеся в операционной системе, и заменяет инфицированные ресурсы системы безопасными оригинальными версиями, продолжая блокировать попытки повторного заражения.
Награды в тестировании