Bruker PHP på sider med html-utvidelsen. Skjema i layouten din Slik leser du html-side php

Jeg prøver å lage et påloggingsskjema. Dette er HTML-skjemakoden min

Personlig fikk jeg den for PUD.

Punkt 4 og 5

$password = mysql_real_escape_string(stripslashes(md5($_POST["passord"])));

For det første er rekkefølgen på dette feil. Du hash $_POST["passord"] og deretter prøver å bruke skråstreker - etter dens hashes vil ikke ha noen skråstreker. Men hvis du prøver å hindre folk i å bruke skråstreker (eller noe annet) i passord, må du fjerne dem før du hash strengen.

Følgende md5 bør ikke brukes som en passordhashingalgoritme, som har vist seg å være svak og kan være brute force for å lage strengkollisjoner mye oftere enn nødvendig.

Ja du lagre hasher eller "fingeravtrykk" av passord, ikke selve passordene, men ideelt sett vil du salte og hash (med minst sha1) disse passordene, i stedet for bare å kaste dem inn i md5()-funksjonen.

Og søk etter "passordhash-innstilling" ved å bruke søkemotoren du ønsker.

Punkt 6

VELG ID FRA $table WHERE brukernavn = "" . $brukernavn. "" og passord = "" . $password. "";

Jeg la til = som manglet fra det opprinnelige spørsmålet, men det er det samsvarte ikke med brukernavnet og passordet i forespørselen din...hvis noen klarte å få en SQL-injeksjon i brukernavnet ditt, vil passordet aldri bli bekreftet. Introdusere:

VELG bruker.id FRA bruker HVOR bruker.brukernavn = "fred" ELLER 1 = 1 -- OG bruker.passord = "abc123"

Det er bedre å velge fingeravtrykksbruker-ID og passord fra databasen og deretter evaluere passordet i applikasjonen i stedet for å stole på passordverifiseringen på databasenivå. Dette betyr også at du kan bruke en spesiell hash- og saltingalgoritme i selve appen for å bekrefte passordene dine.

Punkt 7

$_SESSION["bruker"] = $_POST["brukernavn"];

Er det bare å lagre brukernavnet i økten? Dette bør ikke brukes som en "påloggingsverifikator" på noen måte, spesielt hvis det (tilsynelatende) ikke er noe på økten din som forhindrer kapring.

Sesjons-IDen kan enkelt snus fra informasjonskapselen i sanntid, og det er alt som kreves for å "låne" andres brukernavn. Du bør i det minste prøve å redusere sannsynligheten for øktkapring ved å assosiere brukerens IP-adresse, UserAgent-streng eller en annen kombinasjon av relativt statiske data som kan sammenlignes med hver side... det er imidlertid ulemper med nesten enhver tilnærming (spesielt , som jeg allerede har funnet, hvis du har besøkende som bruker AOL), men du kan gjøre en mulig 99 % effektiv fingeravtrykksøkt mulig for å redusere kapring med en veldig liten sjanse for at brukerens økt vil bli tilbakestilt ved en feiltakelse.

Ideelt sett kan du også lage et økttoken for å redusere CSRF-angrep når brukeren trenger å utføre en "privilegert" handling på databasen (oppdatere sine data eller noe annet). Tokenet kan være en helt tilfeldig og unik kode lagret i en database og/eller kjeks SSL når brukeren logger på (forutsatt at brukeren ikke kan utføre noen handlinger som oppdaterer databasen utenfor HTTPS, da dette ganske enkelt vil overføre dataene i klartekst over Internett - som vil være dårlig ide).

Tokenet plasseres i et skjult skjemafelt for alle/alle skjemaer og kontrolleres mot verdien som er lagret i informasjonskapselen (eller økten eller databasen) når skjemaet sendes inn. Dette sikrer at personen som sender inn skjemaet i det minste vil ha en live-økt på nettstedet ditt.

Det kan være flere problemer.

For det første, i $match-setningen din mangler du passordlikestillingsoperatoren:

$match = "VELG ID FRA $table WHERE brukernavn = "".$brukernavn."" og passord"".$password."";";

Bør være:

$match = "VELG ID FRA $table WHERE brukernavn = "".$brukernavn."" og passord = "".$passord."";";

for det andre, setter du inn passordet i databasen etter dens bruk med md5?

Hvis ikke, prøver forespørselen din å matche md5 (passord) med passordet.

