HTML-skjemaer. Fjerner WP-versjonen

HitmanPro oppdager, identifiserer og fjerner virus, spionprogrammer, trojanere, rootkits og annen skadelig programvare.

Verktøyet bruker sin egen atferdsanalyse- og filklyngeundersøkelsesmotor, samt nyskapende skyskanningsteknologi som bruker SophosLabs, Kaspersky og Bitdefender antivirusdatabaser. HitmanPro-skanneren oppdager og fjerner potensielt ondsinnede trusler med minimal innvirkning på systemytelsen.

* HitmanPro er en gratis antivirusskanner. Slettingsfunksjonen er tilgjengelig i 30 dager gratis.

Nøkkelfunksjoner i HitmanPro

Kan antivirusprogrammet ditt håndtere de siste truslene?

En ny kilde til skadelig programvare kan bli funnet hvor som helst, selv på pålitelige nettsteder. Disse truslene kan bruke ulike teknikker for å unngå antivirusbeskyttelse. HitmanPro er utviklet for å fungere med antivirusbeskyttelse og bruker dyp atferdsanalyse for å finne og nøytralisere nulldagstrusler – moderne trusler som prøver å unngå oppdagelse.

Atferdsdeteksjon + kollektiv erfaring

I stedet for å bruke signaturdefinisjoner for å identifisere skadelig programvare, undersøker HitmanPro oppførselen til hver fil for ondsinnet aktivitet. Denne tilnærmingen gir HitmanPro muligheten til å blokkere den siste lumske skadevare og virus før de identifiseres. HitmanPro kobler seg også til SophosLabs malware-database for å oppdage flere former for nye trusler og spore dem tilbake til kilden.

Ingen installasjon

HitmanPro tar opp 12 megabyte og krever ikke installasjon. Programmet kan startes direkte fra skrivebordet, USB-stasjonen, CD/DVD eller ekstern lagring. Selv om antiviruset ditt er kontrollert av skadelig programvare eller løsepengeprogramvare, vil HitmanPro fungere riktig og kunne oppdage og fjerne trusler.

Omfattende restaurering

HitmanPro lar deg fjerne vedvarende trusler som har fått fotfeste i operativsystemet og erstatter infiserte systemressurser med sikre, originale versjoner, samtidig som du fortsetter å blokkere gjeninfeksjonsforsøk.

Testpriser

Overføring av data gjennom $_SESSION-matrisen er tillatt én gang; de overførte dataene slettes umiddelbart. Dette kan være nyttig, for eksempel når du "returnerer" data som er lagt inn i en annen modul til et skjema.

Det er bra når alle tjenestefunksjonene er kombinert til én modul, som hovedmodulene kobler sammen gjennom require_once-direktivet. Vi vil kalle vår modul med tjenestefunksjoner function.php, og i tillegg til de nevnte trimall og magiske metodene, vil vi inkludere følgende funksjoner der:

  • read() - vil lese gjeldende database og returnere en rekke poster;
  • write($a) - vil skrive en rekke poster $a til en fil;
  • get_index_by_name ($a,$name) - vil søke etter den tilsvarende oppføringen ved navn $name og returnere nummeret (fra null) eller verdien -1 hvis oppføringen ikke blir funnet. Dette er nyttig for å skille mellom å legge til en ny oppføring og å redigere en eksisterende.

I tillegg vil funksjonsfilen inkludere konfigurasjonsfilen og starte økten - disse egenskapene kan være nødvendige av enhver modul som kobler den til.

Function.php-filen

Merk at lesefunksjonen i tillegg filtrerer postmatrisen fra tomme strenger (bare i tilfelle de generelt ikke skulle forekomme), og trimall vil først erstatte en hvilken som helst ikke-tom streng av skilletegn med et enkelt mellomrom (den andre preg_replace), og fjern deretter mulige ekstra skilletegn i begynnelsen og slutten av den gjenværende linjen (den første preg_replace).

