Korištenje PHP-a na stranicama s ekstenzijom html. Obrazac u vašem izgledu Kako čitati html stranicu php

Pokušavam stvoriti obrazac za prijavu. Ovo je moj HTML kôd obrasca

Osobno sam ga dobio za PDO.

Točke 4 i 5

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

Prvo, redoslijed ovoga je pogrešan. Raspršite $_POST["lozinka"] i zatim pokušava koristiti stripslashes - nakon njegovi hashovi neće imati kose crte. Međutim, ako pokušavate spriječiti ljude da koriste kose crte (ili bilo što drugo) u lozinkama, morat ćete ih ukloniti prije raspršivanja niza.

Sljedeći md5 ne bi se trebao koristiti kao algoritam za raspršivanje zaporke, za koji je utvrđeno da je slab i da može biti gruba sila za stvaranje kolizija nizova mnogo češće nego što je potrebno.

da ti mora pohranjujte hashove ili "otiske prstiju" zaporki, a ne same zaporke, ali idealno bi bilo da te lozinke usolite i raspršite (s najmanje sha1), umjesto da ih samo ubacite u funkciju md5().

I potražite "postavku raspršivanja lozinke" koristeći tražilicu koju odaberete.

Točka 6

SELECT id FROM $table WHERE korisničko ime = "" . $korisničko ime. "" i lozinka = "". $lozinka. "";

Dodao sam u = što je nedostajalo u izvornom pitanju, ali to je to nije odgovaralo korisničkom imenu i lozinci u vašem zahtjevu...ako je netko uspio dobiti SQL injekciju u vaše korisničko ime, lozinka nikada neće biti provjerena. Predstaviti:

SELECT user.id FROM user WHERE user.username = "fred" OR 1 = 1 -- AND user.password = "abc123"

Bolje je odabrati korisnički ID i lozinku za otisak prsta iz baze podataka, a zatim procijeniti lozinku u aplikaciji umjesto vjerovati provjeri lozinke na razini baze podataka. To također znači da možete koristiti poseban algoritam raspršivanja i usoljavanja unutar same aplikacije za provjeru svojih zaporki.

Točka 7

$_SESSION["user"] = $_POST["username"];

Je li to samo pohranjivanje korisničkog imena u sesiji? Ovo se ni na koji način ne bi trebalo koristiti kao "verifikator prijave", pogotovo ako na vašoj sesiji (očigledno) nema ničega što bi spriječilo otmicu.

ID sesije se lako može nanjušiti iz kolačića u stvarnom vremenu i to je sve što bi bilo potrebno da se "posudi" tuđe korisničko ime. Trebali biste barem pokušati smanjiti vjerojatnost otmice sesije povezivanjem korisničke IP adrese, niza UserAgent-a ili neke druge kombinacije relativno statičnih podataka koji se mogu usporediti sa svakom stranicom... gotovo svaki pristup ima nedostatke (osobito , kao što sam već otkrio, ako imate posjetitelje koji koriste AOL), ali možete omogućiti moguću 99% učinkovitu sesiju otiska prsta kako biste smanjili otmicu uz vrlo malu vjerojatnost da će se korisnička sesija greškom poništiti.

Idealno bi također mogli stvoriti token sesije za ublažavanje CSRF napadi kada korisnik treba izvršiti "povlaštenu" akciju nad bazom (ažurirati svoje podatke ili nešto treće). Token može biti potpuno nasumičan i jedinstven kod pohranjen u bazi podataka i/ili kolačić SSL kada se korisnik prijavi (pod uvjetom da korisnik ne može izvršiti nikakve radnje koje ažuriraju bazu podataka izvan HTTPS-a, jer će to jednostavno prenijeti podatke u čistom tekstu preko Interneta - što bi bilo Loša ideja).

Token se postavlja u skriveno polje obrasca za bilo koji/sve obrasce i provjerava se u odnosu na vrijednost pohranjenu u kolačiću (ili sesiji ili bazi podataka) kada se taj obrazac pošalje. To osigurava da će osoba koja podnosi obrazac imati barem sesiju uživo na vašoj web stranici.

Moglo bi biti nekoliko problema.

Prvo, u izjavi $match nedostaje vam operator jednakosti zaporke:

$match = "SELECT id FROM $table WHERE korisničko ime = "".$korisničko ime."" i lozinka"".$lozinka."";";

Trebalo bi:

$match = "SELECT id FROM $table WHERE korisničko ime = "".$korisničko ime."" i lozinka = "".$lozinka."";";

Drugo, ubacite lozinku u bazu podataka nakon njegovu upotrebu pomoću md5?

Ako ne, onda vaš zahtjev pokušava spojiti md5 (lozinka) sa lozinkom.

Prilikom izrade čak i osobne web stranice, ne može svatko osigurati sve moguće načine njegovu daljnju upotrebu. Vrlo je važno pripremiti teren za daljnji razvoj stranice. Ako ste u prošlosti izradili web mjesto i svim stranicama prema zadanim postavkama dodijelili ekstenziju .html, a tek onda odlučili koristiti PHP, onda čitajte dalje.

