Formulare HTML. Eliminarea versiunii WP

HitmanPro detectează, identifică și elimină viruși, spyware, troieni, rootkit-uri și alte programe malware.

Utilitarul folosește propriul motor de analiză comportamentală și de examinare a clusterului de fișiere, precum și tehnologie inovatoare de scanare în cloud folosind baze de date antivirus SophosLabs, Kaspersky și Bitdefender. Scanerul HitmanPro detectează și elimină amenințările potențial rău intenționate cu impact minim asupra performanței sistemului.

* HitmanPro este un scanner antivirus gratuit. Funcția de ștergere este disponibilă gratuit timp de 30 de zile.

Caracteristicile cheie ale HitmanPro

Poate antivirusul tău să facă față celor mai recente amenințări?

O nouă sursă de malware poate fi găsită oriunde, chiar și pe site-uri de încredere. Aceste amenințări pot folosi diverse tehnici pentru a sustrage protecția antivirus. HitmanPro este proiectat să funcționeze cu protecție antivirus și utilizează o analiză comportamentală profundă pentru a găsi și neutraliza amenințările zero-day - amenințări moderne care încearcă să evite detectarea.

Detectare comportamentală + experiență colectivă

În loc să folosească definițiile semnăturilor pentru a identifica programele malware, HitmanPro examinează comportamentul fiecărui fișier pentru activități rău intenționate. Această abordare oferă lui HitmanPro capacitatea de a bloca cele mai recente programe malware și viruși insidioși înainte de a fi identificați. HitmanPro se conectează, de asemenea, la baza de date de malware SophosLabs pentru a detecta mai multe forme de noi amenințări și a le urmări până la sursa lor.

Fără instalare

HitmanPro ocupă 12 megaocteți și nu necesită instalare. Programul poate fi lansat direct de pe desktop, unitatea USB, CD/DVD sau stocare la distanță. Chiar dacă antivirusul tău este controlat de malware sau ransomware, HitmanPro va funcționa corect și va putea detecta și elimina amenințările.

Restaurare cuprinzătoare

HitmanPro vă permite să eliminați amenințările persistente care au câștigat un loc în sistemul de operare și înlocuiește resursele de sistem infectate cu versiuni sigure, originale, continuând să blocheze încercările de reinfectare.

Premii de testare

Transferul de date prin matricea $_SESSION este permis o singură dată; datele transferate sunt șterse imediat. Acest lucru poate fi util, de exemplu, atunci când se „returnează” datele introduse într-un alt modul într-un formular.

Este bine când toate funcțiile de serviciu sunt combinate într-un singur modul, pe care modulele principale se conectează prin directiva require_once. Vom apela modulul nostru de funcții de serviciu function.php și, pe lângă metodele trimall și magice menționate, vom include și următoarele funcții acolo:

  • read() - va citi baza de date curentă și va returna o matrice de înregistrări;
  • write($a) - va scrie o matrice de înregistrări $a într-un fișier;
  • get_index_by_name ($a,$name) - va căuta intrarea corespunzătoare după nume $name și va returna numărul acesteia (de la zero) sau valoarea -1 dacă intrarea nu este găsită. Acest lucru este util pentru a face diferența între adăugarea unei noi intrări și editarea uneia existente.

În plus, fișierul de funcții va include fișierul de configurare și va începe sesiunea - aceste capacități pot fi necesare oricărui modul care îl conectează.

Fișierul Function.php

Rețineți că funcția de citire filtrează în plus matricea de înregistrare de șiruri goale (doar în cazul în care, în general, nu ar trebui să apară), iar trimall va înlocui mai întâi orice șir nevid de delimitatori cu un singur spațiu (al doilea preg_replace) și apoi eliminați posibilii delimitatori suplimentari la începutul și la sfârșitul liniei rămase (primul preg_replace).

Există și o nuanță cu funcția de citire în ceea ce privește compatibilitatea codului. Deoarece singura sa linie conține o funcție anonimă, se presupune că este utilizată versiunea PHP nu mai mică de 5.3. Dacă este necesar, înlocuiți codul de mai jos cu unul în care funcția de filtrare este numită sau nu este folosită deloc, ca aici:

Funcția citire () ( $str=@file_get_contents (FILENAME); $a=explode("\n",$str); return $a; )

