Formularze HTML. Usunięcie wersji WP

HitmanPro wykrywa, identyfikuje i usuwa wirusy, oprogramowanie szpiegujące, trojany, rootkity i inne złośliwe oprogramowanie.

Narzędzie wykorzystuje własny silnik analizy behawioralnej i badania klastrów plików, a także innowacyjną technologię skanowania w chmurze z wykorzystaniem antywirusowych baz danych SophosLabs, Kaspersky i Bitdefender. Skaner HitmanPro wykrywa i usuwa potencjalnie złośliwe zagrożenia przy minimalnym wpływie na wydajność systemu.

* HitmanPro to darmowy skaner antywirusowy. Funkcja usuwania jest dostępna bezpłatnie przez 30 dni.

Kluczowe cechy HitmanPro

Czy Twój program antywirusowy poradzi sobie z najnowszymi zagrożeniami?

Nowe źródło złośliwego oprogramowania można znaleźć w dowolnym miejscu, nawet w zaufanych witrynach. Zagrożenia te mogą wykorzystywać różne techniki w celu obejścia ochrony antywirusowej. HitmanPro został zaprojektowany do współpracy z ochroną antywirusową i wykorzystuje głęboką analizę behawioralną do wyszukiwania i neutralizowania zagrożeń dnia zerowego – nowoczesnych zagrożeń, które próbują uniknąć wykrycia.

Wykrywanie zachowań + zbiorowe doświadczenie

Zamiast używać definicji sygnatur do identyfikowania złośliwego oprogramowania, HitmanPro sprawdza zachowanie każdego pliku pod kątem złośliwej aktywności. Takie podejście daje HitmanPro możliwość blokowania najnowszego podstępnego złośliwego oprogramowania i wirusów, zanim zostaną one zidentyfikowane. HitmanPro łączy się również z bazą danych złośliwego oprogramowania SophosLabs, aby wykryć więcej form nowych zagrożeń i wyśledzić je do źródła.

Brak instalacji

HitmanPro zajmuje 12 megabajtów i nie wymaga instalacji. Program można uruchomić bezpośrednio z pulpitu, napędu USB, płyty CD/DVD lub pamięci zdalnej. Nawet jeśli Twój program antywirusowy jest kontrolowany przez złośliwe oprogramowanie lub oprogramowanie ransomware, HitmanPro będzie działać poprawnie i będzie w stanie wykryć i usunąć zagrożenia.

Kompleksowa renowacja

HitmanPro umożliwia usuwanie uporczywych zagrożeń, które zadomowiły się w systemie operacyjnym i zastępuje zainfekowane zasoby systemowe bezpiecznymi, oryginalnymi wersjami, jednocześnie blokując próby ponownej infekcji.

Nagrody za testowanie

Przesyłanie danych poprzez tablicę $_SESSION jest dozwolone jednorazowo, przesłane dane są natychmiast usuwane. Może się to przydać np. przy „zwracaniu” do formularza danych wprowadzonych w innym module.

Dobrze jest, gdy wszystkie funkcje usługi są połączone w jeden moduł, który główne moduły łączą poprzez dyrektywę require_once. Nazwiemy nasz moduł funkcji serwisowychfunction.php i oprócz wspomnianych metod trimall i magic zawrzemy w nim następujące funkcje:

  • read() - odczyta bieżącą bazę danych i zwróci tablicę rekordów;
  • write($a) - zapisze tablicę rekordów $a do pliku;
  • get_index_by_name ($a,$name) - wyszuka odpowiedni wpis po nazwie $name i zwróci jego numer (od zera) lub wartość -1, jeśli wpis nie zostanie znaleziony. Jest to przydatne, aby rozróżnić dodanie nowego wpisu od edytowania istniejącego.

Dodatkowo w pliku funkcji znajdzie się plik konfiguracyjny i rozpocznie się sesja - tych możliwości może potrzebować dowolny moduł, który go połączy.

Plik Function.php