Prije su za korištenje SSI-ja nazivi stranica stranica morali završavati ekstenzijom .shtml, no danas je većina internetskih poslužitelja konfigurirana tako da se SSI može koristiti na stranicama s ekstenzijom .html, što je prilično zgodno. PHP je sasvim druga priča - ekstenzija .php je zadana ekstenzija. Programeri web stranica unaprijed znaju što će se koristiti dati jezik programiranja, kamenčiću se dodjeljuje ispravna ekstenzija.

Ali što učiniti kada sve stranice završavaju ekstenzijom .html?

Zamijenite HTML proširenje PHP-om

To se može učiniti na nekoliko načina. Najočitiji način je dati svim stranicama ekstenziju .php ili promijeniti postojeće ekstenzije (.html, .shtml, itd.). Ova metoda ima nedostatke. Na primjer, već indeksirane stranice s nastavkom .html morat će se ponovno indeksirati tražilice. Ili još gore – sve vanjske poveznice, koji izričito povezuju na određenu stranicu bit će nevažeći. Morat ćete obavijestiti vlasnike svake stranice o ovim promjenama i stvoriti drugu stranicu s 301 greškom za svaku stranicu. Naravno, promjena jednog proširenja drugim je prihvatljiva, ali što ako stranica već ima mnogo stranica i mnogo poveznica na različite stranice s drugih stranica?

Iz svjesnog razloga ovaj trenutak sve stranice ove stranice završavaju s ekstenzijom html, a gore navedene izmjene nisam želio napraviti, stvarajući si nepotrebne poteškoće.

Možete to učiniti na drugi način. Ako poslužitelj koji hostira web mjesto podržava mod_rewrite (u većini slučajeva podržava) i postoji pristup .htaccess datoteci, tada možete dodati sljedeće retke ovoj datoteci:

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

Dodavanjem ovog koda u .htaccess ne morate se brinuti. Sve tražene nepostojeće stranice s ekstenzijom .html automatski će biti zamijenjene ekstenzijom .php zahvaljujući čudima Apachea. Ali ova metoda nije jedina. U istoj .htaccess datoteci možete napisati sljedeće:

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

Po mom mišljenju najuspješniji način. To čini HTML stranice jednakima PHP stranicama, što znači da se sve PHP funkcije sada mogu koristiti na stranicama s HTML ekstenzijom. Ako nemate pristup datoteci .htaccess, možete napisati pismo hosting tvrtki i pristojno zamoliti administratore da se registriraju na Apache konfiguracije(httpd.conf) potrebnu vrijednost za stranicu.

Usput, ako je prije ovoga stranica koristila SSI na sljedeći način:

tada u novom PHP stanju ovaj kôd treba zamijeniti s:

Pa, to je sve, mislim da će jedna od gore navedenih metoda pomoći.

PHP je ugrađeni programski jezik na strani poslužitelja. Velik dio njegove sintakse posuđen je iz C-a, Jave i Perla. Također je dodao nekoliko jedinstvenih karakteristika samo za PHP funkcije. Glavna svrha ovog jezika je stvaranje dinamički generiranih PHP HTML stranica.

PHP u HTML

Prilikom izrade složenih web stranica, suočit ćete se s potrebom kombiniranja PHP-a i HTML-a za postizanje specifičnih zadataka. Na prvi pogled ovo može izgledati komplicirano, budući da su PHP i HTML dvije neovisne discipline, ali to nije tako. PHP je dizajniran za interakciju s HTML-om, a njegov se kod može uključiti u označavanje stranice.

PHP kod je uključen u HTML stranice pomoću posebnih oznaka. Kada korisnik otvori stranicu, poslužitelj obrađuje PHP kod i zatim šalje rezultat obrade (ne PHP kod) u preglednik.

HTML i PHP je prilično lako kombinirati. Bilo koji dio PHP skripte izvan oznakaPHP prevodilac zanemaruje i prosljeđuje izravno pregledniku. Ako pogledate primjer u nastavku, možete vidjeti da kompletna PHP skripta može izgledati ovako:

Pozdrav danas.

Gornji kod je obični HTML s malo PHP isječak koji izlazi trenutni datum koristeći ugrađenu funkciju datuma. U tom će slučaju PHP prevodilac zanemariti sav HTML i prenijeti ga pregledniku nepromijenjen.

Integracija PHP-a u HTML stvarno je vrlo jednostavna. Zapamtite da je skripta HTML stranica s uključenim PHP kodom. Možete izraditi skriptu koja će sadržavati samo HTML (bez oznaka), i radit će dobro.

Naprednije metode:

  • Stavka izbornika

i rezultat:

PHP u HTML koristeći short_open_tag

Ako trebate učiniti svoj kod što je moguće kraćim prije umetanja HTML-a u PHP, možete koristiti short_tags. Kao rezultat toga, nećete morati ulazitikratke_oznake" sa " Isključeno" na " Na". Iako većina poslužitelja već ima uključenu ovu opciju, uvijek je najbolje provjeriti je ručno. Problem koji može nastati kod korištenja kratkih oznaka je sukob kod korištenja XML-a. U izrazu XML sintakse

PHP u HTML koristeći short__tag

Pozdrav, danas je.

Imajte na umu da ako želite stvoriti web mjesto koje je kompatibilno sa što više platformi, ne biste se trebali oslanjati na short_tagove prilikom umetanja PHP-a u HTML.