Transmiterea corectă a șirului Unicode în litere mici este, de asemenea, importantă (vezi mb_strtolower în cod). Nu folosim locale aici.

Se pare că este timpul să scrieți fișierul principal index.php. El va rezolva următoarele sarcini:

  • afișează un formular pentru adăugarea unei noi intrări, care este procesat de modulul add.php;
  • lângă formularul de adăugare vom afișa comenzi suplimentare - ștergerea formularului prin „auto-invocarea” unui script fără parametri (butonul nu va funcționa aici, deoarece nu transferă date către server) și un link pentru a accesa sortarea înregistrărilor modul numit sort.php;
  • primesc rezultatele muncii lor de la alte module sub forma unei variabile numerice $status și afișează mesajele corespunzătoare (array $status_msg). Valoarea $status egală cu zero va fi acceptată implicit, aceasta corespunde cu ieșirea unui scurt ajutor despre funcționarea programului;
  • dacă baza de date nu este goală, afișați înregistrările sale și asigurați o tranziție la editare sau ștergere.

Pentru a nu supraîncărca tabelul cu butoane și link-uri suplimentare, să facem clic dupa nume mergând să editați intrarea folosind modulul edit.php și făcând clic după câmpul „Număr” va corespunde ștergerii unei intrări de către modulul del.php.

Iată cum arată cu câteva intrări adăugate:

Apariția scriptului „Mini-DB pe un fișier text”

fișierul index.php

Acum să trecem la modulele lipsă. add.php pare să aibă o treabă simplă - obțineți variabilele $name și $number din index.php și scrieți-le într-un fișier. Cu toate acestea, modulul trebuie să verifice dacă îi sunt transmise date nevide și, de asemenea, să poată distinge situația când un nume care există deja în baza de date este introdus de introducerea unei noi înregistrări (vezi dacă ($id>- 1) ( ... ) altfel ( ... ) în cod). În acest din urmă caz, intrarea este întotdeauna adăugată la sfârșit, deoarece va exista un modul pentru sortarea alfabetică a șirurilor.

De asemenea, este important ca șirul $name, „trecut” prin handler-ul de parametri, să fie deja lipsit de caractere de marcare „critice” precum „, „,< и >, iar în matricea $a citită din fișierul de date, toate liniile sunt „ca atare”, iar 123 nu va fi găsit dacă $name s-a transformat în 123 după procesare. Prin urmare, funcției de căutare a înregistrărilor, pe care o numim get_index_by_name , i se transmite un șir convertit „înapoi” la forma sa originală folosind funcția standard htmlspecialchars_decode (disponibilă începând cu PHP 5.1). În aceeași formă, șirul este returnat înapoi la index.php prin matricea $_SESSION. Acest lucru va oferi o oarecare comoditate - după introducerea unei noi intrări, datele acesteia vor rămâne în formular și va fi posibil să introduceți o altă intrare, ușor diferită ca nume („Ivanova” după „Ivanov”).

Ei bine, întoarcerea de la modul la modul este absolut standard - prin funcția de antet standard. Amintiți-vă că poate fi folosit numai dacă modulul nu a scos încă nimic în browser.

fișier add.php

Acum despre editare, va fi implementat în edit.php. Formularul de editare este aproape același cu formularul de adăugare, am fost prea leneși să creăm o funcție separată pentru afișarea formularului. Mai important, modulul în sine va fi un procesor de date transmise prin intermediul formularului de editare și, prin urmare, trebuie să distingă situația când este doar apelat de cea în care utilizatorul a făcut clic pe „Salvare”. Ultima sarcină este verificarea