Når du oppretter selv et personlig nettsted, kan ikke alle sørge for alt mulige måter dens videre bruk. Det er svært viktig å forberede grunnen for videre utvikling av området. Hvis du har opprettet et nettsted tidligere og tildelt alle sidene .html-utvidelsen 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. Nettstedutviklere vet på forhånd hva som skal brukes gitt språk programmering, er rhinestone tildelt riktig forlengelse.

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 søkemotorer. Eller enda verre - alt Eksterne linker, som eksplisitt lenker til en bestemt side vil være ugyldig. 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 dette øyeblikket alle sidene på dette nettstedet slutter 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 å registrere seg i Apache-konfigurasjoner(httpd.conf) den nødvendige verdien for nettstedet.

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.

PHP er et innebygd programmeringsspråk på serversiden. Mye av syntaksen er lånt fra C, Java og Perl. Og også lagt til et par unike egenskaper kun for PHP-funksjoner. Hovedformålet med dette språket er å lage dynamisk genererte PHP HTML-sider.

PHP til HTML

Når du lager komplekse nettsider, vil du bli møtt med behovet for å kombinere PHP og HTML for å utføre spesifikke oppgaver. Ved første øyekast kan dette virke komplisert, siden PHP og HTML er to uavhengige disipliner, men det er ikke slik. PHP er designet for å samhandle med HTML, og koden kan inkluderes i sidemarkering.

PHP-kode er inkludert i HTML-sider ved hjelp av spesielle tagger. Når en bruker åpner en side, behandler serveren PHP-koden og sender deretter resultatet av behandlingen (ikke PHP-kode) til nettleseren.

HTML og PHP er ganske enkle å kombinere. Enhver del av et PHP-skript utenfor taggerignoreres av PHP-kompilatoren og sendes direkte til nettleseren. Hvis du ser på eksemplet nedenfor, kan du se at et komplett PHP-skript kan se slik ut:

Hei i dag.

Koden ovenfor er ren HTML med litt PHP-snutt hvilke utganger dagens dato ved hjelp av den innebygde datofunksjonen. I dette tilfellet vil all HTML bli ignorert av PHP-kompilatoren og overført til nettleseren uendret.

Å integrere PHP i HTML er veldig enkelt. Husk at et script er en HTML-side med noe PHP-kode inkludert. Du kan lage et skript som bare inneholder HTML (ingen tagger), og det vil fungere bra.

Mer avanserte metoder:

  • Menyelement

og resultatet:

PHP til HTML ved hjelp av short_open_tag

Hvis du trenger å gjøre koden så kort som mulig før du setter inn HTML i PHP, kan du bruke short_tags. Som et resultat trenger du ikke gå innshort_tags"Med" Av"på" ". Selv om de fleste servere allerede har dette alternativet aktivert, er det alltid best å sjekke dette manuelt. Et problem som kan oppstå ved bruk av korte tagger er en konflikt ved bruk av XML. I XML-syntaksuttrykk

PHP til HTML ved hjelp av short__tag

Hei, i dag er det.

Husk at hvis du vil lage et nettsted som er kompatibelt med så mange plattformer som mulig, bør du ikke stole på short_tags når du setter inn PHP i HTML.

HTML til PHP ved hjelp av ekko

En annen måte å integrere HTML i en PHP-fil er kommandoen echo:.

Dette vil påvirke markup-utheving i de fleste redaktører. Derfor er det nødvendig å velge alt doble anførselstegn inne i HTML-kode ved hjelp av en omvendt skråstrek.

PHP til HTML - filutvidelser

For en standard konfigurert webserver:

AddHandler cgi-script .html .htm

For en webserver som kjører FastCGI:

AddHandler fcgid-script .html .htm

HTML til PHP

Du kan også bruke HTML-kode i PHP-skript. Alt du trenger å gjøre er når du åpner en side med PHP, endre rekkefølgen på sidene som åpnes HTML-tagger og PHP.

Bruke HTML i PHP:

Personlig informasjon

Fornavn:
Etternavn:
"; ?>

Ved å sette inn PHP i HTML på denne måten kan du bruke mye mindre kode. Her bruker vi $PHP_SELF globalt, som lar feltverdiene spesifisert under dem brukes i samme fil. Vanligvis opprettes to filer for slike skjemaer: den første er selve HTML-skjemaet, og den andre er PHP-filen som utfører behandlingen.

Hvis du allerede har komplekse PHP-applikasjoner som bruker et stort antall filer og ønsker å forenkle, kan denne metoden hjelpe.

Denne publikasjonen er en oversettelse av artikkelen "PHP i HTML", utarbeidet av det vennlige prosjektteamet

>

Php for nybegynnere

På denne siden vil vi prøve å forklare logikken i å bygge et dynamisk nettsted. Php er et server-utført skript. Hva betyr dette? Serveren har en spesiell tolk installert som forstår visse språkkonstruksjoner. Selve php-filen, den leser den linje for linje, som om den går gjennom den fra topp til bunn. Hvis den finner for eksempel ordet exit, så stopper den og leser ikke noe videre, men utfører for eksempel det den fant før dette ordet skrive ut"Flott!" Vil skrive ut Flott!