HTML u PHP koristeći echo

Drugi način integracije HTML-a u PHP datoteku je naredba echo:.

To će utjecati na označavanje markupa u većini uređivača. Stoga je potrebno odabrati sve dvostruki navodnici unutar HTML koda koristeći obrnutu kosu crtu.

PHP u HTML - ekstenzije datoteka

Za standardno konfigurirani web poslužitelj:

AddHandler cgi-skripta .html .htm

Za web poslužitelj koji pokreće FastCGI:

AddHandler fcgid-script .html .htm

HTML u PHP

Također možete koristiti HTML kod u PHP skriptama. Sve što trebate učiniti je kada otvarate stranicu koristeći PHP, promijeniti redoslijed stranica koje se otvaraju HTML oznake i PHP.

Korištenje HTML-a u PHP-u:

Osobne informacije

Ime:
Prezime:
"; ?>

Umetanje PHP-a u HTML na ovaj način omogućuje vam korištenje mnogo manje koda. Ovdje koristimo $PHP_SELF globalno, što omogućuje da se vrijednosti polja navedene ispod njih koriste u istoj datoteci. Obično se za takve obrasce stvaraju dvije datoteke: prva je sam HTML obrazac, a druga je PHP datoteka koja obavlja obradu.

Ako već imate složene PHP aplikacije koje koriste velik broj datoteka i želite ih pojednostaviti, ova metoda može pomoći.

Ova publikacija je prijevod članka “PHP u HTML-u”, koji je pripremio prijateljski projektni tim

>

Php za početnike

Na ovoj stranici ćemo pokušati objasniti logiku izgradnje dinamičke web stranice. Php je skripta koju izvršava poslužitelj. Što to znači? Poslužitelj ima instaliran poseban tumač koji razumije određene jezične konstrukcije. Sama php datoteka, čita je red po red, kao da prolazi kroz njega od vrha do dna. Ako pronađe, na primjer, riječ Izlaz, zatim stane i ne čita dalje ništa, već izvršava ono što je našlo prije ove riječi, npr. ispisati"Sjajno!" Ispis će biti odličan!

ispisati"Sjajno!";
Izlaz ;
?>

Ovo je najjednostavnija php datoteka, ali zapravo se u praksi morate nositi sa složenom php datotekom. Na stranici ima puno stranica, trenutno ih imamo 24 tisuće, morali bismo napisati isto toliko php datoteka, ili samo html datoteka. Ali, php vam omogućuje da sve to učinite u jednoj izvršnoj datoteci. To jest, moramo organizirati veze u samoj ovoj datoteci kao, ako ovo - učini ono, ako ono - učini ono. Php vam omogućuje vrlo dobro organiziranje veza. Opća shema je:

Vidite u scenariju da pretinci vole
ako tada)
onda to radimo
}

Što se onda dogodilo ako je ispunjen prvi uvjet, tj $uslovi 1== "da", tada izvršavamo skriptu u zagradama ( ) koje se odnose na ovaj dio skripte, tada u ovom odjeljku postoji Izlaz- ovdje program završava. To jest, uz pomoć odjeljaka možemo podijeliti php datoteku na sastavne dijelove. A koji je uvjet - if($uslovie == "da")??? Ova mreža je ista veza, u ovom slučaju, nešto će se izvršiti ako varijabla $uslovie bit će jednaki Da.

Imenujmo datoteku sve.php. Da biste organizirali veze na njega u naredbenom retku, jednostavno dodajte sve.php?uslovie=yes. Ako vidite upitnik na naredbenom retku, onda je to u ovom slučaju poveznica, $uslovie == "da". Zatim ćemo napraviti html datoteku u koju ćemo napisati poveznice na našu izvršnu skriptu.



Nova stranica


uvjeti1=da" >Prva veza
uvjeti2=yes" >Druga veza

Vidite dvije poveznice. Ako kliknete na poveznice, datoteka će se izvršiti sve.php, a u prvom slučaju skripti će biti rečeno da varijabla $uslovi 1== da, a u drugom slučaju, $uslovi 2== da. Od prvog linka prvi odjeljak će biti dovršen i program će se zaustaviti, pomoću druge veze program će se pokrenuti kroz prvi odjeljak i ispunit će se nešto iz drugog odjeljka(vidi gore). Imajte na umu da se u poveznicama ne piše znak dolara, već ih program čini varijablama kada ih prosljeđuje skripti, odnosno kada ih prosljeđuje naredbenom retku.

Sada znamo kako organizirati veze na php datoteku, kako je podijeliti u odjeljke i kako organizirati veze u html tekstu na našu datoteku. Ali, ima još jedna stvar... Činjenica je da ako ovako organizirate stranicu, onda u izvornom obliku, kada nema baš puno linkova, nećete imati problema. Recimo da ima 10 odjeljaka, svi će tiho stati u jednu datoteku. Ali ako ima puno poveznica, npr. imamo 24 000 stranica, onda je u principu nemoguće sve dijelove smjestiti u jednu php datoteku. Sami ćete biti mučeni traženjem ovog ili onog odjeljka u jednoj datoteci da biste ga, na primjer, promijenili. Osim toga, datoteka će biti vrlo velika, naš all.php zauzimao bi 1 MB. Osim toga, morate razumjeti još jednu stvar: na mnogim poslužiteljima postoji ograničenje veličine izvršnih datoteka (na primjer, 50 Kb); ako se prekorači, takva se datoteka zanemaruje i ne izvršava. U vezi s ovim izračunima, smanjili smo veličinu glavne datoteke na 8 Kb, iako nosi opterećenje izvršenja od 1 MB. Kako to učiniti? Php pruža izvrsnu priliku za dijeljenje php datoteke na dijelove pomoću naredbe uključeno....

