Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Programi
  • Načini slanja pošte. Kreiranje glavne stranice

Načini slanja pošte. Kreiranje glavne stranice

IN U poslednje vreme Sve češće moram da se bavim osrednjošću u IT-u. Prijatelji traže savjet, a kada počnete razumjeti temu, kosa vam se diže na glavi na svim mogućim mjestima. Saznaj koliko su prijatelji platili slične usluge, doživite napad šoka.

Desetine hiljada rubalja se jednostavno bacaju i umjesto pojednostavljivanja dobijaju vlasnici preduzeća dodatni problemi. Možda će neko vidjeti probleme svoje organizacije u bilješci i moći će izvući odgovarajuće zaključke.

Ima ljudi koji vole svakoga grditi i veličati svoje znanje. Takvih "ljevica" ima na svim poljima. Možda su u svojoj praksi prošli kroz vatru, vodu i bakrene cijevi i jesu svako pravo razlog takav. Na terenu informacione tehnologije Teško je sresti ljude koji odgovaraju ovom opisu. Previše je tehnologija i nemoguće je biti stručnjak za apsolutno sve.

Osoba može biti stručnjak u nekoliko oblasti, ali ne u svim. Na primjer, većina mog posla uključuje razvoj softvera. Osjećam se mnogo sigurnije u ovoj oblasti nego u njoj sistemska administracija. Nikada se neću raspravljati sa oštrim administratorom o nijansama usmjeravanja paketa, jer... I sam imam površno znanje.

Neće mi biti teško podesiti serverske komponente, postaviti FireWall ili Internet gateway, ali ne pokušavam da trošim vrijeme na detaljno proučavanje slojeva OSI modela. Ovoga se ni najmanje ne stidim, jer... Više me zanima druga oblast.

Danas sam imao priliku razgovarati sa takvim sveznalcem iz oblasti baza podataka. Čovjek koji se ponosno nazivao profesionalcem potpuno je uništio bazu podataka CIS-a i nije ni razmišljao da prizna svoju krivicu. Upravo je vršio ažuriranje i nešto je pošlo po zlu. Backup Nije želio da radi nikakve nadogradnje prije instaliranja ažuriranja (zaista, zašto?) i kada je nastao problem, nije se trudio razbijati glavu. Upravo sam uploadovao kopiju od prije mjesec dana i prijavio obavljeni posao.

Cool? Skoro sam pao sa stolice od takvog profesionalizma. Ne samo da nije kreirana sigurnosna politika, već se ovaj majstor nije potrudio napraviti kopiju prije takve važna operacija poput ažuriranja strukture baze podataka. Ispostavilo se da zaborav nije njegov glavni problem.

Uzeo sam broj telefona ovog specijaliste i odlučio da ga nazovem lično. Nikad se ne zna, odjednom je osoba imala dobre razloge da donese ovu odluku. Bilo bi bolje da ne zovem. Nije bilo razloga, ali je bilo dosta nesposobnosti i nedostatka osnovnog znanja.

Glupo se pokušao opravdati, a moja pitanja su samo izazvala iznenađenje. Zamislite, rekao mi je da program ne koristi nikakve tabele. Sve je pohranjeno u jednom fajlu. Ove riječi su potpuno ubile komadiće vjere u mene za pozitivan ishod. On mi je rekao za FireBird.

Pošto je sve pohranjeno u jednoj datoteci i program ne može "čitati" ovu datoteku, onda se samo trebate vratiti stara kopija. Zašto pokušavati otkriti problem i barem ga riješiti? važna informacija direktno sa stolova? Nije imalo smisla dalje nastaviti razgovor. Specijalista je jednostavno ubio rad ljudi jednim potezom za pola mjeseca i dobio nagradu.

Ako vaša organizacija nije spremna zaposliti IT stručnjaka s punim radnim vremenom, preporučujem vam da vodite računa o dokumentovanju svoje strategije za interakciju sa osoba koja dolazi. Potrebno je na papiru utvrditi njegove odgovornosti i imati spisak infrastrukturnih objekata za koje je odgovoran.

Ovo vas neće spasiti od problema, ali će vam dati jasno razumevanje, čime se osoba bavi i koja područja njegovog rada zahtijevaju povećanu pažnju. Na primjer, ako ne razumijete IT, a vaša kompanija ima baze podataka o kojima ovisi život organizacije, onda nemojte štedjeti na kupovini profesionalnog backup programa. Pustite gostujućeg stručnjaka da to podesi, a vi ćete primati dnevne izvještaje putem e-pošte o rezultatima sigurnosne kopije.

Nije slučajno što sam počeo da pričam softver, jer u praksi sam smatrao da nisu svi IT stručnjaci spremni da automatizuju proces pravljenja rezervnih kopija. Oni ili sami preuzimaju odgovornost za kreiranje kopija ili jednostavno igraju ruski rulet. Kao rezultat toga, jedini gubitnik iz ove situacije ste vi, šef kompanije.

22.05.06 83.2K

