Come configurare smartphone e PC. Portale informativo
  • casa
  • Programmi
  • Metodi di invio della posta. Creazione della pagina principale

Metodi di invio della posta. Creazione della pagina principale

IN Ultimamente Devo sempre più fare i conti con la mediocrità nell'IT. Gli amici chiedono consiglio e quando inizi a capire l'argomento, i tuoi capelli iniziano a rizzarsi in tutti i posti possibili. Scoprire quanto hanno pagato gli amici servizi simili, avverti un attacco di shock.

Decine di migliaia di rubli vengono semplicemente buttati via e invece di semplificare, gli imprenditori li ottengono ulteriori problemi. Forse qualcuno vedrà nella nota i problemi della propria organizzazione e potrà trarre le opportune conclusioni.

Ci sono persone a cui piace rimproverare tutti ed esaltare la propria conoscenza. Ci sono tali “mancini” in ogni campo. Forse nella loro pratica sono passati attraverso tubi di fuoco, acqua e rame e l'hanno fatto ogni diritto ragionare così. Nel campo Tecnologie informaticheÈ difficile incontrare persone che corrispondano a questa descrizione. Esistono troppe tecnologie ed è impossibile essere esperti in tutto.

Una persona può essere esperta in diversi ambiti, ma non in tutti. Ad esempio, la maggior parte del mio lavoro riguarda lo sviluppo di software. Mi sento molto più fiducioso in questo ambito che in quello amministrazione di sistema. Non discuterò mai con un amministratore severo sulle sfumature dell'instradamento dei pacchetti, perché... Io stesso ho una conoscenza superficiale.

Non sarà difficile per me configurare componenti server, impostare un FireWall o un gateway Internet, ma non cerco di perdere tempo studiando in dettaglio i livelli del modello OSI. Non me ne vergogno minimamente, perché... Mi interessa di più un'altra area.

Oggi ho avuto la possibilità di parlare con un tale esperto nel campo dei database. Un uomo che si definiva con orgoglio un professionista ha completamente rovinato il database della CSI e non ha nemmeno pensato di ammettere la sua colpa. Stava semplicemente effettuando un aggiornamento e qualcosa è andato storto. Backup Non voleva fare alcun aggiornamento prima di installarli (davvero, perché?) e quando si presentava un problema, non si preoccupava di scervellarsi. Ho appena caricato una copia di un mese fa e ho riferito del lavoro svolto.

Freddo? Sono quasi caduto dalla sedia per tanta professionalità. Non solo non è stata creata alcuna policy di backup, ma questo artigiano non si è preoccupato di crearne una copia prima operazione importante come aggiornare la struttura del database. Si è scoperto che l'oblio non era il suo problema principale.

Ho preso il numero di telefono di questo specialista e ho deciso di chiamarlo personalmente. Non si sa mai, all'improvviso la persona ha avuto buone ragioni per prendere questa decisione. Sarebbe meglio non chiamare. Non c'erano ragioni, ma c'era molta incompetenza e mancanza di conoscenze di base.

Ha cercato stupidamente di giustificarsi e le mie domande hanno solo causato sorpresa. Immagina, mi ha detto che il programma non utilizza tabelle. Tutto è memorizzato in un unico file. Queste parole hanno completamente ucciso i pezzi di fede in me per un risultato positivo. È stato lui a parlarmi di FireBird.

Poiché tutto è memorizzato in un file e il programma non può "leggere" questo file, è sufficiente tornare a vecchia copia. Perché cercare di capire il problema e almeno risolverlo? Informazioni importanti direttamente dalle tabelle? Non aveva senso continuare ulteriormente la conversazione. Lo specialista ha semplicemente ucciso il lavoro delle persone in un colpo solo in mezzo mese e ha ricevuto una ricompensa.

Se la tua organizzazione non è pronta ad assumere uno specialista IT a tempo pieno, ti consiglio vivamente di documentare la tua strategia di interazione con una persona in arrivo. È necessario stabilire le sue responsabilità su carta e disporre di un elenco delle infrastrutture di cui è responsabile.

Questo non ti salverà dai problemi, ma ti darà comprensione chiara, cosa fa una persona e quali aree del suo lavoro richiedono maggiore attenzione. Ad esempio, se non capisci l'IT e la tua azienda dispone di database da cui dipende la vita dell'organizzazione, non lesinare sull'acquisto di un programma di backup professionale. Lascia che sia lo specialista in visita a configurarlo e riceverai rapporti giornalieri via e-mail sui risultati del backup.

Non è un caso che ho iniziato a parlare Software, Perché in pratica, ho ritenuto che non tutti gli specialisti IT siano pronti ad automatizzare il processo di backup. O si assumono la responsabilità di creare copie da soli o semplicemente giocano alla roulette russa. Di conseguenza, l'unico perdente di questa situazione sei tu, il capo dell'azienda.

22/05/06 83,2K