Sada postaje jasno kako smo našu glavnu datoteku smanjili na 8Kb, jer sve ostale uključene datoteke imaju ukupnu veličinu od 1 MB, a mi smo ih sakrili u posebnu mapu i spajali ih po potrebi, odnosno ovisno o poveznicama u naredbi crta. Naredba include povezuje datoteke kao da su napisane u glavnoj skripti, stoga, ako u umetnutim datotekama pristupate bazama podataka ili html datotekama, tada će se brojanje morati izvršiti upravo iz glavne datoteke, u našem slučaju sve.php. Na primjer, postoji mapa html, sadrži datoteku jedan.htm kako to ispisati. Zatim datoteka one.php izgleda ovako:

uključiti"html/jedan.htm";
ispisati
Izlaz ;
?>

Ispisali smo sadržaj jedan.htm, plus tiskano Ovo je prvi dio programa, i zaustavio program. To jest, na temelju html teorije, morali bismo uključiti datoteku jedan.htm Tako: uključi "../html/one.htm", budući da je mapa html nalazi se jednu razinu iznad datoteke jedan.php. Ali u php-u to nije slučaj, naredba include jednostavno dodaje kod u skriptu i ona postaje njezin sastavni dio, što znači da se sve poveznice računaju u odnosu na glavnu datoteku, a ne uključene.



Nova stranica


uvjeti1=yes" >Samo prva veza
uvjeti1=da& djelovati=da" >
uvjeti2=yes" >Samo druga veza
uvjeti2=da& djelovati=yes" >Drugi link, ali također act=yes

Zatim php datoteku jedan.php pretvoriti u ovo:

ako($act == "da")(
uključiti"html/jedan.htm";
Izlaz ;
}
ispisati"Ovo je prvi dio programa";
Izlaz ;
?>

Ako ste kliknuli na link uslovie1=yes" >Poveznica Simply First, bit će ispisana Ovo je prvi dio programa, ako ste kliknuli na link uslovie1=da& djelovati=yes" >Prva veza, ali i act=yes, zatim će se ispisati sadržaj datoteke html/jedan.htm, i program će se zaustaviti.

403 KB

Skinite arhivu, napravljena je tako da ne morate znati Php, već samo HTML.

Da.))

Lakše bi mi bilo napraviti kopiju index.php i preimenovati je npr. u contact.php i onda s novim sadržajem promijeniti Middle u Middle2.

Čajnik sam malo php


Još uvijek ne razumijem.
Imam web stranicu.
indeksna datoteka u korijenu. U drugoj mapi nalaze se datoteke na vrhu u sredini, na primjer.

Postoji jelovnik. Želim da se prikaže druga sredina kada kliknete na stavku izbornika.

Kako to učiniti i gdje to staviti???

Odgovor: Pa, gdje god. Vrlo je jednostavno, radi se o izradi skripte jelovnika menus.html


nešto bez niza $_GET ["uslovie"] ; tvoji primjeri mi ne idu

Odgovor: podrška za globalne varijable je onemogućena na vašem poslužitelju, ako je tako, onda možete staviti liniju na početak svih vaših skripti

ako (isset($_GET )) ( za svakoga($_GET kao $key =>$val) ($$key =$val;))

tada možete koristiti naše skripte bez korištenja $_GET [ "uslovie" ] , već samo stavite $uslovie


Imate vrlo zanimljiv izvor..
Hvala na informaciji.

Odgovor:


Dugo ste obećali da ćete istražiti kako nastaje PHP web stranica. Zašto niste održali obećanje? Možda napišite članak na ovu temu (a ako koristite i MySQL, onda će sve biti u redu).

Odgovor:


Vrlo da. Samo, eto ga, umjesto previše.htm vjerojatno vam trebaju dva.htm
Nije bitno, ali da stvari budu u redu))

Odgovor:


Reci mi gdje mogu pročitati i naučiti napamet sve operatore i PHP kodove, na primjer: jeka , uključiti , drugo , ako , ispisati , za svakoga , isset itd., što znače i čemu služe?

Odgovor: Alexander, bio sam na odmoru mjesec dana, a trenutno dovršavam novu verziju cijele stranice. Čim završim, napravit ću malu stranicu o tome.


Mobilesfinks, dok sam se spremao ponovno instalirati php 4, već je izašla nova verzija stranice u php 5. I nije bilo nikakvih problema, sve je radilo %tashus%

Odgovor:


Zdravo!

Molim vas recite mi kako promijeniti NASLOV na vrhu prozora na svakoj stranici: to jest, " Nova stranica" ...