Dacă (!gol($_POST["trimite"]) && !gol($nume) && isset($număr) && isset($id)) (

determinând dacă butonul a fost apăsat și toate datele au fost transferate. A doua ramura -

Altfel, dacă (isset($a[$id])) (

este destinat situației în care există o intrare în matricea $a, al cărei număr este transmis scriptului și trebuie editat. Numărul de intrare este stocat într-un câmp HTML ascuns.

Fișier edit.php

Modulul de eliminare a înregistrărilor del.php va fi destul de simplu, tot ce are nevoie este să obțineți o înregistrare validă $id (numărul elementului din matricea $a), să eliminați elementul corespunzător din matrice, să rescrieți fișierul și să reveniți la modulul principal pagină.

Fișierul del.php

În cele din urmă, modulul de sortare sort.php va introduce o nouă problemă - cum să sortați șirurile Unicode alfabetic fără a face distincția între litere mari și mici? Sortarea „directă” folosind funcția de sortare standard nu este potrivită - consideră că o literă mică și o literă mare sunt caractere diferite. Nu am setat localitatea, mai ales că nu există un singur formular de intrare pentru toate sistemele de operare care să îl instaleze.

Să ne limităm la alegerea usort din întreaga varietate de funcții pentru sortarea matricelor cu o funcție personalizată pentru compararea elementelor.

Comparația „directă” folosită a șirurilor Unicode cu un singur caracter, se pare, nu este în întregime corectă, dar strcmp compară șirurile octet cu octet și nu este potrivită pentru noi, dar, în general, comparația este corectă oriceșirurile în Unicode este o sarcină foarte dificilă... Totul a funcționat pentru mine în sistemul pentru rusă și engleză, de exemplu, după sortare, am primit ordine de cuvinte naturale, cum ar fi

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

Fișier sort.php

Tot ce trebuie să facem este să creăm un fișier în folderul numit .htaccess , unde vom seta codarea implicită la Unicode și vom indica directivele de setare a ghilimelelor pentru site, deci...

În același folder, creați un fișier gol (0 octeți) data.txt (opțional dacă toate drepturile sunt configurate).

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

Poți vedea ce s-a întâmplat și să-mi spui despre problemele pe care le-ai găsit, am scris scenariul foarte repede, în 2 pași, și poate nu m-am gândit la ceva :)

Colecție de fragmente utile (coduri). Codurile sunt concepute pentru sarcini obișnuite atunci când editați sau creați o temă.

De obicei, tot acest cod ar trebui să fie plasat în fișierul functions.php al temei. Sau, puteți crea un fișier.php separat, plasați codul acolo și conectați fișierul la funcțiile.php ale temei astfel:

// conectați fragmente require_once "functions-snippets.php";

Aspect CSS pentru editorul TinyMCE

Conectează fișierul de stiluri la editorul WordPress TinyMCE. În acest fel, putem configura stiluri de editor în panoul de administrare și, atunci când edităm o postare, să vedem cum arată în front-end.

// Stiluri pentru editorul TinyMCE // Trebuie să creați un fișier „editor-styles.css” în folderul temă add_action(„current_screen”, „my_theme_add_editor_styles”); funcția my_theme_add_editor_styles() ( add_editor_style("editor-styles.css"); )

CSS pentru pagina de conectare

## CSS pentru pagina de autentificare ## Trebuie să creați un fișier „wp-login.css” în folderul temă add_action(„login_head”, „my_loginCSS”); funcția my_loginCSS() ( ecou ""; )

CSS pentru panoul de administrare

Include un fișier de stil pe toate paginile panoului de administrare. Astfel, puteți modifica și completa în mod convenabil stilurile panoului de administrare.

## Stiluri CSS pentru panoul de administrare. Trebuie să creați un fișier „wp-admin.css” în folderul temă add_action(„admin_enqueue_scripts”, „my_admin_css”, 99); funcția my_admin_css())( wp_enqueue_style("my-wp-admin", get_template_directory_uri() ."/wp-admin.css"); )

Eliminarea barei de administrare din front end

Bara de administrare poate împiedica atunci când tema utilizează blocuri fixe (plutitoare). În astfel de cazuri, uneori este mai ușor să eliminați această bară.

## Elimină bara de administrare din front end add_filter("show_admin_bar", "__return_false"); ## Activați suportul pentru widget. Adăugați o zonă pentru widget-uri if(function_exists("register_sidebar"))( register_sidebar(array("before_widget" => "", "after_widget" => "", "before_title" => "", "after_title" => "" , )); )

Activarea suportului pentru meniuri personalizate

Înregistrează o zonă (locație) pentru un meniu și activează suportul pentru meniu. După instalarea acestui cod în panoul de administrare, va fi posibil să creați meniuri personalizate și să le atașați zonelor create de acest cod. Într-un șablon de meniu, acesta este afișat de funcția wp_nav_menu().

## Adăugați meniuri personalizate register_nav_menus(array("main" => "Meniul principal", "in_footer" => "Meniul în subsol",));

Adăugarea de link-uri către fluxul RSS de postări și comentarii

Imagine de fundal personalizată sau fundal ## Permite posibilitatea de a seta o imagine de fundal din panoul de administrare add_theme_support("custom-background");

Ca rezultat, codul va scoate:

body.custom-background (culoare de fundal: #bdd96e; )

Includerea de coduri scurte în widgetul Text

Multe plugin-uri folosesc coduri scurte, dar nu toate au widget-uri. În acest caz, ar fi convenabil să utilizați codul scurt al pluginului în widgetul „Text”.

## Shortcodes în widgetul „Text” if(! is_admin())( add_filter(„widget_text”, „do_shortcode”, 11); )

Text aleatoriu implicit în câmpul de conținut din zona de administrare

Când creați o intrare nouă (postare sau pagină), uneori este convenabil să aveți câteva note acolo, explicând cum și ce să scrieți. Pentru a face acest lucru, puteți insera text implicit în conținut:

## Text implicit aleatoriu pentru editor add_filter("default_content", "writing_encouragement_func"); function writing_encouragement_func($content) ( global $post_type; // Texte pentru editor, tip post if($post_type == "post")( $array = array ("Un mesaj", "Un mesaj", ); return $ array[ array_rand($array) ]; ) // Texte pentru editor, post tip pagina else ( $array = array("Un mesaj", "Un mesaj",); return $array[ array_rand($array) ]; ) )

Modificarea numărului de intrări pe pagina de căutare

În mod implicit, pagina de căutare arată același număr de intrări pe pagină ca în altă parte, așa cum se stabilește în setări.

Acest exemplu arată cum să afișați 100 de înregistrări pe o pagină.

## modificați cantitatea de postări de pe pagina de căutare - setați aici la 100 add_action("pre_get_posts", "search_results_per_page_func"); function search_results_per_page_func($query) ( // interogare pe pagina de cautare if(! is_admin() && $query->is_main_query() && $query->is_search())( $query->set("posts_per_page", 100) ; ) returnează $interogare; )

Determină câte cuvinte ar trebui să fie într-un citat, care este de obicei afișat pe paginile arhivate ale postărilor (categorii, etichete). Citatul este scos de funcția_excerpt().

## Modificarea lungimii citatului add_filter("excerpt_length", "custom_excerpt_length_func"); function custom_excerpt_length_func($lungime) ( returneaza 20; // numarul de cuvinte )

Eliminarea câmpurilor dintr-un profil din panoul de administrare: AIM, Yahoo IM, Jabber ## elimină câmpuri din profil: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "remove_contactmethod"); funcția remove_contactmethod($contactmethods) ( unset($contactmethods["obiectiv"]); unset($contactmethods["jabber"]); unset($contactmethods["yim"]); return $contactmethods; ) Adăugarea de câmpuri la un profil în admin: facebook, twitter ## Adaugă câmpuri la profil: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "add_contactmethod"); function add_contactmethods($contactmethods) ( $contactmethods["twitter"] = "Twitter"; $contactmethods["facebook"] = "Facebook"; return $contactmethods; ) Adăugarea clasei has_sidebar la etichetă dacă există o bară laterală

Pentru ca acest hack să funcționeze, eticheta temă trebuie să folosească eticheta șablon body_class(), așa cum este de obicei.

## Adăugarea clasei `has_sidebar` la eticheta `` dacă există o bară laterală add_filter("body_class", "has_sidebar_func"); function has_sidebar_func($classes)( if(is_active_sidebar("sidebar"))( // adauga o clasa $classes = "has_sidebar"; ) returneaza $clase; )

Adăugarea unui widget la consolă

Uneori poate fi util să adăugați un widget în consola panoului de administrare pentru a plasa informații importante cu privire la subiectul curent.

## Widget personalizat în consola din panoul de administrare add_action("wp_dashboard_setup", "my_custom_dashboard_widgets"); function my_custom_dashboard_widgets() ( wp_add_dashboard_widget("custom_help_widget", "Theme Notes", "custom_dashboard_help"); ) function custom_dashboard_help() ( echo "

Bun venit la subiectul „Subiectul meu”! Iată câteva note pe această temă.";)

Primim acest widget:

Include un script de răspuns la comentarii

Acest script mută formularul de comentariu atunci când faceți clic pe butonul „Răspuns”.

## Conectarea scriptului de răspuns la comentariu add_action("wp_footer", "enable_threaded_comments"); funcția enable_threaded_comments())( if(is_singular() && comments_open() && get_option("thread_comments")) wp_enqueue_script("comment-reply"); )

Imagini Activați miniaturile postării

În mod implicit, postările nu au un bloc în care puteți seta o miniatură a postării. Pentru ca un astfel de bloc să apară, trebuie să fie activat. Trebuie să activați suportul pentru miniaturi. Acest lucru se face foarte simplu:

## Activarea miniaturilor postare add_theme_support("post-thhumbnails"); set_post_thumbnail_size(200, 200, true); // Miniaturi normale ale postărilor

Crearea unor dimensiuni intermediare suplimentare pentru miniaturi

Când încărcați o imagine, sunt create dimensiuni suplimentare pentru aceasta - miniaturi. Puteți adăuga cu ușurință propriile dimensiuni la cele de bază - cele arbitrare.

## Se creează dimensiuni intermediare pentru miniaturi if(function_exists("add_image_size"))( add_image_size("mysize-horizont", 300, 200, true); add_image_size("mysize-vertical", 400, 500, true); )

Pentru a obține dimensiunea înregistrată, utilizați funcția:

Adăugarea unei miniaturi la un flux RSS

Acest cod adaugă o miniatură a postării în partea de sus a fluxului RSS.

## Adăugarea unei miniaturi la fluxul RSS add_filter("the_excerpt_rss", "add_thumbnail_to_feed"); //add_filter("the_content_feed", "add_thumbnail_to_feed"); // de obicei, acest cârlig nu este folosit, dar poate fi și... function add_thumbnail_to_feed($content)( $img = get_the_post_thumbnail(null, array(100, 80), array("align" => "left", " stil" => "margin-dreapta:15px;")); $content = $img . $content; return $content; )

Anulați împachetarea imaginilor într-o etichetă

În conținut

Când se afișează conținut într-o temă folosind the_content() , funcția wpautop() este declanșată și, ca rezultat, dacă este pe o linie separată, se înfășoară

Acestea. a fost a devenit .

Acest exemplu arată cum să eliminați acest comportament ciudat.

## Anulați împachetarea imaginilor în eticheta `

` în conținut add_filter("the_content", "remove_img_ptags_func"); function remove_img_ptags_func($content)( return preg_replace("/

\s*((?:]+>)?\s* ]+>\s*(?:)?)\s*/i", "\1", $content); ) // Conectarea scriptului html5 pentru IE cu cdn add_action("wp_head", "IEhtml5_shim_func"); funcția IEhtml5_shim_func())( echo ""; // sau dacă aveți nevoie și de suport pentru imprimare // echo ""; )

Setați numărul maxim de revizuiri ale înregistrărilor

În mod implicit, numărul de revizuiri a înregistrărilor este nelimitat și acest lucru poate aglomera în mod inutil baza de date. Dezactivarea completă a revizuirilor nu este, de asemenea, cea mai bună soluție, deoarece se întâmplă ca la editarea unei înregistrări ceva să nu meargă bine și datele introduse să se piardă - treaba este la scurgere...

În mod ideal, limitați numărul de revizuiri, de exemplu la 5:

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

Constanta trebuie definită în plugin sau mai devreme.

Protecție Eliminarea versiunii WP

Acest lucru este necesar pentru ca hackerii să nu cunoască versiunea WP și să nu poată identifica punctele slabe. Odată cu acest cod, trebuie să ștergeți și fișierul readme.html din rădăcina site-ului, deoarece indică și versiunea curentă.

## Eliminarea completă a versiunii WP ## De asemenea, trebuie să ștergeți fișierul readme.html din rădăcina site-ului remove_action("wp_head", "wp_generator"); // din antetul add_filter("the_generator", "__return_empty_string"); // din fluxuri și adrese URL

Dezactivați mesajele de eroare de pe pagina de conectare

În cazul unei erori la introducerea unui login sau a unei parole, WP raportează exact ce a fost introdus incorect: autentificare sau parolă. Aceasta oferă informații suplimentare pentru cei care ghicesc parole.

Dezactivați posibilitatea de a edita fișiere în panoul de administrare pentru teme și pluginuri

Abilitatea de a edita fișiere direct din panoul de administrare poate deveni o mare gaură de securitate. Să-l închidem.

## Dezactivează posibilitatea de a edita fișiere în panoul de administrare pentru teme și pluginuri define("DISALLOW_FILE_EDIT", true);

Închideți publicația prin xmlrpc.php

În mod implicit, abilitatea de a publica postări prin fișierul xmlrpc.php este activată.

Aceasta este o oportunitate de a publica postări din exterior, de exemplu din e-mail... Cel mai adesea, această funcționalitate nu este necesară și pot exista posibile găuri în ea. Prin urmare, cel mai adesea este de dorit să-l dezactivați. Apropo, în versiunile anterioare ale WordPress această funcționalitate era dezactivată în mod implicit și trebuia activată pentru a o putea folosi.

## dezactivează abilitatea de a publica prin xmlrpc.php add_filter("xmlrpc_enabled", "__return_false");

Chiar și atunci când creați un site web personal, nu toată lumea poate prevedea toate modalitățile posibile de utilizare ulterioară a acestuia. Este foarte important să pregătiți terenul pentru dezvoltarea ulterioară a site-ului. Dacă ați creat un site web în trecut și ați atribuit în mod implicit extensia .html tuturor paginilor și abia atunci ați decis să utilizați PHP, atunci citiți mai departe.

Anterior, pentru a utiliza SSI, numele paginilor de site trebuiau să se termine cu extensia .shtml, dar astăzi majoritatea serverelor de Internet sunt configurate astfel încât SSI să poată fi folosit pe paginile cu extensia .html, ceea ce este destul de convenabil. PHP este o poveste complet diferită - extensia .php este extensia implicită. Dezvoltatorii de site-uri, știind în prealabil că un anumit limbaj de programare va fi folosit, atribuie imediat extensia corectă.

Dar ce să faci când toate paginile se termină cu extensia .html?

Înlocuiți extensia HTML cu PHP

Acest lucru se poate face în mai multe moduri. Cea mai evidentă modalitate este de a oferi tuturor paginilor o extensie .php sau de a modifica extensiile existente (.html, .shtml etc.). Această metodă are dezavantaje. De exemplu, paginile deja indexate cu extensia .html vor trebui să fie reindexate de motoarele de căutare. Sau și mai rău, toate link-urile externe care leagă în mod explicit la o anumită pagină vor fi invalide. Și va trebui să anunțați proprietarii fiecărui site despre aceste modificări și să creați o altă pagină cu 301 erori pentru fiecare pagină. Desigur, schimbarea unei extensii cu alta este acceptabilă, dar ce se întâmplă dacă site-ul are deja multe pagini și multe link-uri către pagini diferite de pe alte site-uri?

Dintr-un motiv conștient, în acest moment toate paginile acestui site se termină cu extensia html și nu am vrut să fac modificările de mai sus, creându-mi astfel dificultăți inutile.

O poți face altfel. Dacă serverul care găzduiește site-ul acceptă mod_rewrite (în cele mai multe cazuri o face) și există acces la fișierul .htaccess, atunci puteți adăuga următoarele rânduri la acest fișier:

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

Adăugând acest cod la .htaccess , nu trebuie să vă faceți griji. Toate paginile solicitate inexistente cu o extensie .html vor fi înlocuite automat cu o extensie .php datorită minunilor Apache. Dar această metodă nu este singura. Puteți scrie următoarele în același fișier .htaccess:

Aplicația AddHandler/x-httpd-php .php .html .htm

După părerea mea, cea mai reușită modalitate. Acest lucru face ca paginile HTML să fie egale cu paginile PHP, ceea ce înseamnă că toate funcțiile PHP pot fi acum utilizate în paginile cu extensie HTML. Dacă nu aveți acces la fișierul .htaccess, atunci puteți scrie o scrisoare companiei de găzduire și puteți cere politicos administratorilor să introducă valoarea necesară pentru site în configurația Apache (httpd.conf).

Apropo, dacă înainte de aceasta, site-ul a folosit SSI după cum urmează:

apoi, în noua stare PHP, acest cod trebuie înlocuit cu:

Ei bine, asta este tot, cred că una dintre metodele de mai sus vă va ajuta.