skrive ut"Flott!";
exit ;
?>

Dette er den enkleste php-filen, men faktisk må du i praksis forholde deg til en kompleks php-fil. Det er mange sider på siden, vi har for tiden 24 tusen, vi må skrive like mange php-filer, eller bare html-filer. Men php lar deg gjøre alt dette i en kjørbar fil. Det vil si at vi må organisere lenker i selve filen som, hvis dette - gjør det, hvis det - gjør det. Php lar deg organisere lenker veldig bra. Den generelle ordningen er:

Du ser i manuset at avdelinger liker
hvis da)
så gjør vi det
}

Så hva skjedde hvis den første betingelsen var oppfylt, altså $uslovie 1== "ja", så kjører vi skriptet i parentes ( ) som er relatert til denne delen av skriptet, så i denne delen er det exit– her avsluttes programmet. Det vil si at vi ved hjelp av rom kan dele opp en php-fil i dens komponentdeler. Og hva er tilstanden - if($uslovie == "ja")??? Dette nettverket er den samme koblingen, i dette tilfellet vil noe bli utført hvis variabelen $uslovie vil være lik ja.

La oss gi filen et navn all.php. For å organisere lenker til den på kommandolinjen, legg til all.php?uslovie=ja. Hvis du ser et spørsmålstegn på kommandolinjen, så er dette koblingen i dette tilfellet, $uslovie == "ja". Deretter vil vi lage en html-fil der vi skal skrive lenker til vårt kjørbare skript.



Ny side


uslovie1=ja" >Første lenke
uslovie2=ja" >Andre lenke

Du ser to lenker. Hvis du klikker på lenkene, vil filen bli utført all.php, og i det første tilfellet vil skriptet bli fortalt at variabelen $uslovie 1== ja, og i det andre tilfellet, $uslovie 2== ja. Fra den første lenken det første rommet vil bli ferdigstilt og programmet vil stoppe, ved å bruke den andre lenken vil programmet kjøre gjennom det første rommet og noe fra det andre rommet vil bli oppfylt(se ovenfor). Vær oppmerksom på at dollartegnet ikke er skrevet i lenkene; programmet gjør dem til variabler når de overføres til skriptet, det vil si når de overføres til kommandolinjen.

Nå vet vi hvordan man organiserer lenker til en php-fil, hvordan man deler den inn i seksjoner og hvordan man organiserer lenker i html-tekst til filen vår. Men, det er en ting til... Faktum er at hvis du organiserer nettstedet på denne måten, vil du ikke se problemer i sin opprinnelige form, når det ikke er veldig mange linker. La oss si at det er 10 rom, alle vil passe stille inn i én fil. Men hvis det er mange lenker, for eksempel har vi 24 000 sider, så er det i prinsippet umulig å få plass til alle seksjonene i én php-fil. Du vil selv bli torturert ved å søke etter dette eller det rommet i én fil for for eksempel å endre det. I tillegg vil filen være veldig stor, vår all.php vil ta opp 1 MB. I tillegg må du forstå en ting til: på mange servere er det en grense for størrelsen på kjørbare filer (for eksempel 50Kb); hvis den overskrides, blir en slik fil ignorert og ikke utført. I forbindelse med disse beregningene reduserte vi størrelsen på hovedfilen til 8Kb, selv om den har en utførelsesbelastning på 1MB. Hvordan gjøre dette? Php gir en utmerket mulighet til å dele en php-fil i biter ved å bruke kommandoen inkludert....

Nå blir det klart hvordan vi reduserte hovedfilen vår til 8Kb, fordi alle andre inkluderte filer har en total størrelse på 1 MB, og vi gjemte dem i en egen mappe og kobler dem til etter behov, det vil si avhengig av koblingene i kommandoen linje. Inkluder-kommandoen kobler filer som om de var skrevet i hovedskriptet, derfor, hvis du i de innsatte filene vil få tilgang til databaser eller html-filer, må tellingen utføres nøyaktig fra hovedfilen, i vårt tilfelle all.php. For eksempel er det en mappe html, inneholder den en fil one.htm hvordan du skriver det ut. Da ser one.php-filen slik ut:

inkludere"html/one.htm";
skrive ut
exit ;
?>

Vi har skrevet ut innholdet one.htm, pluss trykt Dette er den første delen av programmet, og stoppet programmet. Det vil si, basert på html-teori, må vi inkludere filen one.htm Så: inkludere "../html/one.htm", siden mappen html ligger ett nivå over filen one.php. Men i php er dette ikke tilfelle, include-kommandoen legger ganske enkelt til kode til skriptet og det blir en integrert del av det, noe som betyr at alle lenker telles i forhold til hovedfilen, og ikke de inkluderte.