Na primjer, ako slijedite vezu "1", prozor bi se trebao zvati "Prvi odjeljak. Matematika" - to jest, HTML kod bi trebao biti Prvi odjeljak. Matematika...
A ako je poveznica "2", na primjer, tada bi se prozor trebao zvati "Drugi odjeljak. Geografija" - to jest, HTML kod bi trebao biti Drugi odjeljak. Geografija...

Kako ga mogu promijeniti pomoću PHP-a?

Odgovor: html.html


Moramo instalirati PHP4 za Denver. Instalacijska skripta će sama napraviti sve promjene.
Zatim u mapi u kojoj imate datoteku all.php koju ste stvorili
datoteku pod nazivom ".htaccess" i dodajte joj redak
Stranica: 1
Trenutna stranica: 1 Ukupno poruka: 22

Mnogi čitatelji u bilo kojoj knjizi o računalima prelete preko svega što nije od neposrednog interesa i prijeđu na ono što im stvarno treba. željeti znati. Osobno, to je ono što radim. No, u tome nema ništa loše – rijetko postoje tehničke knjige koje treba pročitati od korica do korica. Ili ste možda to učinili - preskočili početnih osam poglavlja i uzeli ovo poglavlje jer je imalo najzanimljiviji naslov? A tko želi gubiti vrijeme na detalje kada još jedan projekt gori na poslu?

Srećom, takva vas žurba neće spriječiti da ispravno savladate materijal u drugom dijelu knjige, koji je posvećen korištenju PHP-a za izradu stranica i interakciju s webom. U ovom poglavlju naučit ćete kako jednostavno mijenjati sadržaj web stranica i kretati se webom pomoću poveznica i raznih standardnih funkcija. Sljedeće poglavlje će nadopuniti prezentirani materijal - detaljno ispituje načine interakcije s korisnikom u HTML oblicima. Poglavlje 11 opisuje organizaciju sučelja s bazama podataka. Preostala poglavlja drugog dijela raspravljaju o netrivijalnim aspektima web programiranja u PHP-u.

Međutim, treba imati na umu da materijal u 1. dijelu apsolutno potrebno za normalno poznavanje PHP-a. Pretpostavlja se da ste već pročitali 1. dio, tako da će primjeri koristiti mnoge ranije opisane koncepte. Dakle, ako preletite dijelom knjige, morat ćete se s vremena na vrijeme vratiti na prethodna poglavlja i nadoknaditi propušteno.

Jednostavne veze

<а href = "date.php">

$link = "datum.php";

ispis"<а href = \"$link\">Pogledajte današnji datum
\n"