Jeste li ikada poželjeli instalirati obrazac za povratne informacije na svoju web stranicu? Sigurno ste se susreli sa sličnim skriptama. Čudno je da su gotove skripte za slanje obrasca putem e-pošte vrlo popularne (ovo možete vidjeti u bilo kojoj arhivi skripti), a ima ih jako puno. Ima jednostavnih u kojima se ništa ne mijenja, a ima i složenih veliki sistemi, koji rade na mysql-u, omogućavaju vam da dinamički mijenjate bilo koja polja, sadrže gomilu postavki... Ali da li su ona zaista potrebna? Po mom mišljenju, potreba za ovakvim sistemima je vrlo sumnjiva.

Nećete moći testirati slanje pošte na kućnom računaru. Da biste to učinili, potreban vam je hosting sa PHP podrškom i funkcijama slanja pošte. Preporučujem vam hosting provajdera runweb.ru. Ovaj provajder nudi odlične cijene, najveća brzina pristup i odlična usluga.

Načini slanja pošte

Pošaljite poštu sa servera sa koristeći php može se uraditi na dva glavna načina.
Želim da pogledam obje ove metode po redu.

Prvi i najjednostavniji je koristeći php mail() funkcije. Funkcija je vrlo jednostavna i jasna, iako šalje poštu od koristeći poštu() takođe ima niz nedostataka. Najvažnije je da se pismo ne šalje direktno, već preko PHP-a. Istovremeno php program umeće neka od svojih polja u slovo. Na primjer, nećete moći ispravno naznačiti pošiljaoca. U većini slučajeva, polje „od“ (odnosno od koga je pismo stiglo) sadržavaće ime servera. Stvar je u tome što PHP ubacuje svoja zaglavlja u servisnu liniju slova "od".

Međutim, slanje pošte pomoću funkcije mail() ostaje najjednostavnije
način slanja pisma sa servera. Pogledajmo ovu metodu detaljnije.

Funkcija mail() ima sljedeću sintaksu:

mail($to, $subject, $body, $headers);

$to je adresa primaoca. Na primjer, " [email protected]". $subject - predmet pisma. Na primjer, "Primili ste pismo." $body - tekst poruke. $headers - bilo koja zaglavlja pisma. Na primjer, adresa pošiljaoca će izgledati ovako : "od: [email protected]".

Evo kompletan primjer slanje pošte koristeći mail():

mail(" [email protected]", "Predmet pisma", "Zdravo! nPrimili ste pismo.", "sa: ime_stranice");

Imajte na umu da kada koristite ovu funkciju na kućnom računaru, može izazvati grešku jer ne može poslati e-poštu bez mail servera.

Sada da vidimo kako možete poslati e-poštu koristeći sendmail.

sendmail je standardni program operaciona sala unix sistemi, koji šalje poštu.
php može pokrenuti unix programe koristeći pipes alat. Ovaj unix alat vam omogućava da šaljete podatke iz jednog programa u drugi, slično onome kako pišemo u datoteku. Samo je datoteka u ovom slučaju program (posebno sendmail) koji prima podatke.

Program sendmail ima mnogo parametara, mi ćemo koristiti neke od njih. Da biste koristili sendmail, morate otvoriti kanal do njega. U php-u se to radi pomoću naredbe popen(), koja je po sintaksi identična naredbi fopen(). Koristeći popen() otvaramo stream za sendmail
da u njega upišete (zapamtite parametar režima "w"?), nakon čega mu možete poslati podatke uobičajenom komandom fputs(). Pogledajmo kako izgleda kompletna procedura slanja pisma putem sendmaila:

U ovom programu prvo što radimo je opisivanje rfc zaglavlja. rfc su servisna polja koja sadrže sve informacije o pismu. Možete vidjeti primjer rfc-a, na primjer, u program bat! desnim klikom na tekst pisma i odabirom “rfc-822 zaglavlja” (naziv stavke može varirati). Da biste ih uklonili, ponovite korake. U zaglavlju opisujemo polja "content-type", koja označavaju da je pismo tekstualno i u windows-1251 kodiranju (standardno windows kodiranje). "koi8-r" se također može koristiti kao kodiranje, ovo je standardno unix kodiranje. U ovom članku nećemo detaljno razmatrati moguća rfc zaglavlja. Uradićemo to malo kasnije,
kada se približimo radu sa poštom. Dakle, nakon što smo opisali servisne varijable i zaglavlja pisma, otvaramo sendmail. Obratite pažnju na putanju do programa "/usr/sbin/sendmail". On različiti serveri može se razlikovati!
Ako ova linija ne radi, pitajte svog ISP-a gdje se nalazi sendmail. Navedeni su sljedeći parametri: "-i -f$from - $recipients". Ovo su standardni parametri za slanje pisma i u njih se ubacuju dva polja: $od - od koga, $recipients - adrese primaoca. U našem slučaju, varijabla $recipients sadrži samo jednu adresu. U stvari, možete koristiti više adresa, odvojenih razmakom:

$recipients = " [email protected] [email protected] [email protected]";

Zatim, prvo upisujemo zaglavlja poruke u tok (varijabla $text_headers), zatim ih razdvajamo prijelomom reda i pišemo tekst poruke. Poslednji korak— zatvaranje toka i provjeravanje grešaka. Ako se izvrši ispravno, nula se stavlja u varijablu $result, a ako dođe do greške, u nju se upisuje broj greške.