Det er også en nyanse med lesefunksjonen når det gjelder kodekompatibilitet. Siden den eneste linjen inneholder en anonym funksjon, antas det at PHP-versjon ikke lavere enn 5.3 brukes. Om nødvendig, bytt ut koden nedenfor med en der filtreringsfunksjonen er navngitt eller ikke brukes i det hele tatt, som her:

Funksjon read () ( $str=@file_get_contents (FILENAME); $a=explode("\n",$str); return $a; )

Korrekt casting av Unicode-strengen til små bokstaver er også viktig (se mb_strtolower i koden). Vi bruker ikke lokalitet her.

Ser ut som det er på tide å skrive hovedfilen index.php. Han skal løse følgende oppgaver:

  • vise et skjema for å legge til en ny oppføring, som behandles av add.php-modulen;
  • ved siden av tilleggsskjemaet vil vi vise tilleggskommandoer - tømme skjemaet ved å "selvpåkalle" et skript uten parametere (knappen vil ikke fungere her, fordi den ikke overfører data til serveren) og en lenke for å få tilgang til postsorteringen modul kalt sort.php;
  • motta resultatene av arbeidet sitt fra andre moduler i form av en numerisk variabel $status og vise tilsvarende meldinger (array $status_msg). $statusverdien lik null vil bli akseptert som standard, den tilsvarer resultatet av en kort hjelp om programmets drift;
  • hvis databasen ikke er tom, vis postene og gi en overgang til redigering eller sletting.

For ikke å overbelaste tabellen med flere knapper og lenker, la oss klikke ved navn ved å gå til å redigere oppføringen ved å bruke edit.php-modulen, og klikke etter feltet "Nummer" vil tilsvare å slette en oppføring av del.php-modulen.

Slik ser det ut med noen få oppføringer lagt til:

Utseendet til skriptet "Mini-DB på en tekstfil"

index.php-fil

La oss nå gå videre til de manglende modulene. add.php ser ut til å ha en enkel jobb - hent $name og $number variablene fra index.php og skriv dem til en fil. Modulen må imidlertid kontrollere at ikke-tomme data sendes til den, og også være i stand til å skille situasjonen når et navn som allerede eksisterer i databasen legges inn fra oppføringen av en ny post (se om ($id>- 1) ( ... ) annet ( ... ) i koden). I sistnevnte tilfelle legges oppføringen alltid til på slutten, fordi det vil være en modul for å sortere strenger alfabetisk.

Det er også viktig at $name-strengen, "passert" gjennom parameterbehandleren, allerede er blottet for "kritiske" oppmerkingstegn som ", ",< и >, og i matrisen $a som er lest fra datafilen, er alle linjer "som de er", og 123 vil ikke bli funnet hvis $navn har blitt til 123 etter behandling. Derfor sendes postoppslagsfunksjonen, som vi kaller get_index_by_name , en streng konvertert "tilbake" til sin opprinnelige form ved å bruke standardfunksjonen htmlspecialchars_decode (tilgjengelig fra PHP 5.1). I samme form blir strengen returnert tilbake til index.php gjennom $_SESSION-matrisen. Dette vil gi en viss bekvemmelighet - etter å ha lagt inn en ny oppføring, vil dataene forbli i skjemaet, og det vil være mulig å legge inn en annen oppføring, litt annerledes i navn ("Ivanova" etter "Ivanov").

Vel, returen fra modul til modul er absolutt standard – gjennom standard header-funksjonen. Husk at den kun kan brukes hvis modulen ennå ikke har sendt ut noe til nettleseren.

add.php-fil

Nå om redigering, det vil bli implementert i edit.php. Redigeringsskjemaet er nesten det samme som tilleggsskjemaet, vi var rett og slett for late til å lage en egen funksjon for å vise skjemaet. Det som er viktigere er at selve modulen vil være en prosessor av data som overføres gjennom redigeringsskjemaet, og derfor må skille situasjonen når den bare kalles opp fra den da brukeren klikket "Lagre". Den siste oppgaven er å sjekke