Vjerojatno se pitate zašto postoji obrnuta kosa crta (\) prije navodnika (") u kodu veze? Činjenica je da su navodnici u PHP-u posebni znakovi i koriste se kao graničnici redaka. Stoga navodnici literali u nizovima moraju biti zaštićeni .

Ako vas smeta izbjegavanje navodnika, jednostavno omogućite način rada magic_quotes_gpc u svojoj datoteci php.ini. Rezultat su svi apostrofi, navodnici, obrnute kose crte i nulti znakovi. su automatski escaped u tekstu!

Razvijmo navedeni primjer. Za brzi prikaz popisa veza u pregledniku, možete koristiti niz:

// Kreirajte niz odjeljaka

$contents - array("tutorijali", "članci", "skripte", "kontakt");

// Iteracija i uzastopni prikaz svakog elementa niza

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

ispis" ".$sadržaj[$i]."
\n";

// - posebna oznaka za točku markera endfor;

Komponente datoteke (predlošci)

Došli smo do jedne od mojih omiljenih PHP značajki. Predložak (u odnosu na web programiranje) je dio web dokumenta koji ćete koristiti na nekoliko stranica. Predlošci, poput PHP funkcija, spašavaju vas od nepotrebnog kopiranja/lijepljenja sadržaja stranice i programskog koda. Kako se veličina stranice povećava, tako raste i važnost predložaka koji omogućuju jednostavne i brze izmjene na razini cijele stranice. Ovaj odjeljak će opisati neke od mogućnosti koje se otvaraju korištenjem jednostavnih predložaka.

Obično se uobičajeni dijelovi sadržaja/koda (tj. predlošci) spremaju u zasebne datoteke. Kada izrađujete web dokument, te datoteke jednostavno "uključujete" na odgovarajuća mjesta na stranici. U PHP-u za to postoje dvije funkcije: include() i require().

uključi() i zahtijevaj()

Jedan od najistaknutijih aspekata PHP-a je mogućnost izrade predložaka i programskih biblioteka te njihovog umetanja u nove skripte. Korištenje knjižnica štedi vrijeme i trud u korištenju zajedničkih funkcija na različitim web stranicama. Čitatelji sa

iskustvo programiranja u drugim jezicima (kao što su C, C++ ili Java), te su upoznati s konceptom knjižnica funkcija i njihovom upotrebom u programima za proširenje funkcionalnosti.

Uključivanje jedne ili više datoteka u skriptu vrši se pomoću standardnih PHP funkcija require() i include(). Kao što će biti prikazano u sljedećem odjeljku, svaka od ovih funkcija primjenjuje se u specifičnoj situaciji.

Funkcije

U PHP-u postoje četiri funkcije za uključivanje datoteka u PHP skripte:

  • uključi();
  • uključi_jednom();
  • zahtijevati();
  • zahtijevaj_jednom().

Unatoč sličnosti naziva, ove funkcije rješavaju različite probleme.

Funkcija include() uključuje sadržaj datoteke u skriptu. Sintaksa funkcije include() je:

uključi (datoteka datoteka]

Funkcija include() ima jednu zanimljivu značajku - može se izvršiti uvjetno. Na primjer, ako je poziv funkcije uključen u blok naredbe if. tada je datoteka uključena u program samo ako je uvjet i f istinit. Ako se funkcija includeO koristi u uvjetnoj naredbi, tada je mora biti u vitičastim zagradama ili alternativnim graničnicima. Usporedite razlike u sintaksi između Ispisa 9.1 i 9.2.

Listing 9.1. Neispravna upotreba uključi()

ako (neki_uvjetni)

uključi("tekst91a.txt"); drugo

uključi("tekst91b.txt");

Listing 9.2. Ispravna upotreba funkcije include()

ako (neki_uvjetni) :

uključi("tekst91a.txt");

uključi("tekst91b.txt");

Sav PHP kod u uključenoj datoteci Obavezno leži u PHP oznakama. Nemojte pretpostavljati da će jednostavno spremanje PHP naredbe u datoteku osigurati da se ispravno obradi:

Umjesto toga, trebate zamotati naredbu u odgovarajuće oznake, kao što pokazuje sljedeći primjer:

print "ovo je nevažeća uključena datoteka";

Funkcija include_once() radi isto što i include(), s jednom iznimkom: prije uključivanja datoteke u program, provjerava je li već uključena. Ako je datoteka već uključena, poziv include_once() se zanemaruje, a ako nije, događa se standardno uključivanje datoteke. U svim drugim aspektima, include_once() se ne razlikuje od include(). Sintaksa funkcije include_once() je:

uključi_jednom (datoteka datoteke)

Općenito, funkcija require() slična je include() - također uključuje predložak u datoteci u kojoj se nalazi poziv require(). Sintaksa funkcije require() je:

zahtijevati (file file)

Međutim, postoji jedna važna razlika između funkcija require() i include(). Datoteka koju specificira require() uključena je u skriptu bez obzira na lokaciju require() u skripti. Na primjer, ako pozovete requi re() u if bloku, ako je uvjet lažan, datoteka će i dalje biti uključena u skriptu!

U mnogim je situacijama zgodno stvoriti datoteku s varijablama i drugim informacijama koje se koriste na cijelom mjestu, a zatim je uključiti prema potrebi. Iako je naziv ove datoteke proizvoljan, obično je zovem init.tpl (skraćeno od "initializaion.template"). Listing 9.3 pokazuje kako izgleda vrlo jednostavna init.tpl datoteka. U ispisu 9.4, sadržaj init.tpl je uključen u skriptu s require().

Listing 9.3. Primjer inicijalizacijske datoteke

$site_title = "PHP recepti";!}

$contact_email = " [e-mail zaštićen]";

$contact_name = "WJ Gilmore";

Listing 9.4. Korištenje datoteke init.tpl

<? print $site_title; ?>

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

Prosljeđivanje URL-a pri pozivanju require() dopušteno je samo ako je omogućen način rada "URL fopen wrappers" (ovaj način je omogućen prema zadanim postavkama).

Kako se veličina stranice povećava, može se ispostaviti da su neke datoteke nekoliko puta uključene u skriptu. Ponekad to ne uzrokuje problem, ali u nekim slučajevima ponovno uključivanje datoteke uzrokuje poništavanje vrijednosti promijenjenih varijabli. Ako uključena datoteka definira funkcije, može doći do sukoba imenovanja. Uz to, dolazimo do sljedeće funkcije - require_once().

Funkcija require_once() osigurava da je datoteka uključena u skriptu samo jednom. Nakon što se pozove requi re_once(), svi daljnji pokušaji uključivanja iste datoteke se ignoriraju. Sintaksa funkcije require_once() je:

Vjerojatno ćete češće početi koristiti značajke uključivanja datoteka kako vaše web aplikacije počnu rasti. Ove se funkcije često pojavljuju u primjerima u ovoj knjizi kako bi se smanjila redundantnost koda. O prvim primjerima raspravlja se u sljedećem odjeljku o načelima konstruiranja osnovnih predložaka.

Građevinske komponente

Kada definiram strukturu tipične web stranice, obično je rastavljam na tri dijela: zaglavlje, tijelo i podnožje. U pravilu, većina pravilno organiziranih web stranica ima zaglavlje koje ostaje gotovo nepromijenjeno; glavni dio prikazuje traženi sadržaj stranice, tako da se često mijenja; Konačno, podnožje sadrži informacije o autorskim pravima i navigacijske veze. Podnožje, kao i zaglavlje, obično ostaje nepromijenjeno. Nemojte me krivo shvatiti - ne pokušavam potisnuti vaše kreativne težnje. Vidio sam mnogo izvrsnih web stranica koje ne slijede ta načela. Samo pokušavam osmisliti opću strukturu koja može poslužiti kao polazište za daljnji rad.

Naslov

Datoteka zaglavlja (poput one u ispisu 9.5) pojavljuje se na gotovo svakoj od mojih web stranica s omogućenim PHP-om. Ova datoteka sadrži