Hai mai desiderato installare un modulo di feedback sul tuo sito web? Sicuramente hai incontrato script simili. Stranamente, gli script già pronti per l'invio di un modulo via e-mail sono molto popolari (puoi vederlo in qualsiasi archivio di script) e ce ne sono molti. Ce ne sono di semplici in cui non cambia nulla, e ce ne sono di complessi grandi sistemi, che operano su mysql, ti permettono di modificare dinamicamente qualsiasi campo, contengono un sacco di impostazioni... Ma sono davvero necessarie? A mio parere, la necessità di tali sistemi è molto dubbia.

Non potrai testare l'invio della posta sul tuo computer di casa. Per fare ciò avete bisogno di un hosting con supporto PHP e funzioni di invio di posta. Ti consiglio il provider di hosting runweb.ru. Questo fornitore offre ottime tariffe, velocità più alta accesso e servizio eccellente.

Metodi di invio della posta

Invia posta dal server con utilizzando php può essere effettuato in due modi principali.
Voglio esaminare entrambi questi metodi in ordine.

Il primo e più semplice è utilizzando php funzioni mail(). La funzione è molto semplice e immediata, nonostante l'invio di posta da utilizzando la posta() presenta anche una serie di svantaggi. La cosa più importante è che la lettera non venga inviata direttamente, ma tramite PHP. Contemporaneamente programma php inserisce alcuni dei suoi campi nella lettera. Ad esempio, non sarai in grado di indicare correttamente il mittente. Nella maggior parte dei casi, il campo "da" (ovvero da chi proviene la lettera) conterrà il nome del server. Il fatto è che PHP inserisce le sue intestazioni nella riga di servizio della lettera "da".

Tuttavia, l'invio di posta utilizzando la funzione mail() rimane la soluzione più semplice
modo per inviare una lettera dal server. Diamo un'occhiata a questo metodo in modo più dettagliato.

La funzione mail() ha la seguente sintassi:

mail($a, $oggetto, $corpo, $intestazioni);

$to è l'indirizzo del destinatario. Per esempio, " [e-mail protetta]". $subject - l'oggetto della lettera. Ad esempio, "Hai ricevuto una lettera." $body - il testo del messaggio. $headers - qualsiasi intestazione della lettera. Ad esempio, l'indirizzo del mittente sarà simile a questo : "da: [e-mail protetta]".

Qui esempio completo invio di posta utilizzando mail():

posta(" [e-mail protetta]", "Oggetto della lettera", "Ciao! nHai ricevuto una lettera.", "da: nome_sito");

Tieni presente che quando utilizzi questa funzione su un computer di casa, potrebbe generare un errore perché non è possibile inviare un'e-mail senza un server di posta.

Ora vediamo come inviare un'e-mail utilizzando sendmail.

sendmail è programma standard sala operatoria sistemi unix, che invia la posta.
php può eseguire programmi Unix utilizzando lo strumento pipe. Questo strumento Unix ti consente di inviare dati da un programma a un altro, in modo simile a come scriviamo su un file. Solo il file in questo caso è il programma (in particolare sendmail) che riceve i dati.

Il programma sendmail ha molti parametri, ne utilizzeremo alcuni. Per utilizzare sendmail è necessario aprire una pipe verso di esso. In php questo viene fatto utilizzando il comando popen(), che è identico nella sintassi al comando fopen(). Usando popen() apriamo uno stream per sendmail
per scriverci (ricordate il parametro mode "w"?), dopodiché potrete inviargli i dati con il solito comando fputs(). Vediamo come si presenta la procedura completa per inviare una lettera tramite sendmail:

In questo programma, la prima cosa che facciamo è descrivere intestazioni RFC. rfc sono campi di servizio che contengono tutte le informazioni sulla lettera. Puoi vedere un esempio di RFC, ad esempio, in il programma bat! facendo clic con il pulsante destro del mouse sul testo della lettera e selezionando "intestazioni rfc-822" (il nome dell'elemento può variare). Per rimuoverli, ripetere i passaggi. Nell'intestazione descriviamo i campi "content-type", che indicano che la lettera è testo e nella codifica windows-1251 (standard codifica di Windows). "koi8-r" può anche essere usato come codifica, questa è una codifica Unix standard. In questo articolo non considereremo in dettaglio le possibili intestazioni RFC. Lo faremo un po' più tardi,
quando ci avviciniamo a lavorare con la posta. Quindi, dopo aver descritto le variabili del servizio e le intestazioni delle lettere, apriamo sendmail. Prestare attenzione al percorso del programma "/usr/sbin/sendmail". SU server diversi potrebbe differire!
Se questa riga non funziona, chiedi al tuo ISP dove si trova sendmail. Sono specificati i seguenti parametri: "-i -f$from - $recipients". Questi sono parametri standard per l'invio di una lettera e in essi sono inseriti due campi: $da - da chi, $destinatari - indirizzi dei destinatari. Nel nostro caso, la variabile $recipients contiene un solo indirizzo. Puoi infatti utilizzare più indirizzi, separati da uno spazio:

$destinatari = " [e-mail protetta] [e-mail protetta] [e-mail protetta]";

Successivamente, scriviamo prima le intestazioni del messaggio nello stream (la variabile $text_headers), quindi le separiamo con un'interruzione di riga e scriviamo il testo del messaggio. Ultimo passo— chiudere il flusso e verificare la presenza di errori. Se eseguito correttamente, viene inserito uno zero nella variabile $risultato e, se si verifica un errore, viene scritto il numero dell'errore.

Consideriamo ora un esempio di utilizzo delle funzionalità di invio della posta. Per fare ciò, creeremo un modulo di feedback che potrai installare sul tuo sito web. Utilizzeremo sendmail come metodo per inviare una lettera.

Creazione di un modulo di feedback

Il nostro modulo di feedback sarà uno script. Questo script visualizzerà il modulo e invierà l'e-mail.

contatto.php:

Feedback

Connessione diretta
Il tuo nome: *
La tua email: *
Il tuo sito web:
Il tuo messaggio: *

I campi contrassegnati da un asterisco (*) devono essere compilati.

Ora diamo un'occhiata a come funziona questo programma. L'esecuzione inizia con la riga “if (!$a) show_form();”, poiché prima viene specificata una funzione che, ovviamente, non viene eseguita. In questa riga controlliamo se c'è stato un tentativo di compilazione del form (dal form, come puoi vedere, viene passata la variabile $a, che viene controllata in questa riga). Se non è stato fatto alcun tentativo, viene chiamata la funzione show_form(), che visualizza il modulo.

Molte persone iniziano a scrivere un progetto per lavorare con un singolo compito, senza implicare che possa trasformarsi in un sistema di gestione multiutente, ad esempio contenuto o, Dio non voglia, produzione. E tutto sembra fantastico e interessante, tutto funziona finché non inizi a capire che il codice scritto è costituito interamente da stampelle e codice rigido. Il codice è mischiato con layout, interrogazioni e stampelle, a volte addirittura illeggibile. Sorge un problema urgente: quando si aggiungono nuove funzionalità, è necessario armeggiare con questo codice per un tempo molto lungo, ricordando "cosa è stato scritto lì?" e maledici te stesso nel passato.

Potresti anche aver sentito parlare di design pattern e persino sfogliato questi meravigliosi libri:

  • E. Gamma, R. Helm, R. Johnson, J. Vlissides “Tecniche di progettazione orientata agli oggetti. Modelli di progettazione";
  • M. Fowler "Architettura delle applicazioni software aziendali".
E molti, imperterriti davanti alla mole di manuali e documentazioni, tentarono di studiare uno qualsiasi dei moderni framework e, di fronte alla complessità di comprensione (dovuta alla presenza di molti concetti architettonici abilmente collegati tra loro), rimandarono lo studio e l'uso di strumenti moderni “nel dimenticatoio”.

Questo articolo sarà utile principalmente per i principianti. Comunque spero che tra un paio d'ore potrai farti un'idea Implementazioni MVC modello che è alla base di tutti i moderni framework web, e fornisce anche “spuntino” per un’ulteriore riflessione su “come farlo”. Alla fine dell'articolo c'è una selezione di link utili che ti aiuteranno anche a capire in cosa sono costituiti i framework web (oltre a MVC) e come funzionano.

È improbabile che i programmatori PHP esperti trovino qualcosa di nuovo in questo articolo, ma i loro commenti e commenti sul testo principale sarebbero molto utili! Perché Senza teoria la pratica è impossibile, e senza pratica la teoria è inutile, quindi prima ci sarà un po' di teoria e poi passeremo alla pratica. Se hai già familiarità con il concetto MVC, puoi saltare la sezione teorica e passare direttamente alla pratica.

1. Teoria Il pattern MVC descrive un modo semplice per strutturare un'applicazione, il cui scopo è separare la logica aziendale dall'interfaccia utente. Di conseguenza, l'applicazione è più facile da scalare, testare, mantenere e, ovviamente, implementare.

Diamo un'occhiata al diagramma concettuale del pattern MVC (secondo me, questo è il diagramma di maggior successo che abbia mai visto):

Nell'architettura MVC, il modello fornisce i dati e le regole della logica aziendale, la vista è responsabile dell'interfaccia utente e il controller fornisce l'interazione tra il modello e la vista.

Un flusso tipico di un'applicazione MVC può essere descritto come segue:

  • Quando un utente visita una risorsa Web, lo script di inizializzazione crea un'istanza dell'applicazione e la avvia per l'esecuzione.
    Questo mostra una vista, ad esempio, della pagina principale del sito.
  • L'applicazione riceve una richiesta dall'utente e determina il controller e l'azione richiesti. Nel caso della pagina principale, viene eseguita l'azione predefinita ( indice).
  • L'applicazione crea un'istanza del controller ed esegue il metodo di azione,
    che, ad esempio, contiene chiamate di modello che leggono informazioni dal database.
  • Successivamente, l'azione crea una vista con i dati ottenuti dal modello e mostra il risultato all'utente.
  • Modello: contiene la logica aziendale dell'applicazione e include metodi di campionamento (possono essere metodi ORM), elaborazione (ad esempio regole di convalida) e fornitura di dati specifici, il che spesso li rende molto spessi, il che è abbastanza normale.
    Il modello non dovrebbe interagire direttamente con l'utente. Tutte le variabili relative alla richiesta dell'utente devono essere elaborate nel controller.
    Il modello non deve generare HTML o altro codice di visualizzazione che può cambiare a seconda delle esigenze dell'utente. Tale codice dovrebbe essere elaborato nelle visualizzazioni.
    Lo stesso modello, ad esempio: il modello di autenticazione dell'utente può essere utilizzato sia nella parte utente che in quella amministrativa dell'applicazione. In questo caso puoi inserire il codice generale classe separata ed ereditare da esso, definendo metodi specifici della sottoapplicazione nei suoi discendenti.

    Visualizza: utilizzato per specificare la visualizzazione esterna dei dati ricevuti dal controller e dal modello.
    Le viste contengono markup HTML e piccoli inserti di codice PHP per attraversare, formattare e visualizzare i dati.
    Non dovrebbe accedere direttamente al database. Questo è ciò che dovrebbero fare i modelli.
    Non dovrebbe funzionare con i dati ottenuti da una richiesta dell'utente. Questo compito deve essere eseguito dal responsabile del trattamento.
    Può accedere direttamente alle proprietà e ai metodi di un controller o di modelli per ottenere dati pronti per l'output.
    Le viste sono solitamente divise in un modello comune, contenente markup comune a tutte le pagine (ad esempio, un'intestazione e un piè di pagina) e parti del modello utilizzate per visualizzare l'output dei dati dal modello o visualizzare i moduli di immissione dati.

    Il controller è il collante che collega modelli, viste e altri componenti applicazione funzionante. Il titolare del trattamento è responsabile del trattamento delle richieste degli utenti. Il controller non deve contenere query SQL. È meglio tenerli nei modelli. Il controller non deve contenere HTML o altri markup. Vale la pena di tenerlo in considerazione.
    In un'applicazione MVC ben progettata, i controller sono generalmente molto sottili e contengono solo poche dozzine di righe di codice. Cosa non si può dire degli Stupid Fat Controllers (SFC) in CMS Joomla. La logica del controller è abbastanza tipica e la maggior parte viene trasferita alle classi base.
    I modelli, al contrario, sono molto spessi e contengono la maggior parte del codice relativo all'elaborazione dei dati, perché la struttura dei dati e la logica aziendale in essa contenuta sono generalmente piuttosto specifiche per una particolare applicazione.

    1.1. Front Controller e Page Controller Nella maggior parte dei casi, l'interazione dell'utente con un'applicazione web avviene facendo clic sui collegamenti. Guarda ora la barra degli indirizzi del tuo browser: hai ricevuto questo testo da questo link. Altri collegamenti, come quelli sul lato destro di questa pagina, ti forniranno contenuti diversi. Pertanto, il collegamento rappresenta un comando specifico per l'applicazione web.

    Spero che tu abbia già notato che siti diversi possono avere formati di costruzione completamente diversi barra degli indirizzi. Ogni formato può visualizzare l'architettura di un'applicazione web. Anche se non è sempre così, nella maggior parte dei casi è un dato di fatto.

    Consideriamo due opzioni per la barra degli indirizzi, che visualizzano del testo e un profilo utente.

    Codice di elaborazione approssimativo in questo caso:
    switch($_GET["action"]) ( case "about" : require_once("about.php"); // interruzione di pagina "Chi siamo"; case "contatti" : require_once("contacts.php"); // Interruzione di pagina "Contatti"; case "feedback": require_once("feedback.php"); // Interruzione di pagina "Feedback"; default: require_once("page404.php"); // interruzione di pagina "404"; )
    Penso che quasi tutti lo abbiano già fatto prima.

    Utilizzando un motore di routing URL, puoi configurare la tua applicazione per accettare richieste come questa per visualizzare le stesse informazioni:
    http://www.example.com/contacts/feedback

    Qui i contatti rappresentano il controller e il feedback è il metodo del controller dei contatti che visualizza il modulo di feedback, ecc. Torneremo su questo argomento nella parte pratica.

    Vale anche la pena sapere che i router di molti framework web ti consentono di creare percorsi URL personalizzati (specificare cosa significa ciascuna parte dell'URL) e regole per elaborarli.
    Ora abbiamo sufficienti conoscenze teoriche per passare alla pratica.

    2. Esercizio Innanzitutto, creiamo la seguente struttura di file e cartelle:


    Guardando al futuro, dirò che le classi principali Model, View e Controller verranno archiviate nella cartella principale.
    I relativi figli verranno archiviati nelle directory controllers, models e views. Il file index.php è il punto di ingresso nell'applicazione. Il file bootstrap.php avvia il caricamento dell'applicazione, collegando tutti i moduli necessari, ecc.

    Andremo in sequenza; Apriamo il file index.php e riempiamolo con il seguente codice:
    ini_set("visualizzazione_errori", 1); require_once "application/bootstrap.php";
    Non dovrebbero esserci domande qui.

    Successivamente, andiamo immediatamente al file bootstrap.php:
    require_once "core/model.php"; require_once "core/view.php"; require_once "core/controller.php"; require_once "core/route.php"; Percorso::inizio(); //avvia il router
    Per ora le prime tre linee si collegheranno file inesistenti noccioli. Le ultime righe includono il file con la classe router e lo avviano per l'esecuzione chiamando il metodo di avvio statico.

    2.1. Implementazione di un router URL Per ora ci allontaniamo dall'implementazione Modello MVC e facciamo il routing. Il primo passo che dobbiamo fare è scrivere il seguente codice in .htaccess:
    RewriteEngine On RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule .* indice.php [L]
    Questo codice reindirizzerà tutta l'elaborazione della pagina su index.php, che è ciò di cui abbiamo bisogno. Ricordate che nella prima parte abbiamo parlato di Front Controller?!

    Inseriremo il routing fascicolo separato route.php nella directory principale. In questo file descriveremo la classe Route, che eseguirà i metodi del controller, che a loro volta genereranno la visualizzazione della pagina.

    Contenuto del file route.php

    class Route ( funzione statica start() ( // controller e azione predefinita $nome_controller = "Principale"; $nome_azione = "indice"; $routes = esplode("/", $_SERVER["REQUEST_URI"]); // ottieni il nome del controller if (!empty($routes)) ( $controller_name = $routes; ) // ottieni il nome dell'azione if (!empty($routes)) ( $action_name = $routes; ) // aggiungi prefissi $model_name = " Model_".$controller_name; $controller_name = "Controller_".$controller_name; $action_name = "action_".$action_name; // collega il file con la classe del modello (potrebbe non esserci un file del modello) $model_file = strtolower ($model_name). ".php"; $model_path = "application/models/".$model_file; if(file_exists($model_path)) ( include "application/models/".$model_file; ) // collega il file con la classe controller $controller_file = strtolower ($controller_name)..php"; $controller_path = "application/controllers/".$controller_file; if(file_exists($controller_path)) ( include "application/controllers/".$controller_file; ) else ( /* sarebbe corretto lanciare un'eccezione qui, ma per semplificare le cose, reindirizzeremo immediatamente alla pagina 404 */ Route::ErrorPage404(); ) // crea un controller $controller = new $controller_name ; $azione = $nome_azione; if(method_exists($controller, $action)) ( // chiama l'azione del controller $controller->$action(); ) else ( // anche qui sarebbe più saggio lanciare un'eccezione Route::ErrorPage404(); ) ) funzione ErrorPage404( ) ( $host = "http://".$_SERVER["HTTP_HOST"]."/"; header("HTTP/1.1 404 Not Found"); header("Stato: 404 Not Found") ; intestazione(" Posizione:".$host."404"); ) )


    Noto che la classe implementa una logica molto semplificata (nonostante il codice voluminoso) e potrebbe avere anche problemi di sicurezza. Questo è stato fatto intenzionalmente, perché... scrivere una classe di routing completa merita almeno un articolo a parte. Vediamo i punti principali...

    L'elemento dell'array globale $_SERVER["REQUEST_URI"] contiene l'indirizzo completo a cui l'utente ha contattato.
    Ad esempio: example.ru/contacts/feedback

    Utilizzando la funzione esplodere L'indirizzo è diviso in componenti. Di conseguenza, otteniamo il nome del controller, nell'esempio fornito è controller contatti e il nome dell'azione, nel nostro caso - feedback.

    Successivamente, il file del modello (il modello potrebbe mancare) e il file del controller, se presente, vengono collegati e infine viene creata un'istanza del controller e viene richiamata l'azione, ancora una volta, se era descritta nella classe del controller.

    Pertanto, quando si accede, ad esempio, all'indirizzo:
    esempio.com/portfolio
    O
    esempio.com/portfolio/index
    Il router eseguirà le seguenti azioni:

  • includerà il file model_portfolio.php dalla cartella models, contenente la classe Model_Portfolio;
  • includerà il file controller_portfolio.php dalla cartella controllers, contenente la classe Controller_Portfolio;
  • creerà un'istanza della classe Controller_Portfolio e chiamerà l'azione predefinita - action_index, descritta in essa.
  • Se l'utente tenta di accedere all'indirizzo di un controller inesistente, ad esempio:
    esempio.com/ufo
    quindi verrà reindirizzato alla pagina “404”:
    esempio.com/404
    La stessa cosa accadrà se l'utente accede a un'azione non descritta nel controller.2.2. Torniamo all'implementazione MVC Andiamo alla cartella core e aggiungiamo altri tre file al file route.php: model.php, view.php e controller.php


    Lascia che ti ricordi che conterranno le classi base, che ora inizieremo a scrivere.

    Contenuto del file model.php
    Modello di classe (funzione pubblica get_data() ())
    La classe del modello contiene un singolo metodo di recupero dei dati vuoto, che verrà sovrascritto nelle classi discendenti. Quando creeremo le classi discendenti tutto diventerà più chiaro.

    Contenuto del file view.php
    class View ( //public $template_view; // qui puoi specificare la vista generale predefinita. function generate($content_view, $template_view, $data = null) ( /* if(is_array($data)) ( // converte array elementi nelle variabili extract($data); ) */ include "application/views/".$template_view; ) )
    Non è difficile indovinare che metodo creare destinato a formare una visione. Gli vengono passati i seguenti parametri:

  • $content_file - visualizzazioni che mostrano il contenuto della pagina;
  • $template_file - modello comune a tutte le pagine;
  • $data è un array contenente elementi di contenuto della pagina. Solitamente compilato nel modello.
  • La funzione include collega dinamicamente un modello generale (vista) all'interno del quale verrà incorporata la vista
    per visualizzare il contenuto di una pagina specifica.

    Nel nostro caso, il modello generale conterrà intestazione, menu, barra laterale e piè di pagina, e il contenuto delle pagine sarà contenuto in modulo separato. Ancora una volta, questo viene fatto per semplicità.

    Contenuto del file controller.php
    class Controller ( public $model; public $view; function __construct() ( $this->view = new View(); ) function action_index() ( ) )
    Metodo indice_azione- questa è un'azione chiamata per impostazione predefinita; la sovrascriveremo quando implementeremo le classi discendenti.

    2.3. Implementazione delle lezioni discendenti di Modello e Controller, creando View "s Ora inizia il divertimento! Il nostro sito Web di biglietti da visita sarà composto dalle seguenti pagine:
  • casa
  • Servizi
  • Portafoglio
  • Contatti
  • E anche - la pagina "404".
  • Ogni pagina ha il proprio controller dalla cartella controllers e una vista dalla cartella views. Alcune pagine potrebbero utilizzare uno o più modelli dalla cartella dei modelli.


    Nella figura precedente, il file template_view.php è evidenziato separatamente: si tratta di un modello contenente markup comune a tutte le pagine. Nel caso più semplice potrebbe assomigliare a questo:
    casa
    Per dare al sito un aspetto presentabile, progettiamo Modello CSS e integrarlo nel nostro sito Web modificando la struttura del markup HTML e Connessioni CSS e file JavaScript:

    Alla fine dell'articolo, nella sezione “Risultato”, è presente un collegamento a un repository GitHub con un progetto in cui si è proceduto all'integrazione di un semplice template.

    2.3.1. Noi creiamo pagina iniziale Cominciamo con il controller controller_main.php , ecco il suo codice:
    classe Controller_Main estende Controller ( funzione action_index() ( $this->view->generate("main_view.php", "template_view.php"); ) )
    Nel metodo creare un'istanza della classe View, vengono passati i nomi dei file del template generale e della view con il contenuto della pagina.
    Oltre all'azione indice, il controller può ovviamente contenere altre azioni.

    Abbiamo esaminato il file della vista generale in precedenza. Considera il file di contenuto main_view.php:
    Benvenuto!

    OLOLOSHA TEAM è un team di specialisti di prima classe nel campo dello sviluppo di siti Web con molti anni di esperienza nella raccolta di maschere messicane, statue in bronzo e pietra provenienti dall'India e da Ceylon, bassorilievi e sculture create da maestri dell'Africa equatoriale cinque o sei secoli fa...


    Questo contiene markup semplice senza chiamate PHP.
    Per visualizzare la pagina principale è possibile utilizzare uno dei seguenti indirizzi:

    Considereremo un esempio utilizzando una vista che mostra i dati ottenuti dal modello seguente.

    2.3.2. Creare una pagina “Portfolio” Nel nostro caso, la pagina “Portfolio” è l'unica pagina che utilizza il modello.
    Il modello solitamente include metodi di campionamento dei dati, ad esempio:
  • metodi delle librerie native pgsql o mysql;
  • metodi di biblioteche che implementano l'astrazione dei dati. Ad esempio, metodi della libreria PEAR MDB2;
  • Metodi ORM;
  • metodi per lavorare con NoSQL;
  • e così via.
  • Per semplicità, qui non utilizzeremo query SQL o istruzioni ORM. Invece, emuleremo dati reali e restituiremo immediatamente una serie di risultati.
    Inserisci il file del modello model_portfolio.php in cartella modelli. Ecco i suoi contenuti:
    class Model_Portfolio extends Model ( public function get_data() ( return array(array("Anno" => "2012", "Sito" => "http://DunkelBeer.ru", "Descrizione" => "Sito promozionale del Birra scura Dunkel del produttore tedesco Löwenbraü prodotta in Russia dall'azienda produttrice di birra "SUN InBev."), array("Anno" => "2012", "Sito" => "http://ZopoMobile.ru", "Descrizione " => "Catalogo in lingua russa Telefoni cinesi Azienda Zopo attiva Basato su Android Sistema operativo e relativi accessori."), // todo); ) )

    La classe del controller del modello è contenuta nel file controller_portfolio.php, ecco il suo codice:
    class Controller_Portfolio estende Controller ( function __construct() ( $this->model = new Model_Portfolio(); $this->view = new View(); ) function action_index() ( $data = $this->model->get_data( ); $this->view->generate("portfolio_view.php", "template_view.php", $data); ) )
    Ad una variabile dati viene scritto l'array restituito dal metodo ottieni_dati che abbiamo esaminato prima.
    Questa variabile viene quindi passata come parametro del metodo creare, che contiene anche: il nome del file con il template generale e il nome del file contenente la vista con il contenuto della pagina.

    La vista contenente il contenuto della pagina si trova nel file portfolio_view.php.
    Portafoglio

    Tutti i progetti nella tabella seguente sono fittizi, quindi non provare nemmeno a seguire i collegamenti forniti.
    AnnoProgettoDescrizione


    Qui tutto è semplice, la vista mostra i dati ottenuti dal modello.

    2.3.3. Creazione delle pagine rimanenti Le pagine rimanenti vengono create allo stesso modo. Il loro codice è disponibile nel repository GitHub, il cui collegamento è fornito alla fine dell'articolo, nella sezione “Risultato”.3. Risultato Ecco cosa è successo alla fine:

    Screenshot del sito Web dei biglietti da visita risultante



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

    Ma in questa versione ho abbozzato le seguenti classi (e i loro tipi corrispondenti):

    • Controller_Login in cui viene generata una vista con un modulo per l'inserimento di login e password, dopo aver compilato il quale viene eseguita la procedura di autenticazione e, in caso di esito positivo, l'utente viene reindirizzato al pannello di amministrazione.
    • Contorller_Admin con un'azione di indicizzazione che controlla se l'utente è stato precedentemente autorizzato sul sito come amministratore (in tal caso viene visualizzata la vista del pannello di amministrazione) e un'azione di logout per disconnettersi.
    L'autenticazione e l'autorizzazione sono un argomento diverso, quindi non vengono discussi qui, ma viene fornito solo il collegamento fornito sopra in modo da avere qualcosa da cui iniziare.4. Conclusione Il modello MVC viene utilizzato come base architetturale in molti framework e CMS creati per poter sviluppare soluzioni qualitativamente più complesse in un periodo di tempo più breve. Ciò è stato possibile aumentando il livello di astrazione, poiché esiste un limite alla complessità delle strutture con cui il cervello umano può operare.

    Ma non è sempre consigliabile utilizzare framework web come Yii o Kohana, costituiti da diverse centinaia di file, quando si sviluppano semplici applicazioni web (ad esempio siti di biglietti da visita). Ora possiamo creare un bellissimo modello MVC in modo da non mescolare Php, Html, CSS e Codice JavaScript in un unico file.

    Questo articolo è più un punto di partenza per imparare CMF che un esempio di qualcosa di veramente corretto che puoi utilizzare come base per la tua applicazione web. Forse ti ha anche ispirato e stai già pensando di scrivere il tuo microframework o CMS basato su MVC. Ma, prima di reinventare la prossima ruota con “blackjack e puttane”, ripensaci: forse sarebbe più ragionevole indirizzare i tuoi sforzi allo sviluppo e all’aiuto della comunità di un progetto già esistente?!

    P.S.: L'articolo è stato riscritto tenendo conto di alcuni commenti lasciati nei commenti. Le critiche si sono rivelate molto utili. A giudicare dalla risposta: commenti, messaggi privati ​​e numero di utenti che hanno aggiunto il post ai preferiti, l'idea di scrivere questo post si è rivelata non così male. Purtroppo non è possibile tenere conto di tutti i desideri e scrivere di più e in modo più dettagliato per mancanza di tempo... ma forse quei misteriosi individui che hanno sottovalutato la versione originale lo faranno. Buona fortuna con i tuoi progetti!

    5. Una selezione di link utili sull'argomento L'articolo tocca molto spesso il tema dei web framework: questo è un argomento molto ampio, perché anche i microframework sono costituiti da tanti componenti sapientemente interconnessi e ci vorrebbe più di un articolo per parlarne componenti. Tuttavia, ho deciso di portare qui piccola selezione link (che ho seguito mentre scrivevo questo articolo) che in un modo o nell'altro si riferiscono al tema dei framework.

    Tag: aggiungi tag

    Questo tutorial ti mostrerà come creare il modulo di contatto più semplice per un modello HTML.

    Prima di tutto crea 2 file: contact_form.html e contact.php. Il primo file conterrà il codice per il tuo modulo di contatto e il secondo elaborerà i dati di questo modulo.

    HTML

    Di seguito è riportato un esempio del codice HTML del modulo di contatto:

    Il tuo nome

    La tua email

    Messaggio

    Nel browser apparirà così:

    Diamo un rapido sguardo agli aspetti principali di questo modulo. Il tag deve avere 2 attributi aggiuntivi:

    action="contact.php" - determina dove inviare i dati dal modulo di contatto dopo aver inviato la lettera.

    metodo="post" - definisce come inviare i dati dal modulo di contatto al file specificato attributo di azione. I tag devono avere un attributo "nome" con un identificatore univoco. Questo attributo viene utilizzato per identificare i dati del modulo di contatto dopo l'invio di un'e-mail. Ci sono anche 2 elementi aggiuntivi da notare che vengono utilizzati come pulsanti Invia e Cancella, il primo elemento deve essere definito dal tag type="submit" e il secondo dal tag type="reset".

    La procedura per creare un modulo di contatto è abbastanza semplice.

    PHP

    Passiamo alla creazione di un file contact.php che raccoglierà i dati dal modulo di contatto, lo comporrà in un messaggio e lo invierà via email. Scarica il file contact.php finito da questo link. Di seguito è riportato il codice del file con i commenti alle sue sezioni principali:

    Assegnazione dei dati da ciascun campo del modulo di contatto (cf_name, cf_email, cf_message) alle seguenti variabili PHP ($cf_message, $field_email, $field_message) $field_name = $_POST["cf_name"]; $field_email = $_POST["cf_email"]; $field_message = $_POST["cf_message"];

    La funzione $mail_to dovrebbe contenere l'email del proprietario del sito, questo è esattamente l'indirizzo a cui verranno inviati i messaggi. È possibile specificare più indirizzi contemporaneamente E-mail, separandoli con una virgola (ad esempio, [e-mail protetta], [e-mail protetta])

    $mail_to = " [e-mail protetta]";

    Oggetto della lettera che riceverai:

    $subject = "Messaggio da un visitatore del sito ". $nome_campo;

    Costruire una struttura del messaggio:

    $body_message = "Da: ".$field_name."\n"; $body_message .= "E-mail: ".$field_email."\n"; $body_message .= "Messaggio: ".$field_message;

    Costruzione delle intestazioni dei messaggi:

    $headers = "Da: $cf_email\r\n"; $headers .= "Rispondi a: $cf_email\r\n";

    Definiamo la funzione mail() e la assegniamo alla variabile $mail_status, che viene utilizzata per verificare se la lettera è stata inviata con successo.

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

    Se la funzione mail() ha esito positivo, utilizzare il codice seguente:

    If ($mail_status) ( ?> // Stampa un messaggio alert("Grazie te per il messaggio. Ti contatteremo a breve."); // Reindirizzamento a qualche pagina del sito. Puoi anche specificare l'URL completo, ad esempio http://template-help.com window.location = "contact_page.html"; // Stampa un message alert("Messaggio fallito. Per favore, invia un'e-mail a [e-mail protetta]"); // Reindirizza ad alcune pagine del sito. Puoi anche specificare l'URL completo, ad esempio http://template-help.com window.location = "contact_page.html";

    Puoi scaricare file pronti contact_form.html e contact.php

    Mi sento senza speranza, quando sembra che tutto non abbia senso e non porti a nulla, al collasso della vita. Questa sensazione quando ci si arrende e qualsiasi pensiero o azione volta a rassicurare o cambiare qualcosa viene scartato perché inutile. Sono accompagnato da un sentimento di solitudine, quando sembra che nessuno abbia bisogno di me con i miei problemi e le mie difficoltà.

    Prima non facevo proprio niente per facilitarmi le cose, ma, al contrario, comincio a dispiacermi per me stesso, perché mi sento male, non voglio niente e niente mi rende felice.

    Oggi mi occupo di alcune attività: ad esempio pulire la casa, giocare ai videogiochi.

    Anch’io sono curioso di sapere come vengono vissuti i sentimenti, perché probabilmente non so come viverli.

    Senza speranza.

    Solo una volta nella mia vita ho provato una sensazione simile!

    Avevo circa 15 anni.

    Durante la mia successiva visita ad uno dei corsi di formazione, ero pieno di grande fiducia nelle mie capacità, ho raggiunto il successo di volta in volta...

    Ed eccola qui, una situazione, un compito con tre personaggi, si svolge una situazione... banale, come mi sembrava allora.

    Per me la disperazione è la mancanza di voglia di fare qualsiasi cosa, depressione completa e indifferenza a tutto, depressione.

    Non voglio vivere questa sensazione, perché in questo stato tutto cessa di essere importante per me e mi arrendo. Non fuggo e non lo metto a tacere.

    In precedenza, convivevo con esso e lo usavo, ma ora so che esiste una via d'uscita da ogni situazione e il Sole mi aiuterà a trovarla. Non ho prestato attenzione se ero propenso a verbalizzare il sentimento di disperazione ad altre persone, ma sicuramente non sempre lo ammetto a me stesso, anche se col tempo diventa ovvio. Voglio imparare a vedere una via d'uscita dalle situazioni in modo che anche i pensieri non sembrino che non ci sia via d'uscita.

    La disperazione è quando non vedo una via d'uscita e mi arrendo, non voglio fare nulla, perché non ne vedo il senso, quando non c'è speranza, che, in teoria, dovrebbe essere la soluzione ultimo a morire.

    Sicuramente non voglio vivere questa sensazione, ma una via d'uscita c'è sempre, proprio come nella dipendenza dalla droga, dalla quale non vedevo via d'uscita, ma grazie alle Forze Armate e alle persone che me l'hanno mostrata, oggi sono sobrio, con Dio, con te. La disperazione è un sentimento difficile, cerco di delegare e trovare una via d'uscita, perché non esistono situazioni senza speranza. La fede aiuta molto. Ora so che ammettere che una situazione è senza speranza significa arrendersi e non fare nulla, quindi non essere pessimista. In ogni aspetto negativo puoi trovare un positivo: c'è una via d'uscita da ogni situazione senza speranza.

    I migliori articoli sull'argomento