Zauważ, że funkcja read dodatkowo filtruje tablicę rekordów z pustych ciągów (na wszelki wypadek, w ogólności, nie powinny one wystąpić), a trimall najpierw zastąpi dowolny niepusty ciąg ograniczników pojedynczą spacją (drugie preg_replace) i następnie usuń ewentualne dodatkowe ograniczniki na początku i na końcu pozostałej linii (pierwszy preg_replace).

Istnieje również niuans z funkcją odczytu pod względem zgodności kodu. Ponieważ w jego jedynej linii znajduje się funkcja anonimowa, zakłada się, że używana jest wersja PHP nie niższa niż 5.3. Jeśli to konieczne, zamień poniższy kod na taki, w którym funkcja filtrowania jest nazwana lub w ogóle nie jest używana, jak tutaj:

Funkcja read () ( $str=@file_get_contents (NAZWA PLIKU); $a=explode("\n",$str); return $a; )

Prawidłowe rzutowanie łańcucha Unicode na małe litery jest również ważne (zobacz mb_strtolower w kodzie). Nie używamy tutaj ustawień regionalnych.

Wygląda na to, że nadszedł czas na napisanie głównego pliku Index.php. Rozwiąże następujące zadania:

  • wyświetlić formularz dodania nowego wpisu, który jest przetwarzany przez moduł add.php;
  • obok formularza dodawania wyświetlimy dodatkowe komendy - wyczyszczenie formularza poprzez „samouruchomienie” skryptu bez parametrów (przycisk nie będzie tu działał, bo nie przesyła danych na serwer) oraz link umożliwiający dostęp do sortowania rekordów moduł o nazwie sort.php;
  • otrzymywać wyniki swojej pracy z innych modułów w postaci zmiennej numerycznej $status i wyświetlać odpowiednie komunikaty (tablica $status_msg). Domyślnie akceptowana jest wartość $status równa zero, odpowiada ona wynikowi krótkiej pomocy dotyczącej działania programu;
  • jeżeli baza danych nie jest pusta, pokaż jej rekordy i zapewnij przejście do edycji lub usunięcia.

Aby nie przeciążać tabeli dodatkowymi przyciskami i linkami, kliknijmy wg nazwy przechodząc do edycji wpisu za pomocą modułu edit.php i klikając według pola „Numer” będzie odpowiadać usunięciu wpisu przez moduł del.php.

Oto jak to wygląda po dodaniu kilku wpisów:

Wygląd skryptu „Mini-DB na pliku tekstowym”

plik indeks.php

Przejdźmy teraz do brakujących modułów. add.php wydaje się mieć proste zadanie - pobierz zmienne $name i $number z pliku Index.php i zapisz je w pliku. Moduł musi jednak sprawdzać, czy przekazywane są do niego niepuste dane, a także potrafić odróżnić sytuację, gdy wpisana zostanie nazwa, która już istnieje w bazie, od wpisu nowego rekordu (zobacz if ($id>- 1) ( ... ) else ( ... ) w kodzie). W tym drugim przypadku wpis zawsze dodawany jest na końcu, gdyż pojawi się moduł do sortowania ciągów alfabetycznie.

Ważne jest również, aby ciąg $name „przekazany” przez procedurę obsługi parametrów był już pozbawiony „krytycznych” znaków znaczników, takich jak „, „,< и >, a w tablicy $a odczytanej z pliku danych wszystkie wiersze są takie, jakie są, a liczba 123 nie zostanie znaleziona, jeśli po przetworzeniu wartość $nazwa zmieni się na 123. Dlatego funkcja wyszukiwania rekordów, którą nazywamy get_index_by_name , przekazuje ciąg znaków skonwertowany „z powrotem” do pierwotnej postaci przy użyciu standardowej funkcji htmlspecialchars_decode (dostępnej od PHP 5.1). W tej samej formie ciąg znaków jest zwracany z powrotem do pliku Index.php poprzez tablicę $_SESSION. Zapewni to pewną wygodę - po wprowadzeniu nowego wpisu jego dane pozostaną w formularzu i będzie można wprowadzić kolejny wpis, nieco różniący się nazwą („Ivanova” od „Ivanov”).