informacije na cijelom web-mjestu, kao što su naslov, podaci za kontakt i neke komponente koda HTML stranice.

Listing 9.5. Primjer datoteke zaglavlja

// Datoteka: zaglavlje.tpl

// Svrha: datoteka zaglavlja za web stranicu PhpRecipes.

$site_name = "PHPRecipes";

$site_email= " [e-mail zaštićen]";

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

<? print $site_name; ?>

// Ispis trenutnog datuma i vremena

ispis datuma ("F d, h:i a");

Posjetiteljima je često ograničen pristup uključenim datotekama, osobito ako te datoteke sadrže osjetljive informacije (na primjer, lozinke). U Apacheu možete spriječiti pregledavanje određenih datoteka uređivanjem datoteka http.conf ili htaccess. Sljedeći primjer pokazuje kako spriječiti gledanje svih datoteka s nastavkom .tpl:

Narudžba dopusti, odbij

Dopusti od 127.0.0.1

Sigurnosna pitanja PHP-a i web stranice detaljno su obrađena u 16. poglavlju.

Tekući naslov

Podnožje je obično informacija koja se nalazi na dnu stranica stranice - podaci o kontaktu, poveznice i informacije o autorskim pravima. Te se informacije mogu smjestiti u zasebnu datoteku i uključiti kao predložak na isti način kao i zaglavlje. Recimo da s početkom nove godine trebate promijeniti podatke o autorskim pravima i dovesti ih u obrazac “Copyright © 2000-2001”. Postoje dvije mogućnosti: Provedite Badnjak bjesomučno uređujući stotine statičnih stranica. ili koristite predložak poput onog prikazanog u ispisu 9.6. Jedna jednostavna promjena i možete se vratiti svojoj blagdanskoj rutini.

Listing 9.6. Primjer datoteke podnožja (footer.tpl)

kontakt |

vaša privatnost

Obratite pažnju na upotrebu globalne varijable $site_email u datoteci podnožja. Vrijednost ove varijable odnosi se na cijelu stranicu i pretpostavljamo da će datoteke header.tpl i footer.tpl biti uključene u jednu posljednju stranicu. Također primijetite prisutnost $site_path u vezi privatnosti. Uvijek uključujem punu stazu do svih veza u svojim predlošcima - da je URL veze samo privacy.php, datoteka podnožja bila bi kodirana u određeni direktorij.

Glavni dio

Glavni dio stranice uključuje sadržaj zaglavlja i podnožja. U biti, to je glavni dio koji sadrži informacije koje zanimaju posjetitelje stranice. Zaglavlje izgleda impresivno, podnožje sadrži korisne informacije, ali zbog glavnog dijela stranice korisnici se uvijek iznova vraćaju na stranicu. Iako ne mogu dati nikakav savjet o specifičnoj strukturi stranice, predlošci poput onog u Ispisu 9.7 uvelike pojednostavljuju administraciju stranice.

Listing 9.7. Primjer glavnog dijela stranice (index_body.tpl)

/tutorials.php">tutorijali

članci

skripte

kontakt

Dobrodošli u PHPRecipes. početno mjesto za PHP skripte, upute,

i informacije o gurmanskom kuhanju!

Sve zajedno: zaglavlje, podnožje i tijelo

Možda moje raspoloženje najbolje opisuje rečenica pukovnika “Hannibala” Smitha (George Peppard) iz poznate TV serije “The A-Team”: “Volim kad stvari sjednu na svoje mjesto.” Doživljavam nešto slično gdje se različiti predlošci spajaju u cjeloviti web-dokument. Kombiniranjem tri odjeljka dokumenta: header.tpl, index_body.tpl i footer.tpl, možete brzo izgraditi jednostavnu stranicu poput one prikazane u ispisu 9.8.

Listing 9.8. Izrada index.php stranice uključivanjem nekoliko datoteka

// Datoteka: index.php

// Odredište: PHPRecipes početna stranica

// Ispis naslova

uključi("zaglavlje.tpl");

// Ispis glavnog dijela

uključi("tijelo_indeksa.tpl");

// Prikaz podnožja

uključi("podnožje.tpl");

Pa kako? Tri jednostavne naredbe i imate gotovu stranicu. Tekst završne stranice prikazan je u ispisu 9.9.

Listing 9.9. HTML stranica izgrađena u Ispisu 9.8 (index.php)

PHPRecipes

23. kolovoza, 15:17

tutoriali

članci

skripte

kontakt

Dobrodošli u PHPRecipes, početno mjesto za PHP skripte, upute,

i gurmanske kuharske savjete i recepte!

Autorska prava 2000 PHPRecipes. Sva prava pridržana.

kontakt |

svoju privatnost

Na sl. Slika 9.1 prikazuje kako rezultirajuća stranica izgleda u pregledniku. Iako obično ne koristim obrube tablice, ovaj sam ih put iscrtao kako bi se tri dijela stranice jasnije istaknula na ilustraciji.

Riža. 9.1. Izgled stranice izgrađene u listingu 9.8

Optimizacija predloška