If (!empty($_POST["send inn"]) && !empty($name) && isset($number) && isset($id)) (

avgjøre om knappen ble trykket og alle data ble overført. Andre gren -

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

er ment for situasjonen når det er en oppføring i $a-matrisen, hvor nummeret sendes til skriptet og det må redigeres. Oppføringsnummeret er lagret i et skjult HTML-felt.

Fil edit.php

Del.php-modulen for fjerning av poster vil være ganske enkel, alt den trenger er å få en gyldig post $id (elementnummer i $a-matrisen), fjerne det tilsvarende elementet fra matrisen, omskrive filen og gå tilbake til hovedmodulen side.

Fil del.php

Til slutt vil sorteringsmodulen sort.php introdusere et nytt problem - hvordan sortere Unicode-strenger alfabetisk uten å skille mellom store og små bokstaver? "Direkte" sortering ved bruk av standard sorteringsfunksjon er neppe egnet - den anser en liten og en stor bokstav som forskjellige tegn. Vi har ikke angitt lokaliteten, spesielt siden det ikke er et enkelt registreringsskjema for alle operativsystemer for å installere det.

La oss begrense oss til å velge usort fra hele utvalget av funksjoner for sortering av matriser med en tilpasset funksjon for å sammenligne elementer.

Den brukte "direkte" sammenligningen av Unicode-strenger med ett tegn, ser det ut til, ikke er helt korrekt, men strcmp sammenligner strenger byte-for-byte og er ikke egnet for oss, men generelt er sammenligningen riktig noen strenger i Unicode er en veldig vanskelig oppgave... Alt fungerte for meg i systemet for russisk og engelsk, for eksempel, etter sortering fikk jeg naturlige ordrekkefølger, som f.eks.

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

Fil sort.php

Alt vi trenger å gjøre er å lage en fil i mappen som heter .htaccess , der vi vil sette standardkodingen til Unicode og angi direktivene for å sette sitater for nettstedet, så...

I samme mappe oppretter du en tom (0 byte) fil data.txt (valgfritt hvis alle rettigheter er konfigurert).

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

Du kan se hva som skjedde og gi meg beskjed om problemene du fant, jeg skrev manuset veldig raskt, i 2 trinn, og jeg hadde kanskje ikke tenkt gjennom noe :)

Samling av nyttige utdrag (koder). Kodene er laget for vanlige oppgaver når du redigerer eller lager et tema.

Vanligvis bør all denne koden plasseres i temaets functions.php-fil. Eller du kan lage en separat.php-fil, plassere koden der og koble filen til temaets functions.php slik:

// koble snippets require_once "functions-snippets.php";

CSS-utseende for TinyMCE-redaktør

Kobler stilfilen til WordPress TinyMCE-editoren. På denne måten kan vi sette opp redaktørstiler i administrasjonspanelet og, når vi redigerer et innlegg, se hvordan det ser ut i grensesnittet.

// Stiler for TinyMCE-editoren // Du må lage en fil "editor-styles.css" i temamappen add_action("current_screen", "my_theme_add_editor_styles"); function my_theme_add_editor_styles() ( add_editor_style("editor-styles.css"); )

CSS for påloggingsside

## CSS for påloggingssiden ## Du må lage en fil "wp-login.css" i temamappen add_action("login_head", "my_loginCSS"); function my_loginCSS() ( ekko ""; )

CSS for admin panel

Inkluderer en stilfil på alle sidene i administrasjonspanelet. Dermed kan du enkelt endre og supplere stilene til administrasjonspanelet.

## CSS-stiler for administrasjonspanelet. Du må opprette en fil "wp-admin.css" i temamappen 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"); )

Fjerning av administrasjonslinjen fra grensesnittet

Administrasjonslinjen kan komme i veien når temaet bruker faste (flytende) blokker. I slike tilfeller er det noen ganger lettere å fjerne denne stangen.

## Fjerner Admin Bar fra grensesnittet add_filter("show_admin_bar", "__return_false"); ## Aktiver widgetstøtte. Legg til et område for widgets if(function_exists("register_sidebar"))( register_sidebar(array("before_widget" => "", "after_widget" => "", "before_title" => "", "etter_tittel" => "" , )); )

Aktiverer tilpasset menystøtte