Pogledajmo sada primjer korištenja mogućnosti slanja pošte. Da bismo to učinili, napravit ćemo obrazac za povratne informacije koji možete instalirati na svoju web stranicu. Koristićemo sendmail kao metod za slanje pisma.

Kreiranje obrasca za povratne informacije

Naš obrazac za povratne informacije bit će jedna skripta. Ova skripta će prikazati obrazac i poslati e-mail.

contact.php:

Povratne informacije

Direktna komunikacija
Tvoje ime: *
Vaš email: *
Vaša web stranica:
Tvoja poruka: *

Polja označena zvjezdicom (*) moraju biti popunjena.

Pogledajmo sada kako ovaj program radi. Izvršenje počinje linijom “if (!$a) show_form();”, pošto je prije toga specificirana funkcija koja se, naravno, ne izvršava. U ovom redu provjeravamo da li je bilo pokušaja popunjavanja obrasca (iz obrasca se, kao što vidite, prosljeđuje varijabla $a, koja se provjerava u ovom redu). Ako takav pokušaj nije učinjen, poziva se funkcija show_form() koja prikazuje obrazac.

Mnogi ljudi počnu pisati projekat da rade s jednim zadatkom, ne podrazumijevajući da on može prerasti u višekorisnički sistem upravljanja, na primjer, sadržajem ili, ne daj Bože, produkcijom. I sve izgleda super i cool, sve radi, dok ne počnete da shvatate da se kod koji je napisan u potpunosti sastoji od štaka i tvrdog koda. Kod je pomiješan s rasporedom, upitima i štakama, ponekad čak i nečitljiv. Pojavljuje se gorući problem: kada dodajete nove funkcije, morate dugo petljati s ovim kodom, pamteći "šta je tamo napisano?" i proklinje sebe u prošlosti.

Možda ste čak čuli za uzorke dizajna i čak listali ove divne knjige:

  • E. Gamma, R. Helm, R. Johnson, J. Vlissides “Tehnike objektno orijentisanog dizajna. Dizajnerski obrasci";
  • M. Fowler "Arhitektura softverskih aplikacija preduzeća."
I mnogi su, neustrašivi ogromnih priručnika i dokumentacije, pokušali da prouče bilo koji od modernih okvira i, suočeni sa složenošću razumijevanja (zbog prisustva mnogih arhitektonskih koncepata koji su pametno povezani jedni s drugima), odložili su proučavanje i korištenje moderni alati „pozadi“.

Ovaj članak će biti koristan prvenstveno za početnike. U svakom slučaju, nadam se da ćete za par sati dobiti ideju MVC implementacije obrazac koji leži u osnovi svih modernih web okvira, a također dobijaju "hranu" za dalje razmišljanje o tome "kako to učiniti". Na kraju članka nalazi se izbor korisnih veza koje će vam također pomoći da shvatite od čega se sastoje web okviri (osim MVC-a) i kako rade.

Iskusni PHP programeri teško da će pronaći nešto novo za sebe u ovom članku, ali bi njihovi komentari i komentari na glavni tekst bili od velike pomoći! Jer Bez teorije praksa je nemoguća, a bez prakse teorija je beskorisna, onda će prvo biti malo teorije, a onda ćemo preći na praksu. Ako ste već upoznati sa konceptom MVC-a, možete preskočiti teoriju i preći direktno na praksu.

1. Teorija MVC obrazac opisuje jednostavan način strukturiranja aplikacije, čija je svrha da odvoji poslovnu logiku od korisničkog interfejsa. Kao rezultat toga, aplikaciju je lakše skalirati, testirati, održavati i, naravno, implementirati.

Pogledajmo konceptualni dijagram MVC uzorka (po mom mišljenju, ovo je najuspješniji dijagram koji sam vidio):

U MVC arhitekturi, model obezbeđuje podatke i pravila poslovne logike, pogled je odgovoran za korisnički interfejs, a kontroler obezbeđuje interakciju između modela i pogleda.