U drugoj (po mom mišljenju, poželjnijoj) opciji, predlošci su dizajnirani kao funkcije smještene u zasebnoj datoteci. To daje dodatnu strukturu vašim predlošcima. Ovu datoteku nazivam inicijalizacijskom datotekom i u nju spremam druge korisne informacije. Budući da smo već pogledali relativno duge primjere zaglavlja i podnožja, popisi 9.10 i 9.11 malo su skraćeni kako bi ilustrirali novu ideju.

Listing 9.10. Optimizirani predložak web mjesta (site_init.tpl)

// Datoteka: site_init.tpl

// Svrha: datoteka za inicijalizaciju PhpRecipes

$site_name = "PHPRecipes";

$site_email = " [e-mail zaštićen]";

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

funkcija show_header($site_name) (

<? print $site_name: ?>

Ovo je zaglavlje

funkcija prikaži podnožje()

Ovo je podnožje

Listing 9.11. Korištenje inicijalizacijske datoteke

// Uključi inicijalizacijsku datoteku

uključi("site_init.tpl");

// Ispis naslova

prikaži zaglavlje($site_name);

// Sadržaj tijela Ovo su neke informacije o tijelu

// Prikaz podnožja Show_footer();

Projekt: generator stranica

Iako je većina web stranica koje sam izradio generirala sadržaj glavne stranice na temelju informacija pročitanih iz baze podataka, uvijek postoji nekoliko stranica koje ostaju gotovo nepromijenjene. Konkretno, mogu prikazati informacije o razvojnom timu, podatke za kontakt, oglašavanje itd. Ja obično pohranjujem ove "statične" informacije u zasebnu mapu i koristim PHP skriptu da ih učitam kada stigne zahtjev. Naravno, imate pitanje - ako je ovo statična informacija, čemu služi PHP skripta? Zašto ne učitate obične HTML stranice? Prednost PHP-a je u tome što možete koristiti predloške i po potrebi umetati statične isječke.

<а href = "/static.php?content=$content">Statični naziv stranice

Počnimo s izradom statičnih stranica. Radi jednostavnosti, ograničit ću se na tri stranice koje sadrže informacije o web lokaciji (Ispis 9.12), oglašavanje (Ispis 9.13) i podatke za kontakt (Ispis 9.14).

Listing 9.12. Informacije o stranici (about.html)

O PHPRecipes

Koji programer ne pomiješa cjelonoćno programiranje s gurmanskim kolačićima. Ovdje u PHPRecipesu. jedva da prođe noć a da jedan od naših programera ne pomiješa malo HTML-a s ukusnim tanjurom Portobello gljiva ili čak fondua. Stoga smo vam odlučili donijeti najbolje od onoga što najviše volimo: PHP i hrana!

Tako je, čitatelji. Vodiči, skripte, souffle i još mnogo toga. 0samo na PHPRecipes.

Informacije o oglašavanju

Bez obzira na to dolaze li naučiti najnovije PHP tehnike ili osvježiti kako

ispeći piletinu, možete se kladiti da naši čitatelji donose odluke. Oni su industrija

profesionalci koji donose odluke o tome što njihova tvrtka kupuje.

Za informacije o oglašavanju obratite se

">[e-mail zaštićen].

Listing 9.14. Kontakt detalji (contact.html)

Kontaktirajte nas

Imate li savjet za kodiranje?

Znate koji je savršeni preljev za kandirani batat?

Javite nam! Kontaktirajte tim na [e-mail zaštićen].

Prijeđimo na izradu stranice static.php, koja prikazuje tražene statičke informacije. Ova datoteka (vidi ispis 9.15) uključuje komponente stranice naše stranice i inicijalizacijsku datoteku site_init.tpl.

Listing 9.15. Opći izlaz statičnih stranica (static.php)

// Datoteka: static.php

// Svrha: prikazivanje traženih statičnih stranica.

// UPOZORENJE: ovo pretpostavlja da je datoteka "site_init.tpl" i to je to

// statičke datoteke su u istom direktoriju.

// Učitaj funkcije i varijable include("site_init.tpl"):

// Prikaz zaglavlja show_header($site_name);

// Izlaz traženog sadržaja include("$content.html"):

// Prikaz podnožja show footer();

Sada je sve spremno za izradu glavnog scenarija. Samo ga uključite na stranicu

<а href = "static.php?content=about">Statički naziv stranice

Informacije o oglašavanju

Kontaktirajte nas

Ako kliknete bilo koju od ovih poveznica, vaš preglednik će učitati odgovarajuću statičnu stranicu ugrađenu u static.php!

Rezultati

U ovom poglavlju ste se upoznali s primarnim zadatkom za koji je PHP stvoren - dinamičkom izgradnjom web stranica. Razmotrena su sljedeća pitanja:

  • URL obrada;
  • izgradnja dinamičkog sadržaja;
  • uključivanje i konstrukcija osnovnih predložaka.

Poglavlje završava generatorom stranica, programom koji učitava statične stranice u predložak i olakšava podržavanje velikog broja statičkih HTML stranica.

Sljedeće se poglavlje fokusira na korištenje PHP-a u kombinaciji s HTML obrascima kako bi se znatno poboljšala interaktivnost vaše stranice. A onda - interakcija s bazama podataka! Imate puno zanimljivih stvari za naučiti.


Svijet besplatnih programa i korisnih savjeta
2024 whatsappss.ru