Registrerer et område (sted) for en meny og aktiverer menystøtte. Etter å ha installert denne koden i administrasjonspanelet, vil det være mulig å lage egendefinerte menyer og legge dem til områdene som er opprettet av denne koden. I en menymal vises den av funksjonen wp_nav_menu().

## Legg til egendefinerte menyer register_nav_menus(array("main" => "Hovedmeny", "in_footer" => "Meny i bunnteksten",));

Legge til lenker til RSS-feeden for innlegg og kommentarer

Egendefinert bakgrunnsbilde eller bakgrunn ## Gjør det mulig å angi et bakgrunnsbilde fra administrasjonspanelet add_theme_support("custom-background");

Som et resultat vil koden sende ut:

body.custom-background ( bakgrunnsfarge: #bdd96e; )

Inkluderer kortkoder i tekst-widgeten

Mange plugins bruker kortkoder, men ikke alle har widgets. I dette tilfellet vil det være praktisk å bruke plugin-kortkoden i "Tekst"-widgeten.

## Kortkoder i "Tekst"-widgeten if(! is_admin())( add_filter("widget_text", "do_shortcode", 11); )

Tilfeldig tekst som standard i innholdsfeltet i administrasjonsområdet

Når du oppretter en ny oppføring (innlegg eller side), er det noen ganger praktisk å ha noen notater der, som forklarer hvordan og hva du skal skrive. For å gjøre dette kan du sette inn standardtekst i innholdet:

## Tilfeldig standardtekst for editoren add_filter("default_content", "writing_encouragement_func"); function writing_encouragement_func($content) ( global $post_type; // Tekster for redaktøren, posttype if($post_type == "post")( $array = array("Noen melding", "Noen melding", ); return $ array[ array_rand($array) ]; ) // Tekster for redaktøren, posttype side else ( $array = array("Noen melding", "Noen melding",); return $array[array_rand($array) ]; ) )

Endring av antall oppføringer på søkesiden

Som standard viser søkesiden samme antall oppføringer på siden som andre steder, som angitt i innstillingene.

Dette eksemplet viser hvordan du viser 100 poster på en side.

## endre antall innlegg på søkesiden - her settes til 100 add_action("pre_get_posts", "search_results_per_page_func"); function search_results_per_page_func($query) ( // spørring på søkesiden if(! is_admin() && $query->is_main_query() && $query->is_search())( $query->set("posts_per_page", 100) ;) returner $query;)

Bestemmer hvor mange ord som skal være i et sitat, som vanligvis vises på arkiverte sider med innlegg (kategorier, tagger). Sitatet skrives ut av funksjonen_excerpt().

## Endring av sitatlengden add_filter("excerpt_length", "custom_excerpt_length_func"); funksjon custom_excerpt_length_func($length) (retur 20; // antall ord)

Fjerning av felt fra en profil i administrasjonspanelet: AIM, Yahoo IM, Jabber ## fjerner felt fra profilen: 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; ) Legge til felt i en profil i admin: facebook, twitter ## Legger til felt i profilen: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "add_contactmethod"); function add_contactmethod($contactmethods) ( $contactmethods["twitter"] = "Twitter"; $contactmethods["facebook"] = "Facebook"; returner $contactmethods; ) Legge til has_sidebar-klassen til taggen hvis det er en sidebar

For at dette hacket skal fungere, må temataggen bruke body_class()-malkoden, som det er vanlig.

## Legge til `has_sidebar`-klassen til ``-taggen hvis det er et sidebar add_filter("body_class", "has_sidebar_func"); funksjon has_sidebar_func($classes)( if(is_active_sidebar("sidebar"))( // legg til en klasse $classes = "has_sidebar"; ) returner $klasser; )

Legger til en widget til konsollen

Noen ganger kan det være nyttig å legge til en widget i administrasjonspanelkonsollen for å plassere viktig informasjon om det aktuelle emnet.

## Egendefinert widget i konsollen i administrasjonspanelet 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 "

Velkommen til "Mitt emne"-emnet! Her er noen notater om emnet.";)

Vi får denne widgeten:

Inkludert et kommentarsvarskript

Dette skriptet flytter kommentarskjemaet når du klikker på "Svar"-knappen.

## Koble til kommentarsvarskriptet add_action("wp_footer", "enable_threaded_comments"); funksjon enable_threaded_comments())( if(is_singular() && comments_open() && get_option("thread_comments")) wp_enqueue_script("comment-reply"); )

Bilder Slå på innleggsminiatyrbilder

Som standard har ikke innlegg en blokk hvor du kan sette et innleggsminiatyrbilde. For at en slik blokk skal vises, må den være aktivert. Du må aktivere støtte for miniatyrbilder. Dette gjøres veldig enkelt:

## Aktiverer miniatyrbilder add_theme_support("post-thumbnails"); set_post_thumbnail_size(200, 200, true); // Normale innleggsminiatyrbilder

Opprette flere mellomstore miniatyrbildestørrelser

Når du laster opp et bilde, opprettes det flere størrelser for det - miniatyrbilder. Du kan enkelt legge til dine egne dimensjoner til de grunnleggende - vilkårlige.

## Opprette mellomstørrelser for miniatyrbilder if(function_exists("add_image_size"))( add_image_size("mysize-horizont", 300, 200, true); add_image_size("mysize-vertical", 400, 500, true); )

For å få den registrerte størrelsen, bruk funksjonen:

Legger til et miniatyrbilde i en RSS-feed

Denne koden legger til et innleggsminiatyrbilde øverst i RSS-feeden.

## Legge til et miniatyrbilde i RSS-feeden add_filter("the_excerpt_rss", "add_thumbnail_to_feed"); //add_filter("the_content_feed", "add_thumbnail_to_feed"); // vanligvis brukes ikke denne kroken, men den kan også være... function add_thumbnail_to_feed($content)( $img = get_the_post_thumbnail(null, array(100, 80), array("align" => "venstre", " style" => "margin-right:15px;")); $content = $img . $content; return $content; )

Avbryt innpakningen av bilder i en tag

I innhold

Når du viser innhold i et tema ved å bruke the_content() , utløses wpautop()-funksjonen og som et resultat hvis er på en egen linje, pakkes den inn

De. var ble til .

Dette eksemplet viser hvordan du fjerner denne merkelige oppførselen.

## Avbryt innpakningen av bilder i `-taggen

` i innhold add_filter("the_content", "remove_img_ptags_func"); funksjon remove_img_ptags_func($content)( return preg_replace("/

\s*((?:]+>)?\s* ]+>\s*(?:)?)\s*/i", "\1", $content); ) // Koble til html5-skriptet for IE med cdn add_action("wp_head", "IEhtml5_shim_func"); funksjon IEhtml5_shim_func())( echo ""; // eller hvis du også trenger utskriftsstøtte // echo ""; )

Angi maksimalt antall postrevisjoner

Som standard er antallet postrevisjoner ubegrenset, og dette kan unødvendig rote databasen. Å deaktivere revisjoner helt er heller ikke den beste løsningen, fordi det hender at når du redigerer en post, går noe galt og de innlagte dataene går tapt - jobben er i vasken...

Begrens gjerne antall revisjoner, for eksempel til 5:

If(! definert("WP_POST_REVISJONER")) define("WP_POST_REVISJONER", 5);

Konstanten må være definert i plugin eller tidligere.

Beskyttelse Fjerner WP-versjon

Dette er nødvendig slik at hackere ikke kjenner WP-versjonen og ikke kan identifisere svake punkter. Sammen med denne koden må du også slette readme.html-filen i roten til nettstedet, fordi den også indikerer gjeldende versjon.

## Fullstendig fjerning av WP-versjon ## Du må også slette readme.html-filen i roten til nettstedet remove_action("wp_head", "wp_generator"); // fra overskriften add_filter("the_generator", "__return_empty_string"); // fra innmatinger og URL-er

Deaktiver feilmeldinger på påloggingssiden

Ved feil ved inntasting av pålogging eller passord, rapporterer WP nøyaktig hva som ble skrevet inn feil: pålogging eller passord. Dette gir tilleggsinformasjon for passordgjettere.

Deaktiver muligheten til å redigere filer i administrasjonspanelet for temaer og plugins

Muligheten til å redigere filer direkte fra administrasjonspanelet kan bli et stort sikkerhetshull. La oss lukke den.

## Deaktiver muligheten til å redigere filer i administrasjonspanelet for temaer og plugins define("DISALLOW_FILE_EDIT", true);

Lukk publikasjonen via xmlrpc.php

Som standard er muligheten til å publisere innlegg via xmlrpc.php-filen aktivert.

Dette er en mulighet til å publisere innlegg utenfra, for eksempel fra e-post... Oftest er denne funksjonaliteten ikke nødvendig og det kan være potensielle hull i den. Derfor er det oftest ønskelig å deaktivere den. Forresten, i tidligere versjoner av WordPress var denne funksjonaliteten deaktivert som standard og måtte aktiveres for å kunne bruke den.

## deaktiver muligheten til å publisere via xmlrpc.php add_filter("xmlrpc_enabled", "__return_false");

Når du oppretter selv et personlig nettsted, kan ikke alle forutse alle mulige måter for videre bruk. Det er svært viktig å forberede grunnen for videre utvikling av området. Hvis du har opprettet et nettsted tidligere og tildelt .html-utvidelsen til alle sider som standard, og først da bestemte deg for å bruke PHP, så les videre.

Tidligere, for å bruke SSI, måtte nettstedssidenavn slutte med .shtml-utvidelsen, men i dag er de fleste Internett-servere konfigurert slik at SSI kan brukes på sider med .html-utvidelsen, noe som er ganske praktisk. PHP er en helt annen historie - .php-utvidelsen er standardutvidelsen. Nettstedsutviklere, som på forhånd vet at et gitt programmeringsspråk vil bli brukt, tildeler umiddelbart riktig utvidelse.

Men hva skal jeg gjøre når alle sider slutter med .html-utvidelsen?

Erstatt HTML-utvidelsen med PHP

Dette kan gjøres på flere måter. Den mest åpenbare måten er å gi alle sider en .php-utvidelse eller endre eksisterende utvidelser (.html, .shtml, etc.). Denne metoden har ulemper. For eksempel vil allerede indekserte sider med .html-utvidelsen måtte indekseres på nytt av søkemotorer. Eller enda verre, alle eksterne lenker som eksplisitt lenker til en bestemt side vil være ugyldige. Og du må varsle eierne av hvert nettsted om disse endringene og opprette en ny side med 301-feil for hver side. Selvfølgelig er det akseptabelt å endre en utvidelse til en annen, men hva om nettstedet allerede har mange sider og mange linker til forskjellige sider fra andre nettsteder?

Av en bevisst grunn slutter for øyeblikket alle sidene på dette nettstedet med html-utvidelsen, og jeg ønsket ikke å gjøre endringene ovenfor, og dermed skape unødvendige vanskeligheter for meg selv.

Du kan gjøre det på en annen måte. Hvis serveren som er vert for nettstedet støtter mod_rewrite (i de fleste tilfeller gjør den det), og det er tilgang til .htaccess-filen, kan du legge til følgende linjer i denne filen:

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

Ved å legge til denne koden i .htaccess trenger du ikke å bekymre deg. Alle forespurte ikke-eksisterende sider med en .html-utvidelse vil automatisk erstattes med en .php-utvidelse takket være Apaches underverker. Men denne metoden er ikke den eneste. Du kan skrive følgende i den samme .htaccess-filen:

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

Etter min mening den mest vellykkede måten. Dette gjør HTML-sider lik PHP-sider, noe som betyr at alle PHP-funksjoner nå kan brukes på sider med HTML-utvidelse. Hvis du ikke har tilgang til .htaccess-filen, kan du skrive et brev til vertsselskapet og høflig be administratorene om å angi den nødvendige verdien for nettstedet i Apache-konfigurasjonen (httpd.conf).

Forresten, hvis siden før dette brukte SSI som følger:

så i den nye PHP-tilstanden må denne koden erstattes med:

Vel, det er alt, jeg tror en av metodene ovenfor vil hjelpe.