Ny side


uslovie1=ja" >Bare første lenke
uslovie1=ja& handling=ja" >
uslovie2=yes" >Bare andre lenke
uslovie2=ja& handling=ja" >Andre lenke, men også handle=ja

Deretter php-fil one.php transformer det til dette:

hvis($act == "ja")(
inkludere"html/one.htm";
exit ;
}
skrive ut"Dette er den første delen av programmet";
exit ;
?>

Hvis du klikket på lenken uslovie1=yes" >Simply First link, vil bli skrevet ut Dette er den første delen av programmet, hvis du klikket på lenken uslovie1=ja& handling=yes" >Den første lenken, men også act=yes, så vil innholdet i filen bli skrevet ut html/one.htm, og programmet vil stoppe.

403 KB

Last ned arkivet, det er laget på en slik måte at du ikke trenger å kunne Php, du trenger bare å kunne HTML.

Ja.))

Det ville vært lettere for meg å lage en kopi av index.php og gi det nytt navn, for eksempel til contact.php, og deretter endre midten til middle2 med nytt innhold.

Kettle Jeg er litt php


Jeg forstår fortsatt ikke.
Jeg har en nettside.
indeksfil i roten. I en annen mappe er det filer øverst i midten for eksempel.

Det er en meny. Jeg vil at en annen midtdel skal vises når du klikker på et menyelement.

Hvordan gjør man dette, og hvor skal man sette det???

Svar: Vel, hvor som helst. Det er veldig enkelt, det handler om å lage et menyskript menus.html


noe uten en matrise $_GET ["uslovie"] ; Eksemplene dine fungerer ikke for meg

Svar: støtte for globale variabler er deaktivert på serveren din, i så fall kan du sette linjen i begynnelsen av alle skriptene dine

hvis (isset($_GET )) ( for hver($_GET som $key =>$val ) ( $$key =$val ; ) )

så kan du bruke skriptene våre uten å bruke $_GET [ "uslovie" ] , men bare legg inn $uslovie


Ganske interessant ressurs du har..
Takk for infoen.

Svar:


Du har lenge lovet å se nærmere på hvordan et PHP-nettsted er opprettet. Hvorfor holdt du ikke løftet ditt? Kanskje du kan skrive en artikkel om dette emnet (og hvis du også bruker MySQL, vil alt gå bra).

Svar:


Veldig ja. Bare, der er det, i stedet for too.htm trenger du sannsynligvis to.htm
Ikke nødvendig, men for å holde orden))

Svar:


Fortell meg hvor jeg kan lese og lære utenat alle operatører og PHP-koder, for eksempel: ekko , inkludere , ellers , hvis , skrive ut , for hver , isset osv., hva betyr de og hva tjener de?

Svar: Alexander, jeg var på ferie i en måned, pluss at jeg for tiden fullfører en ny versjon av hele nettstedet. Så snart jeg er ferdig skal jeg lage en liten side om dette.


Mobilesfinks, mens jeg gjorde meg klar til å reinstallere php 4, hadde en ny versjon av siden i php 5 allerede blitt utgitt. Og det var ingen problemer, alt fungerte %tashus%

Svar:


Hallo!

Fortell meg hvordan jeg endrer TITTEL øverst i vinduet på hver side: det vil si " Ny side" ...

Hvis du for eksempel følger lenken "1", så skal vinduet hete "Første seksjon. Matematikk" - det vil si at HTML-koden skal være Første del. Matematikk...
Og hvis lenken er "2", for eksempel, skal vinduet hete "Andre seksjon. Geografi" - det vil si at HTML-koden skal være Andre seksjon. Geografi...

Hvordan kan jeg få det til å endres ved hjelp av PHP?

Svar: html.html


Vi må installere PHP4 for Denver. Installasjonsskriptet vil gjøre alle endringene selv.
Så i mappen der du har all.php-filen du oppretter
en fil kalt ".htaccess" og legg til en linje i den
Side: 1
Nåværende side: 1 Totalt antall meldinger: 22

Mange lesere i enhver bok om datamaskiner skumles over alt som ikke er av umiddelbar interesse og går videre til det de virkelig trenger. ønsker vet. Personlig er det det jeg gjør. Det er imidlertid ikke noe galt med det – det er sjelden tekniske bøker som må leses fra perm til perm. Eller kanskje det var det du gjorde - hoppet over de første åtte kapitlene og plukket opp dette kapittelet fordi det hadde den mest interessante tittelen? Og hvem vil kaste bort tid på detaljer når et annet prosjekt brenner på jobben?