Tipičan tok MVC aplikacije može se opisati na sljedeći način:

  • Kada korisnik posjeti web resurs, skripta za inicijalizaciju kreira instancu aplikacije i pokreće je za izvršenje.
    Ovo prikazuje prikaz, recimo, glavne stranice stranice.
  • Aplikacija prima zahtjev od korisnika i određuje traženi kontroler i akciju. U slučaju glavne stranice, izvodi se zadana radnja ( index).
  • Aplikacija incitira kontroler i pokreće metodu akcije,
    koji, na primjer, sadrži pozive modela koji čitaju informacije iz baze podataka.
  • Nakon toga, akcija kreira prikaz s podacima dobivenim iz modela i prikazuje rezultat korisniku.
  • Model - sadrži poslovnu logiku aplikacije i uključuje metode za uzorkovanje (to mogu biti ORM metode), obradu (na primjer, pravila validacije) i pružanje specifičnih podataka, što ga često čini vrlo debelim, što je sasvim normalno.
    Model ne bi trebao direktno komunicirati s korisnikom. Sve varijable koje se odnose na korisnički zahtjev moraju se obraditi u kontroleru.
    Model ne bi trebao generirati HTML ili drugi kod za prikaz koji se može mijenjati ovisno o potrebama korisnika. Takav kod treba obraditi u prikazima.
    Isti model, na primjer: model provjere autentičnosti korisnika može se koristiti iu korisničkom i administrativnom dijelu aplikacije. U tom slučaju možete staviti opći kod odvojena klasa i naslijediti od njega, definirajući metode specifične za pod-aplikaciju u svojim potomcima.

    Pogled - koristi se za određivanje eksternog prikaza podataka primljenih od kontrolera i modela.
    Pregledi sadrže HTML oznake i male umetke PHP koda za prelazak, formatiranje i prikaz podataka.
    Ne treba direktno pristupiti bazi podataka. To bi modeli trebali raditi.
    Ne bi trebalo raditi s podacima dobivenim iz zahtjeva korisnika. Ovaj zadatak mora izvršiti kontrolor.
    Može direktno pristupiti svojstvima i metodama kontrolera ili modela da dobije podatke spremne za izlaz.
    Pregledi se obično dijele na zajednički predložak, koji sadrži oznake zajedničke za sve stranice (na primjer, zaglavlje i podnožje) i dijelove predloška koji se koriste za prikaz izlaznih podataka iz modela ili prikaz obrazaca za unos podataka.

    Kontroler je ljepilo koje povezuje modele, poglede i druge komponente u radna aplikacija. Kontrolor je odgovoran za obradu zahtjeva korisnika. Kontroler ne bi trebao sadržavati SQL upite. Bolje ih je držati u modelima. Kontroler ne bi trebao sadržavati HTML ili druge oznake. Vrijedi ga staviti u vid.
    U dobro dizajniranoj MVC aplikaciji, kontroleri su obično vrlo tanki i sadrže samo nekoliko desetina linija koda. Šta se ne može reći za Stupid Fat Controllers (SFC) u CMS Joomla. Logika kontrolera je prilično tipična i većina se prenosi na osnovne klase.
    Modeli su, naprotiv, vrlo debeli i sadrže većinu koda koji se odnosi na obradu podataka, jer struktura podataka i poslovna logika sadržana u njoj obično su prilično specifične za određenu aplikaciju.

    1.1. Front Controller i Page Controller U većini slučajeva, interakcija korisnika sa web aplikacijom se dešava klikom na linkove. Pogledajte sada adresnu traku vašeg pretraživača - ovaj ste tekst dobili sa ovog linka. Druge veze, poput onih na desnoj strani ove stranice, pružit će vam drugačiji sadržaj. Dakle, veza predstavlja određenu naredbu za web aplikaciju.

    Nadam se da ste već primijetili da različite stranice mogu imati potpuno različite formate konstrukcije adresna traka. Svaki format može prikazati arhitekturu web aplikacije. Iako to nije uvijek slučaj, u većini slučajeva to je jasna činjenica.

    Razmotrimo dvije opcije za adresnu traku, koje prikazuju neki tekst i korisnički profil.

    Približan kod obrade u ovom slučaju:
    switch($_GET["action"]) ( case "about" : require_once("about.php"); // "O nama" prijelom stranice; case "contacts" : require_once("contacts.php"); // Prijelom stranice "Kontakti"; slučaj "feedback" : require_once("feedback.php"); // Prijelom stranice "Povratne informacije"; default: require_once("page404.php"); // prekid stranice "404"; )
    Mislim da su skoro svi to radili ranije.

    Koristeći mehanizam za usmjeravanje URL-a, možete konfigurirati svoju aplikaciju da prihvati zahtjeve poput ovog za prikaz istih informacija:
    http://www.example.com/contacts/feedback

    Ovdje kontakti predstavljaju kontroler, a povratna informacija je metoda kontrolera kontakata koja prikazuje obrazac za povratne informacije itd. Ovom pitanju ćemo se vratiti u praktičnom dijelu.

    Također je vrijedno znati da ruteri mnogih web okvira omogućavaju kreiranje prilagođenih URL ruta (navedite šta svaki dio URL-a znači) i pravila za njihovu obradu.
    Sada imamo dovoljno teoretskog znanja da pređemo na praksu.

    2. Prvo vježbajte, kreirajmo sljedeću strukturu datoteka i mapa:


    Gledajući unaprijed, reći ću da će osnovne klase Model, View i Controller biti pohranjene u core folderu.
    Njihova djeca će biti pohranjena u direktorije kontrolera, modela i pogleda. Datoteka index.php je ulazna tačka u aplikaciju. Datoteka bootstrap.php pokreće učitavanje aplikacije, povezuje sve potrebne module itd.

    Ići ćemo uzastopno; Otvorimo datoteku index.php i popunimo je sljedećim kodom:
    ini_set("display_errors", 1); require_once "application/bootstrap.php";
    Ovdje ne bi trebalo biti nikakvih pitanja.

    Zatim, idemo odmah na datoteku bootstrap.php:
    require_once "core/model.php"; require_once "core/view.php"; require_once "core/controller.php"; require_once "core/route.php"; Route::start(); //pokreni ruter
    Prve tri linije će se za sada povezati nepostojećih fajlova jezgra. Posljednji redovi uključuju datoteku s klasom rutera i pokreću je za izvršenje pozivanjem metode statičkog starta.

    2.1. Implementacija URL rutera Hajdemo za sada da odstupimo od implementacije MVC obrazac i napravimo rutiranje. Prvi korak koji treba da uradimo je da napišemo sledeći kod u .htaccess:
    RewriteEngine na RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule .* index.php [L]
    Ovaj kod će preusmjeriti svu obradu stranice na index.php, što nam je potrebno. Sjećate se da smo u prvom dijelu govorili o Front Controlleru?!

    Mi ćemo postaviti rutiranje zaseban fajl route.php u glavni direktorij. U ovoj datoteci ćemo opisati klasu Route, koja će pokretati metode kontrolera, koji će zauzvrat generirati prikaz stranice.

    Sadržaj datoteke route.php

    class Route ( statička funkcija start() ( // kontroler i zadana akcija $controller_name = "Main"; $action_name = "index"; $routes = explode("/", $_SERVER["REQUEST_URI"]); // get ime kontrolera if (!empty($routes)) ( $controller_name = $routes; ) // dobijemo ime akcije if (!empty($routes)) ( $action_name = $routes; ) // dodaj prefikse $model_name = " Model_".$controller_name; $controller_name = "Controller_".$controller_name; $action_name = "action_".$action_name; // povežite datoteku sa klasom modela (možda ne postoji datoteka modela) $model_file = strtolower ($model_name). ".php"; $model_path = "application/models/".$model_file; if(file_exists($model_path)) (uključuje "application/models/".$model_file; ) // spojite datoteku sa klasom kontrolera $controller_file = strtolower ($controller_name)..php"; $controller_path = "application/controllers/".$controller_file; if(file_exists($controller_path)) (uključuje "application/controllers/".$controller_file; ) else ( /* bilo bi ispravno da se ovdje izbaci izuzetak, ali da pojednostavimo stvari, odmah ćemo se preusmjeriti na stranicu 404 */ Route::ErrorPage404(); ) // kreiraj kontroler $controller = new $controller_name ; $action = $action_name; if(method_exists($controller, $action)) ( // pozovite akciju kontrolera $controller->$action(); ) else ( // ovdje bi također bilo pametnije izbaciti izuzetak Route::ErrorPage404(); ) ) function ErrorPage404( ) ( $host = "http://".$_SERVER["HTTP_HOST"]."/"; header("HTTP/1.1 404 nije pronađen"); header("Status: 404 nije pronađen") ; header(" Lokacija:".$host."404"); ) )


    Napominjem da klasa implementira vrlo pojednostavljenu logiku (uprkos obimnom kodu) i može čak imati sigurnosnih problema. Ovo je urađeno namerno, jer... pisanje punopravne klase rutiranja zaslužuje barem poseban članak. Pogledajmo glavne tačke...

    Element globalnog niza $_SERVER["REQUEST_URI"] sadrži punu adresu na koju je korisnik stupio u kontakt.
    Na primjer: example.ru/contacts/feedback

    Korištenje funkcije eksplodirati Adresa je podijeljena na komponente. Kao rezultat, dobijamo ime kontrolera, za navedeni primjer, ovo je kontroler kontakti i naziv akcije, u našem slučaju - povratne informacije.

    Zatim se povezuju datoteka modela (model možda nedostaje) i datoteka kontrolera, ako postoji i konačno se kreira instanca kontrolera i poziva se akcija, opet, ako je opisana u klasi kontrolera.

    Dakle, kada idete na npr. adresu:
    primjer.com/portfolio
    ili
    primjer.com/portfolio/index
    Ruter će izvršiti sljedeće radnje:

  • će uključiti model_portfolio.php fajl iz foldera modeli, koji sadrži klasu Model_Portfolio;
  • uključit će datoteku controller_portfolio.php iz foldera controllers, koja sadrži klasu Controller_Portfolio;
  • će kreirati instancu klase Controller_Portfolio i pozvati zadanu akciju - action_index, opisanu u njoj.
  • Ako korisnik pokuša pristupiti adresi nepostojećeg kontrolera, na primjer:
    primjer.com/ufo
    tada će biti preusmjeren na stranicu “404”:
    primjer.com/404
    Ista stvar će se dogoditi ako korisnik pristupi radnji koja nije opisana u kontroleru.2.2. Vratimo se implementaciji MVC-a. Idemo u core folder i dodamo još tri fajla u route.php fajl: model.php, view.php i controller.php


    Da vas podsjetim da će oni sadržavati osnovne klase, koje ćemo sada početi pisati.

    Sadržaj datoteke model.php
    Model klase ( javna funkcija get_data() ( ) )
    Klasa modela sadrži jednu praznu metodu dohvaćanja podataka, koja će biti nadjačana u klasama potomcima. Kada kreiramo klase potomaka, sve će postati jasnije.

    Sadržaj datoteke view.php
    class View ( //javni $template_view; // ovdje možete odrediti zadani opći pogled. function generate($content_view, $template_view, $data = null) ( /* if(is_array($data)) ( // pretvoriti niz elemente u varijable ekstrakt ($data); ) */ uključuje "application/views/".$template_view; ) )
    Nije teško pretpostaviti da je ta metoda generirati namijenjeno formiranju pogleda. Njemu se prosljeđuju sljedeći parametri:

  • $content_file - prikazi koji prikazuju sadržaj stranice;
  • $template_file - šablon zajednički za sve stranice;
  • $data je niz koji sadrži elemente sadržaja stranice. Obično se popunjava u modelu.
  • Funkcija uključivanja dinamički povezuje opći predložak (pogled) u koji će pogled biti ugrađen
    za prikaz sadržaja određene stranice.

    U našem slučaju, opći predložak će sadržavati zaglavlje, meni, bočnu traku i podnožje, a sadržaj stranica će biti sadržan u poseban obrazac. Opet, ovo je učinjeno radi jednostavnosti.

    Sadržaj datoteke controller.php
    kontroler klase (javni $model; javni $view; funkcija __construct() ( $this->view = new View(); ) funkcija action_index() () )
    Metoda action_index- ovo je akcija koja se podrazumevano poziva; mi ćemo je nadjačati prilikom implementacije klasa potomaka.

    2.3. Realizacija nastave potomci Modela i Controller, kreirajući View "s Sada zabava počinje! Naša web stranica za posjetnice će se sastojati od sljedećih stranica:
  • Dom
  • Usluge
  • Portfolio
  • Kontakti
  • I takođe - stranica "404".
  • Svaka stranica ima svoj kontroler iz foldera kontroleri i pogled iz foldera views. Neke stranice mogu koristiti model ili modele iz foldera modeli.


    Na prethodnoj slici, datoteka template_view.php je posebno istaknuta - ovo je šablon koji sadrži oznake zajedničke za sve stranice. U najjednostavnijem slučaju to bi moglo izgledati ovako:
    Dom
    Da bismo sajtu dali prezentabilan izgled, mi dizajniramo CSS šablon i integrirati ga u našu web stranicu promjenom strukture HTML oznake i CSS veze i JavaScript fajlovi:

    Na kraju članka, u odjeljku „Rezultat“, nalazi se veza do GitHub spremišta s projektom u kojem su poduzeti koraci za integraciju jednostavnog predloška.

    2.3.1. Mi stvaramo početna stranica Počnimo s kontrolerom controller_main.php , evo njegovog koda:
    klasa Controller_Main proširuje kontroler ( funkcija action_index() ( $this->view->generate("main_view.php", "template_view.php"); ))
    U metodi generirati prosleđuju se instanca klase View, imena fajlova opšteg predloška i pogleda sa sadržajem stranice.
    Osim akcije indeksa, kontroler može naravno sadržavati i druge akcije.

    Ranije smo pregledali fajl opšteg prikaza. Uzmite u obzir fajl sadržaja main_view.php:
    Dobrodošli!

    OLOLOSHA TEAM je tim prvoklasnih stručnjaka u oblasti izrade web stranica sa dugogodišnjim iskustvom u prikupljanju meksičkih maski, bronzanih i kamenih statua iz Indije i Cejlona, ​​bareljefa i skulptura koje su stvarali majstori Ekvatorijalne Afrike pet ili šest stoljeća prije...


    Ovo sadrži jednostavnu oznaku bez ikakvih PHP poziva.
    Za prikaz glavne stranice možete koristiti jednu od sljedećih adresa:

    Razmotrit ćemo primjer koristeći pogled koji prikazuje podatke dobivene iz modela u nastavku.

    2.3.2. Kreirajte stranicu “Portfolio” U našem slučaju, stranica “Portfolio” je jedina stranica koja koristi model.
    Model obično uključuje metode uzorkovanja podataka, na primjer:
  • metode izvornih pgsql ili mysql biblioteka;
  • metode biblioteka koje implementiraju apstrakciju podataka. Na primjer, metode PEAR MDB2 biblioteke;
  • ORM metode;
  • metode za rad sa NoSQL;
  • i sl.
  • Radi jednostavnosti, ovdje nećemo koristiti SQL upite ili ORM izraze. Umjesto toga, mi ćemo emulirati stvarne podatke i odmah vratiti niz rezultata.
    Postavite datoteku modela model_portfolio.php u fascikla modela. Evo njegovog sadržaja:
    class Model_Portfolio proširuje Model ( javna funkcija get_data() ( return array("Year" => "2012", "Site" => "http://DunkelBeer.ru", "Description" => "Promotivna stranica tamno Dunkel pivo njemačkog proizvođača Löwenbraü proizvedeno u Rusiji od strane pivarske kompanije "SUN InBev."), array("Year" => "2012", "Site" => "http://ZopoMobile.ru", "Opis " => "Katalog na ruskom jeziku Kineski telefoni Zopo company on Zasnovan na Androidu OS i dodaci za njih."), // todo); ) )

    Klasa kontrolera modela nalazi se u datoteci controller_portfolio.php, evo njenog koda:
    klasa Controller_Portfolio proširuje kontroler ( funkcija __construct() ( $this->model = new Model_Portfolio(); $this->view = new View(); ) funkcija action_index() ( $data = $this->model->get_data( ); $this->view->generate("portfolio_view.php", "template_view.php", $data); ) )
    Na varijablu podaci niz vraćen metodom je upisan get_data koje smo ranije pogledali.
    Ova varijabla se zatim prosljeđuje kao parametar metode generirati, koji također sadrži: naziv datoteke sa općim predloškom i naziv datoteke koja sadrži prikaz sa sadržajem stranice.

    Prikaz koji sadrži sadržaj stranice nalazi se u datoteci portfolio_view.php.
    Portfolio

    Svi projekti u sljedećoj tabeli su fiktivni, stoga nemojte ni pokušavati pratiti navedene linkove.
    GodinaProjektOpis


    Ovdje je sve jednostavno, prikaz prikazuje podatke dobivene iz modela.

    2.3.3. Kreiranje preostalih stranica Preostale stranice se kreiraju na isti način. Njihov kod je dostupan u GitHub repozitorijumu, link do kojeg se nalazi na kraju članka, u odeljku „Rezultat“.3. Rezultat Evo šta se dogodilo na kraju:

    Snimak ekrana rezultirajuće web stranice za posjetnice



    GitHub link: https://github.com/vitalyswipe/tinymvc/zipball/v0.1

    Ali u ovoj verziji sam skicirao sljedeće klase (i njihove odgovarajuće tipove):

    • Controller_Login u kojem se generiše pogled sa formom za unos logina i lozinke, nakon popunjavanja koje se vrši postupak autentikacije i, ako je uspješan, korisnik se preusmjerava na admin panel.
    • Contorller_Admin s radnjom indeksa koja provjerava da li je korisnik prethodno bio ovlašten na web mjestu kao administrator (ako jeste, prikazuje se prikaz administrativnog panela) i akcijom odjave za odjavu.
    Autentifikacija i autorizacija su druga tema, tako da se o tome ovdje ne raspravlja, već je dat samo gore navedeni link tako da imate od čega početi.4. Zaključak MVC obrazac se koristi kao arhitektonska osnova u mnogim okvirima i CMS-ovima koji su kreirani kako bi se mogla razviti kvalitativno složenija rješenja u kraćem vremenskom periodu. To je omogućeno povećanjem nivoa apstrakcije, budući da postoji granica složenosti struktura sa kojima ljudski mozak može da radi.

    Ali korištenje web okvira kao što su Yii ili Kohana, koji se sastoje od nekoliko stotina datoteka, pri razvoju jednostavnih web aplikacija (na primjer, web-mjesta za posjetnice) nije uvijek preporučljivo. Sada možemo kreirati prekrasan MVC model kako ne bismo miješali Php, Html, CSS i JavaScript kod u jednom fajlu.

    Ovaj članak je više početna točka za učenje CMF-a nego primjer nečega zaista ispravnog što možete koristiti kao osnovu za svoju web aplikaciju. Možda vas je to čak i inspirisalo i već razmišljate o pisanju vlastitog mikroframeworka ili CMS-a zasnovanog na MVC-u. Ali, pre nego što ponovo izmislite sledeći točak sa „blekdžekom i kurvama“, razmislite još jednom: možda bi bilo razumnije da svoje napore usmerite na razvoj i pomoć zajednici već postojećeg projekta?!

    P.S.: Članak je prepisan uzimajući u obzir neke komentare ostavljene u komentarima. Kritika se pokazala veoma korisnom. Sudeći po odazivu: komentarima, PM-ovima i broju korisnika koji su objavu dodali u favorite, ideja o pisanju ovog posta pokazala se i nije tako loša. Nažalost, nije moguće uzeti u obzir sve želje i pisati više i detaljnije zbog nedostatka vremena... ali možda će to učiniti oni misteriozni pojedinci koji su odbacili originalnu verziju. Sretno sa vašim projektima!

    5. Izbor korisnih linkova na ovu temu Članak se vrlo često dotiče teme web okvira - ovo je vrlo široka tema, jer se čak i mikroframework sastoje od mnogo komponenti koje su vješto međusobno povezane i bilo bi potrebno više od jednog članka da se o njima govori komponente. Međutim, odlučio sam da dovedem ovdje mali izbor linkovi (koje sam pratio prilikom pisanja ovog članka) koji se na ovaj ili onaj način odnose na temu okvira.

    Oznake: Dodajte oznake

    Ovaj vodič će vam pokazati kako da kreirate najjednostavniji obrazac za kontakt za HTML šablon.

    Prije svega, kreirajte 2 datoteke: contact_form.html i contact.php. Prva datoteka će sadržavati kod za vaš kontakt obrazac, a druga će obraditi podatke iz ovog obrasca.

    HTML

    Ispod je primjer HTML koda kontakt forme:

    Tvoje ime

    Vaš email

    Poruka

    U pretraživaču će izgledati ovako:

    Pogledajmo na brzinu glavne aspekte ovog obrasca. Oznaka mora imati 2 dodatna atributa:

    action="contact.php" - određuje gdje će se poslati podaci iz kontakt forme nakon slanja pisma.

    method="post" - definira način slanja podataka iz kontakt forme u navedeni fajl atribut akcije. Oznake moraju imati atribut "name" s jedinstvenim identifikatorom. Ovaj atribut se koristi za identifikaciju podataka obrasca za kontakt nakon slanja e-pošte. Tu su i 2 dodatna elementa za napomenuti koji se koriste kao gumbi Submit i Clear, prvi element bi trebao biti definiran oznakom type="submit", a drugi oznakom type="reset".

    Procedura za kreiranje kontakt forme je prilično jednostavna.

    PHP

    Pređimo na kreiranje contact.php fajla koji će prikupljati podatke iz kontakt forme, sastavljati ih u poruku i slati putem e-pošte. Preuzmite gotov contact.php fajl sa ovog linka. Ispod je kod datoteke s komentarima na njene glavne dijelove:

    Dodjeljivanje podataka iz svakog polja kontakt forme (cf_name, cf_email, cf_message) sljedećim PHP varijablama ($cf_message, $field_email, $field_message) $field_name = $_POST["cf_name"]; $field_email = $_POST["cf_email"]; $field_message = $_POST["cf_message"];

    Funkcija $mail_to bi trebala sadržavati e-mail vlasnika stranice, to je upravo adresa na koju će se slati poruke. Možete odrediti nekoliko adresa odjednom Email, odvajajući ih zarezom (na primjer, [email protected], [email protected])

    $mail_to = " [email protected]";

    Predmet pisma koje ćete dobiti:

    $subject = "Poruka od posetioca sajta " . $field_name;

    Izgradnja strukture poruke:

    $body_message = "Od: ".$field_name."\n"; $body_message .= "E-pošta: ".$field_email."\n"; $body_message .= "Poruka: ".$field_message;

    Konstrukcija zaglavlja poruke:

    $headers = "Od: $cf_email\r\n"; $headers .= "Odgovori za: $cf_email\r\n";

    Definiramo funkciju mail() i dodjeljujemo je varijabli $mail_status, koja se koristi za provjeru da li je pismo uspješno poslano.

    $mail_status = mail($mail_to, $subject, $body_message, $headers);

    Ako mail() funkcija uspije, onda koristite kod u nastavku:

    If ($mail_status) ( ?> // Ispis poruke upozorenja ("Hvala ti za poruka. Uskoro ćemo vas kontaktirati."); // Preusmjerite na neku stranicu web-mjesta. Također možete navesti puni URL, npr. http://template-help.com window.location = "contact_page.html"; // Ispisati message alert("Poruka nije uspjela. Molimo pošaljite email na [email protected]"); // Preusmjeravanje na neku stranicu web-mjesta. Također možete odrediti puni URL, npr. http://template-help.com window.location = "contact_page.html";

    Možete preuzeti spremni fajlovi contact_form.html i contact.php

    Osećam se beznadežno, kada se čini da je sve besmisleno i da neće voditi ničemu, krahu života. Ovaj osjećaj kada osoba odustane i sve misli ili radnje osmišljene da nešto umire ili promijene se odbacuju kao beskorisne. Prati me osjećaj usamljenosti, kada se čini da nisam nikome potrebna sa mojim problemima i nevoljama.

    Ranije nisam radila baš ništa da mi bude lakše, ali, naprotiv, počinjem da se sažaljevam, jer mi je loše, ne želim ništa i ništa me ne čini srećnom.

    Danas se bavim nekim aktivnostima: na primjer, čišćenje kuće, igranje kompjuterskih igrica.

    I sama sam radoznala kako se osjećaji žive, jer vjerovatno ne znam kako ih živjeti.

    Beznađe.

    Samo jednom u životu sam doživeo takav osećaj!

    Imao sam oko 15 godina.

    Prilikom sledeće posete jednom od treninga, ispunilo me je veliko poverenje u svoje sposobnosti, uspehe sam postizao svaki put...

    I evo, situacija, zadatak sa tri lika, odigrava se situacija... banalna, kako mi se tada činilo.

    Za mene je beznađe nedostatak želje da se bilo šta uradi, potpuna depresija i ravnodušnost prema svemu, depresija.

    Ne želim da živim ovaj osećaj, jer u ovom stanju sve mi prestaje da bude važno i odustajem. Ne bežim i ne ućutkam.

    Ranije sam samo živeo sa tim i koristio ga, ali sada znam da postoji izlaz iz svake situacije i da će mi Sunce pomoći da ga pronađem. Nisam obraćala pažnju na to da li sam sklona da verbalizujem osećaj beznađa drugim ljudima, ali to definitivno sebi ne priznajem uvek, iako to vremenom postaje očigledno. Želim da naučim da vidim izlaz iz situacija tako da se ne pojavljuju ni misli da izlaza nema.

    Beznađe je kada ne vidim izlaz i odustanem, ne želim ništa da radim, jer ne vidim smisao u tome, kada nema nade, što bi, u teoriji, trebalo da bude poslednji da umre.

    Definitivno ne želim da živim ovaj osećaj, ali uvek postoji izlaz, kao u zavisnosti od droge, iz koje nisam video izlaz, ali zahvaljujući Oružanim snagama i ljudima koji su mi to pokazali, danas sam trezan, sa Bogom, sa vama. Beznađe je težak osjećaj, trudim se da delegiram i nađem izlaz, jer bezizlaznih situacija nema. Vjera puno pomaže. Sada znam da priznati da je situacija beznadežna znači odustati i ne raditi ništa, stoga nemojte biti pesimista. U svakom negativnom možete pronaći pozitivno - postoji izlaz iz svake bezizlazne situacije.

    Najbolji članci na ovu temu