Otóż ​​powrót z modułu do modułu jest absolutnie standardowy - poprzez standardową funkcję nagłówka. Pamiętaj, że można go użyć tylko wtedy, gdy moduł nie wysłał jeszcze niczego do przeglądarki.

dodaj plik.php

A teraz o edycji, zostanie ona zaimplementowana w edit.php. Formularz edycji jest prawie taki sam jak formularz dodawania, byliśmy po prostu zbyt leniwi, aby stworzyć osobną funkcję do wyświetlania formularza. Co ważniejsze, moduł sam w sobie będzie procesorem danych przesyłanych poprzez formularz edycyjny, dlatego też musi odróżniać sytuację w momencie jego wywołania od tej, w której użytkownik kliknął „Zapisz”. Ostatnim zadaniem jest sprawdzenie

If (!empty($_POST["prześlij"]) && !empty($nazwa) && isset($liczba) && isset($id)) (

ustalenie, czy przycisk został naciśnięty i wszystkie dane zostały przesłane. Drugi oddział -

Inaczej if (isset($a[$id])) (

przeznaczony jest dla sytuacji, gdy w tablicy $a znajduje się wpis, którego numer jest przekazywany do skryptu i należy go edytować. Numer wpisu jest przechowywany w ukrytym polu HTML.

Plik edit.php

Moduł usuwania rekordów del.php będzie dość prosty, wystarczy pobrać poprawny rekord $id (numer elementu w tablicy $a), usunąć odpowiedni element z tablicy, przepisać plik i wrócić do modułu głównego strona.

Plik del.php

Wreszcie moduł sortowania sort.php wprowadzi nowy problem - jak sortować ciągi znaków Unicode alfabetycznie, bez rozróżniania wielkich i małych liter? Sortowanie „bezpośrednie” przy użyciu standardowej funkcji sortowania jest mało odpowiednie - małe i wielkie litery są uznawane za różne znaki. Nie ustawiliśmy ustawień regionalnych, zwłaszcza że nie ma jednego formularza umożliwiającego instalację we wszystkich systemach operacyjnych.

Ograniczmy się do wyboru usort z całej gamy funkcji sortowania tablic z niestandardową funkcją porównywania elementów.

Zastosowane „bezpośrednie” porównanie jednoznakowych ciągów Unicode wydaje się nie do końca poprawne, ale strcmp porównuje ciągi bajt po bajcie i nie jest dla nas odpowiednie, ale ogólnie porównanie jest prawidłowe każdy strings w Unicode to bardzo trudne zadanie... U mnie wszystko zadziałało w systemie dla języka rosyjskiego i angielskiego, np. po sortowaniu dostałem naturalną kolejność słów, np.

Abba, Avka, avklit, basya, Bobi, Bobik, bobik, Bobina

Plik sort.php

Wystarczy, że utworzymy w folderze plik o nazwie .htaccess, w którym ustawimy domyślne kodowanie na Unicode i wskażemy wytyczne dotyczące ustawiania cudzysłowów dla witryny, dzięki czemu...

W tym samym folderze utwórz pusty (0 bajtów) plik data.txt (opcjonalnie, jeśli skonfigurowano wszystkie uprawnienia).

File.htaccess AddDefaultCharset utf-8 php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off php_flag magic_quotes_sybase off

Możesz zobaczyć co się stało i dać mi znać o problemach, które znalazłeś, skrypt napisałem bardzo szybko, w 2 krokach i mogłem czegoś nie przemyśleć :)

Zbiór przydatnych fragmentów (kodów). Kody są przeznaczone do typowych zadań podczas edycji lub tworzenia motywu.

Zazwyczaj cały ten kod powinien zostać umieszczony w plikufunctions.php motywu. Możesz też utworzyć oddzielny plik.php, umieścić tam kod i podłączyć plik do plikufunctions.php motywu w następujący sposób:

// fragmenty połączeń require_once "functions-snippets.php";

Wygląd CSS dla edytora TinyMCE

Łączy plik stylów z edytorem WordPress TinyMCE. W ten sposób możemy ustawić style edytora w panelu administracyjnym i podczas edycji postu zobaczyć, jak wygląda on w interfejsie.

// Style dla edytora TinyMCE // Musisz utworzyć plik "editor-styles.css" w folderze motywu add_action("current_screen", "my_theme_add_editor_styles"); funkcja my_theme_add_editor_styles() ( add_editor_style("editor-styles.css"); )

CSS strony logowania

## CSS dla strony logowania ## Musisz utworzyć plik "wp-login.css" w folderze motywu add_action("login_head", "my_loginCSS"); funkcja my_loginCSS() ( echo ""; )

CSS dla panelu administracyjnego

Zawiera plik stylu na wszystkich stronach panelu administracyjnego. Dzięki temu możesz wygodnie modyfikować i uzupełniać style panelu administracyjnego.

## Style CSS dla panelu administracyjnego. Musisz utworzyć plik „wp-admin.css” w folderze motywu add_action(”admin_enqueue_scripts”, „my_admin_css”, 99); funkcja my_admin_css())( wp_enqueue_style("mój-wp-admin", get_template_directory_uri() ."/wp-admin.css"); )

Usuwanie paska administracyjnego z interfejsu użytkownika

Pasek administracyjny może przeszkadzać, gdy motyw wykorzystuje stałe (pływające) bloki. W takich przypadkach czasami łatwiej jest usunąć ten pasek.

## Usuwa pasek administracyjny z interfejsu add_filter("show_admin_bar", "__return_false"); ## Włącz obsługę widżetów. Dodaj obszar dla widżetów if(function_exists("register_sidebar"))( Register_sidebar(array("before_widget" => "", "after_widget" => "", "before_title" => "", "after_title" => "" , )); )

Aktywacja obsługi menu niestandardowego

Rejestruje obszar (lokalizację) dla menu i umożliwia obsługę menu. Po zainstalowaniu tego kodu w panelu administracyjnym możliwe będzie tworzenie własnych menu i dołączanie ich do obszarów tworzonych przez ten kod. W szablonie menu jest ona wyświetlana za pomocą funkcji wp_nav_menu().

## Dodaj własne menu Register_nav_menus(array("main" => "Menu główne", "in_footer" => "Menu w stopce",));

Dodawanie linków do kanału RSS z wpisami i komentarzami

Niestandardowy obraz tła lub tło ## Włącza możliwość ustawienia obrazu tła z panelu administracyjnego add_theme_support("custom-background");

W rezultacie kod wyświetli:

body.custom-background ( kolor tła: #bdd96e; )

Uwzględnianie krótkich kodów w widżecie Tekst

Wiele wtyczek używa krótkich kodów, ale nie wszystkie mają widżety. W takim przypadku wygodnie byłoby użyć krótkiego kodu wtyczki w widżecie „Tekst”.

## Skróty w widżecie „Tekst” if(! is_admin())( add_filter("widget_text", "do_shortcode", 11); )

Domyślnie losowy tekst w polu treści w obszarze administracyjnym

Tworząc nowy wpis (post lub stronę) czasami wygodnie jest umieścić tam notatki wyjaśniające, jak i co pisać. Aby to zrobić, możesz wstawić do treści domyślny tekst:

## Losowy domyślny tekst dla edytora add_filter("default_content", "writing_encouragement_func"); funkcja writing_encouragement_func($content) ( global $post_type; // Teksty dla edytora, typ postu if($post_type == "post")( $array = array("Jakaś wiadomość", "Jakaś wiadomość", ); return $ array[ array_rand($array) ]; ) // Teksty dla edytora, typ wpisu page else ( $array = array("Jakaś wiadomość", "Jakaś wiadomość"); return $array[ array_rand($array) ]; ) )

Zmiana ilości wpisów na stronie wyszukiwania

Domyślnie na stronie wyszukiwania wyświetlana jest taka sama liczba wpisów, jak gdzie indziej, zgodnie z ustawieniami.

Ten przykład pokazuje, jak wyświetlić 100 rekordów na stronie.

## zmień ilość postów na stronie wyszukiwania - ustaw tutaj na 100 add_action("pre_get_posts", "search_results_per_page_func"); funkcja search_results_per_page_func($query) ( // zapytanie na stronie wyszukiwania if(! is_admin() && $query->is_main_query() && $query->is_search())( $query->set("posts_per_page", 100) ; ) zwróć $zapytanie; )

Określa, ile słów ma zawierać cytat, który zazwyczaj wyświetla się na zarchiwizowanych stronach postów (kategorie, tagi). Cytat jest wyprowadzany przez funkcję_excerpt().

## Zmiana długości cytatu add_filter("excerpt_length", "custom_excerpt_length_func"); funkcja niestandardowe_excerpt_length_func($długość) (zwróć 20; // liczba słów)

Usunięcie pól z profilu w panelu administracyjnym: AIM, Yahoo IM, Jabber ## usuwa pola z profilu: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "remove_contactmethod"); funkcja Remove_contactmethod($contactmethods) ( unset($contactmethods["aim"]); unset($contactmethods["jabber"]); unset($contactmethods["yim"]); return $contactmethods; ) Dodawanie pól do profilu w panelu administracyjnym: facebook, twitter ## Dodaje pola do profilu: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "add_contactmethod"); funkcja add_contactmethod($contactmethods) ( $contactmethods["twitter"] = "Twitter"; $contactmethods["facebook"] = "Facebook"; return $contactmethods; ) Dodanie klasy has_sidebar do tagu, jeśli istnieje pasek boczny

Aby ten hack zadziałał, tag motywu musi, jak zwykle, używać tagu szablonu body_class().

## Dodanie klasy `has_sidebar` do znacznika ``, jeśli istnieje pasek boczny add_filter("body_class", "has_sidebar_func"); funkcja has_sidebar_func($classes)( if(is_active_sidebar("sidebar"))( // dodaj klasę $classes = "has_sidebar"; ) zwróć $classes; )

Dodanie widgetu do konsoli

Czasami przydatne może być dodanie widżetu do konsoli panelu administracyjnego, aby umieścić ważne informacje dotyczące aktualnego tematu.

## Niestandardowy widget w konsoli w panelu administracyjnym add_action("wp_dashboard_setup", "my_custom_dashboard_widgets"); funkcja my_custom_dashboard_widgets() ( wp_add_dashboard_widget("custom_help_widget", "Notatki do motywu", "custom_dashboard_help"); ) funkcja custom_dashboard_help() ( echo "

Witamy w temacie „Mój temat”! Oto kilka notatek na ten temat.";)

Otrzymujemy taki widget:

Zawiera skrypt odpowiedzi na komentarz

Ten skrypt przenosi formularz komentarza po kliknięciu przycisku „Odpowiedz”.

## Podłączenie skryptu odpowiedzi na komentarz add_action("wp_footer", "enable_threaded_comments"); funkcja Enable_threaded_comments())( if(is_singular() && komentarze_open() && get_option("thread_comments")) wp_enqueue_script("komentarz-odpowiedź"); )

Zdjęcia Włącz miniatury postów

Domyślnie posty nie mają bloku, w którym można ustawić miniaturę postu. Aby taki blok się pojawił musi być włączony. Musisz włączyć obsługę miniatur. Odbywa się to bardzo prosto:

## Włączanie miniatur postów add_theme_support("miniatury postów"); set_post_thumbnail_size(200, 200, true); // Normalne miniatury postów

Tworzenie dodatkowych pośrednich rozmiarów miniatur

Kiedy przesyłasz obraz, tworzone są dla niego dodatkowe rozmiary - miniatury. Do wymiarów podstawowych - dowolnych możesz łatwo dodać własne wymiary.

## Tworzenie pośrednich rozmiarów miniatur if(function_exists("add_image_size"))( add_image_size("mysize-horizont", 300, 200, true); add_image_size("mysize-vertical", 400, 500, true); )

Aby uzyskać zarejestrowany rozmiar należy skorzystać z funkcji:

Dodawanie miniatury do kanału RSS

Ten kod dodaje miniaturę wpisu na górze kanału RSS.

## Dodanie miniatury do kanału RSS add_filter("the_excerpt_rss", "add_thumbnail_to_feed"); //add_filter("kanał_treści", "add_thumbnail_to_feed"); // zwykle ten hak nie jest używany, ale może też być... funkcja add_thumbnail_to_feed($content)( $img = get_the_post_thumbnail(null, array(100, 80), array("align" => "left", " style" => "margines-prawy:15px;")); $treść = $img . $treść; return $treść; )

Anuluj zawijanie obrazów w tagu

W zawartości

Podczas wyświetlania treści w motywie za pomocą funkcji the_content() uruchamiana jest funkcja wpautop() i w rezultacie, jeśli znajduje się w osobnej linii, jest zawijana

Te. był stał się .

Ten przykład pokazuje, jak usunąć to dziwne zachowanie.

## Anuluj zawijanie obrazów w tagu `

` w treści add_filter("the_content", "remove_img_ptags_func"); funkcja usuń_img_ptags_func($treść)(zwróć preg_replace("/

\s*((?:]+>)?\s* ]+>\s*(?:)?)\s*/i", "\1", $content); ) // Połączenie skryptu HTML5 dla IE za pomocą cdn add_action("wp_head", "IEhtml5_shim_func"); funkcja IEhtml5_shim_func())( echo ""; // lub jeśli potrzebujesz także obsługi drukowania // echo ""; )

Ustaw maksymalną liczbę wersji rekordu

Domyślnie liczba poprawek rekordów jest nieograniczona, co może niepotrzebnie zaśmiecać bazę danych. Całkowite wyłączenie rewizji też nie jest najlepszym rozwiązaniem, bo zdarza się, że przy edycji rekordu coś pójdzie nie tak i wprowadzone dane zostaną utracone – zadanie idzie na marne…

Najlepiej ograniczyć liczbę poprawek, na przykład do 5:

If(! zdefiniowano("WP_POST_REVISIONS")) zdefiniuj("WP_POST_REVISIONS", 5);

Stała musi być zdefiniowana we wtyczce lub wcześniej.

Ochrona Usuwanie wersji WP

Jest to konieczne, aby hakerzy nie znali wersji WP i nie mogli zidentyfikować słabych punktów. Wraz z tym kodem należy również usunąć plik readme.html w katalogu głównym witryny, ponieważ wskazuje on również aktualną wersję.

## Całkowite usunięcie wersji WP ## Musisz także usunąć plik readme.html w katalogu głównym witryny. Remove_action("wp_head", "wp_generator"); // z nagłówka add_filter("the_generator", "__return_empty_string"); // z kanałów i adresów URL

Wyłącz komunikaty o błędach na stronie logowania

W przypadku błędu przy wpisywaniu loginu lub hasła, WP zgłasza, co dokładnie zostało wpisane błędnie: login lub hasło. Zapewnia to dodatkowe informacje dla osób odgadujących hasła.

Wyłącz możliwość edycji plików w panelu administracyjnym dla motywów i wtyczek

Możliwość edycji plików bezpośrednio z panelu administracyjnego może stać się dużą luką w zabezpieczeniach. Zamknijmy to.

## Wyłącz możliwość edycji plików w panelu administracyjnym dla motywów i wtyczek zdefiniuj("DISALLOW_FILE_EDIT", true);

Zamknij publikację poprzez xmlrpc.php

Domyślnie możliwość publikowania postów poprzez plik xmlrpc.php jest włączona.

Jest to możliwość publikacji postów z zewnątrz, np. z poczty elektronicznej... Najczęściej taka funkcjonalność nie jest potrzebna i mogą znajdować się w niej potencjalne luki. Dlatego najczęściej pożądane jest jego wyłączenie. Nawiasem mówiąc, we wcześniejszych wersjach WordPressa ta funkcja była domyślnie wyłączona i trzeba było ją włączyć, aby z niej skorzystać.

## wyłącz możliwość publikowania poprzez xmlrpc.php add_filter("xmlrpc_enabled", "__return_false");

Tworząc nawet osobistą stronę internetową, nie każdy jest w stanie przewidzieć wszystkie możliwe sposoby jej dalszego wykorzystania. Bardzo ważne jest przygotowanie gruntu pod dalszy rozwój terenu. Jeśli w przeszłości tworzyłeś witrynę internetową i domyślnie przypisałeś wszystkim stronom rozszerzenie .html, a dopiero potem zdecydowałeś się na użycie PHP, czytaj dalej.

Wcześniej, aby móc korzystać z SSI, nazwy stron witryn musiały kończyć się rozszerzeniem .shtml, ale obecnie większość serwerów internetowych jest skonfigurowana w taki sposób, że SSI może być używane na stronach z rozszerzeniem .html, co jest całkiem wygodne. PHP to zupełnie inna historia - rozszerzenie .php jest rozszerzeniem domyślnym. Twórcy stron internetowych, wiedząc z góry, że dany język programowania będzie używany, od razu przypisują odpowiednie rozszerzenie.

Co jednak zrobić, gdy wszystkie strony kończą się rozszerzeniem .html?

Zamień rozszerzenie HTML na PHP

Można to zrobić na kilka sposobów. Najbardziej oczywistym sposobem jest nadanie wszystkim stronom rozszerzenia .php lub zmiana istniejących rozszerzeń (.html, .shtml itp.). Ta metoda ma wady. Na przykład już zaindeksowane strony z rozszerzeniem .html będą musiały zostać ponownie zaindeksowane przez wyszukiwarki. Lub, co gorsza, wszystkie linki zewnętrzne, które wyraźnie prowadzą do określonej strony, będą nieprawidłowe. Będziesz musiał powiadomić właścicieli każdej witryny o tych zmianach i utworzyć kolejną stronę z 301 błędami dla każdej strony. Oczywiście zmiana jednego rozszerzenia na inne jest akceptowalna, ale co jeśli witryna ma już wiele stron i wiele linków do różnych stron z innych witryn?

Ze świadomego powodu, w chwili obecnej wszystkie strony tej witryny kończą się rozszerzeniem html, a nie chciałem wprowadzać powyższych zmian, stwarzając tym samym dla siebie niepotrzebne trudności.

Można to zrobić w inny sposób. Jeśli serwer obsługujący witrynę obsługuje mod_rewrite (w większości przypadków tak) i jest dostęp do pliku .htaccess, to możesz dodać do tego samego pliku następujące linie:

RewriteEngine na RewriteRule ^(.*)\.html $1\.php

Dodając ten kod do .htaccess, nie musisz się martwić. Wszystkie żądane nieistniejące strony z rozszerzeniem .html zostaną automatycznie zastąpione rozszerzeniem .php dzięki cudom Apache. Ale ta metoda nie jest jedyna. W tym samym pliku .htaccess możesz zapisać następujące informacje:

Aplikacja AddHandler/x-httpd-php .php .html .htm

Moim zdaniem najbardziej udany sposób. Dzięki temu strony HTML są równe stronom PHP, co oznacza, że ​​ze wszystkich funkcji PHP można teraz korzystać na stronach z rozszerzeniem HTML. Jeśli nie masz dostępu do pliku .htaccess, możesz napisać list do firmy hostingowej i grzecznie poprosić administratorów o wpisanie wymaganej wartości dla witryny w konfiguracji Apache (httpd.conf).

Nawiasem mówiąc, jeśli wcześniej witryna korzystała z SSI w następujący sposób:

następnie w nowym stanie PHP ten kod należy zastąpić:

Cóż, to wszystko, myślę, że jedna z powyższych metod pomoże.