Heldigvis vil en slik hast ikke hindre deg i å mestre materialet i den andre delen av boken, som er viet til å bruke PHP til å bygge nettsteder og samhandle med nettet. I dette kapittelet lærer du hvordan du enkelt kan endre innholdet på nettsider og navigere på nettet ved hjelp av lenker og ulike standardfunksjoner. Det neste kapittelet vil utfylle materialet som presenteres - det undersøker i detalj midlene for interaksjon med brukeren i HTML-skjemaer Kapittel 11 beskriver organiseringen av grensesnittet med databaser. De resterende kapitlene i den andre delen diskuterer ikke-trivielle aspekter ved webprogrammering i PHP.

Imidlertid bør det huskes at materialet i del 1 absolutt nødvendig for normal kunnskap om PHP. Det antas at du allerede har lest del 1, så eksemplene vil bruke mange av begrepene beskrevet tidligere. Så hvis du blar gjennom deler av boken, må du fra tid til annen gå tilbake til tidligere kapitler og ta igjen.

Enkle lenker

<а href = "date.php">

$link = "date.php";

skrive ut "<а href = \"$link\">Se dagens dato
\n"

Du lurer sikkert på hvorfor det er en omvendt skråstrek (\) før anførselstegnene (") i lenkekoden? Faktum er at anførselstegn i PHP er spesialtegn og brukes som linjeskilletegn. Derfor må anførselstegn er bokstavelig i strenger skjermes .

Hvis det irriterer deg å unnslippe sitater, aktiver ganske enkelt magic_quotes_gpc-modusen i php.ini-filen din. Resultatet er alle apostrof, sitater, skråstreker og nulltegn. blir automatisk escaped i teksten!

La oss utvikle det gitte eksemplet. For raskt å vise en liste over koblinger i nettleseren, kan du bruke en matrise:

// Lag en rekke seksjoner

$contents - array("veiledninger", "artikler", "skript", "kontakt");

// Iterer gjennom og vis sekvensielt hvert element i matrisen

for ($i = 0; $i< sizeof($contents; $i++)

skrive ut " ".$contents[$i]."
\n";

// - spesiell betegnelse for markør punkt endfor;

Filkomponenter (maler)

Vi har kommet til en av mine favoritt PHP-funksjoner. En mal (i forhold til webprogrammering) er en del av et webdokument som du skal bruke på flere sider. Maler, som PHP-funksjoner, sparer deg for unødvendig kopiering/liming av sideinnhold og programkode. Etter hvert som omfanget av nettstedet øker, øker betydningen av maler, siden de tillater enkle og raske modifikasjoner på hele nettstedet. Denne delen vil beskrive noen av mulighetene som åpner seg ved bruk av enkle maler.

Vanligvis lagres vanlige deler av innhold/kode (dvs. maler) i separate filer. Når du bygger et nettdokument, "inkluderer" du disse filene på de riktige stedene på siden. I PHP er det to funksjoner for dette: include() og require().

inkluderer() og krever()

En av de mest fremragende aspektene ved PHP er muligheten til å bygge maler og programmeringsbiblioteker og deretter sette dem inn i nye skript. Å bruke biblioteker sparer tid og krefter ved å bruke felles funksjonalitet på tvers av ulike nettsteder. Lesere med

oppleve programmering på andre språk (som C, C++ eller Java), og er kjent med konseptet funksjonsbiblioteker og deres bruk i programmer for å utvide funksjonaliteten.

Inkludering av en eller flere filer i et skript gjøres ved å bruke standard PHP-funksjonene require() og include(). Som det vil bli vist i neste avsnitt, gjelder hver av disse funksjonene i en spesifikk situasjon.

Funksjoner

Det er fire funksjoner i PHP for å inkludere filer i PHP-skript:

  • inkludere();
  • inkludere_en gang();
  • krever();
  • require_once().

Til tross for likheten mellom navn, løser disse funksjonene forskjellige problemer.

Inkluder()-funksjonen inkluderer innholdet i en fil i skriptet. Syntaksen for include()-funksjonen er:

inkludere(fil fil]

Funksjonen include() har en interessant funksjon - den kan utføres betinget. For eksempel hvis et funksjonskall er inkludert i en if-kommandoblokk. da er filen inkludert i programmet bare hvis betingelsen i f er sann. Hvis includeO-funksjonen brukes i en betinget kommando, så er den være omsluttet av krøllete seler eller alternative skilletegn. Sammenlign forskjellene i syntaks mellom oppføringer 9.1 og 9.2.

Oppføring 9.1. Feil bruk av include()

hvis (noen_betinget)

include("text91a.txt"); ellers

include("tekst91b.txt");

Oppføring 9.2. Riktig bruk av include()

if (noen_betinget) :

include("text91a.txt");

include("tekst91b.txt");

All PHP-kode i include-filen Nødvendigvis ligger i PHP-tagger. Ikke anta at bare å lagre en PHP-kommando i en fil vil sikre at den blir behandlet riktig:

I stedet må du pakke inn kommandoen i passende tagger, som følgende eksempel viser:

print "dette er en ugyldig inkluderingsfil";

Funksjonen include_once() gjør det samme som include(), med ett unntak: før den inkluderer en fil i programmet, sjekker den om den allerede er inkludert. Hvis filen allerede er inkludert, ignoreres include_once()-kallet, og hvis ikke, oppstår standardfilinkluderingen. I alle andre henseender er include_once() ikke forskjellig fra include(). Syntaksen for include_once()-funksjonen er:

include_once(filfil)

Generelt ligner require()-funksjonen på include() - den inkluderer også malen i filen der require()-kallet er plassert. Syntaksen for require()-funksjonen er:

kreve (filfil)

Imidlertid er det en viktig forskjell mellom funksjonene require() og include(). Filen spesifisert av require() er inkludert i skriptet uavhengig av plasseringen til require() i skriptet. For eksempel, hvis du kaller requi re() i en if-blokk, hvis betingelsen er usann, vil filen fortsatt være inkludert i skriptet!

I mange situasjoner er det praktisk å lage en fil med variabler og annen informasjon som brukes på hele siden, og deretter inkludere den etter behov. Selv om navnet på denne filen er vilkårlig, kaller jeg den vanligvis init.tpl (forkortelse for "initialisaion.template"). Oppføring 9.3 viser hvordan en veldig enkel init.tpl-fil ser ut. I oppføring 9.4 er innholdet i init.tpl inkludert i skriptet med require().

Oppføring 9.3. Eksempel på en initialiseringsfil

$site_title = "PHP-oppskrifter";!}

$contact_email = " [e-postbeskyttet]";

$contact_name = "WJ Gilmore";

Oppføring 9.4. Ved å bruke filen init.tpl

<? print $site_title; ?>

\"mai1 to:$contact_email\">$contact_name."; ?>

Å sende en URL når du ringer require() er bare tillatt hvis "URL fopen wrappers"-modus er aktivert (denne modusen er aktivert som standard).

Ettersom størrelsen på nettstedet øker, kan det vise seg at noen filer er inkludert i skriptet flere ganger. Noen ganger forårsaker ikke dette et problem, men i noen tilfeller fører inkludert filen igjen til at verdiene til de endrede variablene tilbakestilles. Hvis include-filen definerer funksjoner, kan det oppstå navnekonflikter. Når det er sagt, kommer vi til neste funksjon - require_once().

Funksjonen require_once() sikrer at filen bare er inkludert i skriptet én gang. Når requi re_once() kalles, ignoreres alle ytterligere forsøk på å inkludere den samme filen. Syntaksen til require_once()-funksjonen er:

Du vil sannsynligvis begynne å bruke funksjoner for filinkludering oftere etter hvert som nettapplikasjonene dine begynner å vokse i størrelse. Disse funksjonene vises ofte i eksempler i denne boken for å redusere koderedundans. De første eksemplene diskuteres i neste avsnitt om prinsippene for å konstruere grunnleggende maler.

Byggekomponenter

Når jeg definerer strukturen til en typisk nettside, deler jeg den vanligvis ned i tre deler: topptekst, brødtekst og bunntekst. Som regel har de fleste riktig organiserte nettsteder en overskrift som forblir praktisk talt uendret; hoveddelen viser det forespurte innholdet på nettstedet, så det endres ofte; Til slutt inneholder bunnteksten informasjon om opphavsrett og navigasjonslenker. Bunnteksten, som toppteksten, forblir vanligvis uendret. Misforstå meg rett - jeg prøver ikke å undertrykke dine kreative ambisjoner. Jeg har sett mange flotte nettsteder som ikke følger disse prinsippene. Jeg prøver bare å komme opp med en generell struktur som kan tjene som utgangspunkt for videre arbeid.

Overskrift

En overskriftsfil (som den i Listing 9.5) vises på nesten hver eneste av mine PHP-aktiverte nettsteder. Denne filen inneholder

informasjon for hele nettstedet, for eksempel tittel, kontaktinformasjon og enkelte HTML-sidekodekomponenter.

Oppføring 9.5. Eksempel på overskriftsfil

// Fil: header.tpl

// Formål: overskriftsfil for PhpRecipes-nettstedet.

$site_name = "PHPRecipes";

$site_email= " [e-postbeskyttet]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// Skriv ut gjeldende dato og klokkeslett

print date("F d, h:i a");

Ganske ofte er tilgangen til inkluderte filer for besøkende begrenset, spesielt hvis disse filene inneholder sensitiv informasjon (for eksempel passord). I Apache kan du forhindre at visse filer vises ved å redigere http.conf- eller htaccess-filene. Følgende eksempel viser hvordan du forhindrer visning av alle filer med filtypen .tpl:

Bestill tillat, avslå

Tillat fra 127.0.0.1

PHP og nettstedsikkerhetsproblemer er dekket i detalj i kapittel 16.

Løpende tittel

Bunnteksten er vanligvis informasjonen som ligger nederst på sidene på et nettsted – kontaktinformasjon, lenker og informasjon om opphavsrett. Denne informasjonen kan legges i en egen fil og inkluderes som en mal på samme måte som en header. La oss si at med begynnelsen av det nye året må du endre opphavsrettsinformasjonen og bringe den til skjemaet "Copyright © 2000-2001". Det er to alternativer: Bruk julaften på å redigere hundrevis av statiske sider febrilsk. eller bruk en mal som den som er vist i oppføring 9.6. En enkel endring og du kan komme tilbake til ferierutinen.

Oppføring 9.6. Eksempel på bunntekstfil (footer.tpl)

kontakt |

ditt personvern

Legg merke til bruken av den globale variabelen $site_email i bunntekstfilen. Verdien av denne variabelen er sideomfattende, og vi antar at filene header.tpl og footer.tpl vil bli inkludert på en siste side. Legg også merke til tilstedeværelsen av $site_path i personvernkoblingen. Jeg inkluderer alltid den fullstendige banen til alle lenker i malene mine - hvis lenkens URL bare var privacy.php, ville bunntekstfilen være hardkodet til en bestemt katalog.

Hoveddel

Hoveddelen av siden inkluderer innholdet i topp- og bunnteksten. I hovedsak er det hoveddelen som inneholder informasjonen som interesserer besøkende på nettstedet. Toppteksten ser imponerende ut, bunnteksten inneholder nyttig informasjon, men det er for hoveddelen av siden at brukerne kommer tilbake til siden igjen og igjen. Selv om jeg ikke kan gi noen råd om spesifikk sidestruktur, forenkler maler som den i Listing 9.7 i stor grad sideadministrasjonen.

Oppføring 9.7. Eksempel på hoveddelen av siden (index_body.tpl)

/tutorials.php">veiledninger

artikler

skript

kontakt

Velkommen til PHPRecipes. startstedet for PHP-skript, opplæringsprogrammer,

og informasjon om gourmetmatlaging!

Alt sammen: topptekst, bunntekst og brødtekst

Kanskje humøret mitt oppsummeres best av en replikk fra oberst «Hannibal» Smith (George Peppard) fra den berømte TV-serien «The A-Team»: «Jeg elsker det når ting faller på plass.» Jeg opplever noe lignende der ulike maler kommer sammen for å danne et komplett nettdokument. Ved å kombinere tre dokumentseksjoner: header.tpl, index_body.tpl og footer.tpl, kan du raskt bygge en enkel side som den som vises i Listing 9.8.

Oppføring 9.8. Bygge en index.php-side ved å inkludere flere filer

// Fil: index.php

// Destinasjon: PHPRecipes hjemmeside

// Skriv ut tittel

include("header.tpl");

// Skriv ut hoveddelen

include("indeks_kropp.tpl");

// Vis bunnteksten

include("bunntekst.tpl");

Så hvordan? Tre enkle kommandoer og du har en ferdig side. Teksten på den siste siden vises i oppføring 9.9.

Oppføring 9.9. HTML-side bygget i Listing 9.8 (index.php)

PHP-oppskrifter

23. august kl. 15.17

veiledninger

artikler

skript

kontakt

Velkommen til PHPRecipes, startstedet for PHP-skript, opplæringsprogrammer,

og gourmetmatlagingstips og oppskrifter!

Copyright 2000 PHPRecipes. Alle rettigheter forbeholdt.

kontakt |

ditt privatliv

I fig. Figur 9.1 viser hvordan den resulterende siden ser ut i en nettleser. Selv om jeg vanligvis ikke bruker bordkanter, tegnet jeg dem denne gangen for å få de tre delene av siden til å fremstå tydeligere i illustrasjonen.

Ris. 9.1. Utseendet til siden bygget i oppføring 9.8

Maloptimalisering

I det andre (etter min mening mer foretrukket) alternativet er malene utformet som funksjoner som ligger i en egen fil. Dette gir ekstra struktur til malene dine. Jeg kaller denne filen initialiseringsfilen og lagrer annen nyttig informasjon i den. Siden vi allerede har sett på relativt lange topp- og bunntekst-eksempler, har oppføringene 9.10 og 9.11 blitt litt forkortet for å illustrere den nye ideen.

Oppføring 9.10. Optimalisert nettstedsmal (site_init.tpl)

// Fil: site_init.tpl

// Formål: PhpRecipes initialiseringsfil

$site_name = "PHPRecipes";

$site_email = " [e-postbeskyttet]";

$site_path = "http://localhost/phprecipes/";

function show_header($site_name) (

<? print $site_name: ?>

Dette er overskriften

funksjon vis bunntekst()

Dette er bunnteksten

Notering 9.11. Bruke en initialiseringsfil

// Inkluder initialiseringsfil

include("site_init.tpl");

// Skriv ut tittel

vis header($site_name);

// Kroppsinnhold Dette er litt kroppsinformasjon

// Vis bunnteksten Show_footer();

Prosjekt: sidegenerator

Selv om de fleste nettstedene jeg har laget har generert hovedsideinnholdet basert på informasjon lest fra en database, er det alltid noen få sider som forblir praktisk talt uendret. Spesielt kan de vise informasjon om utviklingsteamet, kontaktinformasjon, annonsering osv. Jeg lagrer vanligvis denne «statiske» informasjonen i en egen mappe og bruker et PHP-skript for å laste den inn når en forespørsel kommer inn. Selvfølgelig har du et spørsmål - hvis dette er statisk informasjon, hva er PHP-skriptet for? Hvorfor ikke laste vanlige HTML-sider? Fordelen med PHP er at du kan bruke maler og sette inn statiske utdrag etter behov.

<а href = "/static.php?content=$content">Statisk sidenavn

La oss starte med å lage statiske sider. For enkelhets skyld vil jeg begrense meg til tre sider som inneholder nettstedsinformasjon (oppføring 9.12), annonsering (oppføring 9.13) og kontaktinformasjon (oppføring 9.14).

Notering 9.12. Informasjon om nettstedet (about.html)

Om PHPRecipes

Hvilken programmerer blander ikke hele natten programmering med gourmetkaker. Her på PHPRecipes. går det knapt en natt uten at en av våre kodere blander litt HTML med en velsmakende tallerken Portobello-sopp eller til og med Fondue. Så vi bestemte oss for å gi deg det beste av det vi elsker mest: PHP og mat!

Det stemmer, lesere. Veiledninger, manus, suffler og mer. 0 bare på PHPRecipes.

Annonseinformasjon

Uansett om de kommer for å lære de nyeste PHP-teknikkene eller for å oppdatere hvordan

å bake kylling, kan du satse på at våre lesere er beslutningstakere. De er industrien

fagfolk som tar beslutninger om hva selskapet deres kjøper.

For annonseinformasjon, kontakt

">[e-postbeskyttet].

Notering 9.14. Kontaktdetaljer (contact.html)

Kontakt oss

Har du et kodetips?

Vet du den perfekte toppingen for kandiserte yams?

Gi oss beskjed! Ta kontakt med teamet på [e-postbeskyttet].

La oss gå videre til å bygge static.php-siden, som viser den forespurte statiske informasjonen. Denne filen (se oppføring 9.15) inkluderer sidekomponentene på nettstedet vårt og initialiseringsfilen site_init.tpl.

Notering 9.15. Generell utgang av statiske sider (static.php)

// Fil: static.php

// Formål: vise forespurte statiske sider.

// ADVARSEL: dette forutsetter at filen er "site_init.tpl" og det er det

// statiske filer er i samme katalog.

// Last inn funksjoner og variabler inkluderer("site_init.tpl"):

// Vis overskriften show_header($site_name);

// Skriv ut det forespurte innholdet include("$content.html"):

// Vis bunnteksten show footer();

Nå er alt klart for å bygge hovedscenarioet. Bare ta det med på siden

<а href = "static.php?content=about">Statisk sidenavn

Annonseinformasjon

Kontakt oss

Hvis du klikker på noen av disse koblingene, vil nettleseren din laste den tilsvarende statiske siden innebygd i static.php!

Resultater

I dette kapittelet ble du kjent med den primære oppgaven som PHP ble laget for - dynamisk å bygge nettsider. Følgende problemstillinger ble vurdert:

  • URL-behandling;
  • bygge dynamisk innhold;
  • inkludering og konstruksjon av grunnleggende maler.

Kapitlet avsluttes med en sidegenerator, et program som laster statiske sider inn i en mal og gjør det enkelt å støtte et stort antall statiske HTML-sider.

Det neste kapittelet fokuserer på bruk av PHP i kombinasjon med HTML-skjemaer for å forbedre interaktiviteten til nettstedet ditt. Og så - interaksjon med databaser! Du har mye interessant å lære.


En verden av gratis programmer og nyttige tips
2024 whatsappss.ru