Cgi di commercio illimitato. Commercio elettronico: cos'è? E-Commerce Partners Network è un programma di affiliazione dei più grandi negozi online. Installazione di CGI su Macintosh

E-commerce in chiaro russo. Come funziona il business online?

Ultimamente ci sono stati sempre più progetti legati al trading online. Studiando quest'area, non sono riuscito a trovare una descrizione generale e comprensibile del processo. Pertanto, ho deciso di creare qualcosa come un cheat sheet a cui puoi sempre fare riferimento per comprendere la procedura in un settore come l'e-commerce.

Effettuerò immediatamente una prenotazione concentrandomi sui processi e sui canali che aiutano ad attirare clienti.

E-commerce: di cosa si tratta?

Definizioni provenienti da varie fonti dicono qualcosa sulla vendita di beni o servizi tramite Internet. In parole semplici, l’e-commerce è qualsiasi attività online in cui appare il denaro.

Acquisti, vendite, assicurazioni, banche, moneta elettronica, tutto è qui. Prendilo e firmalo.

Dal bersaglio

Per comprendere la questione, suggerisco di iniziare il percorso dalla fine. Qual è l'obiettivo di qualsiasi attività commerciale? Esatto, guadagna soldi. Quindi, immagina qualsiasi prodotto, ad esempio i calzini in silicone. Perché no!

Ho preso la prima cosa che mi è venuta in mente, ho scoperto che era qualcosa del genere...

Il nostro compito è guadagnare con questi calzini. Pensiamo a Internet. Hmm...perché non costruire un sito web ed è così che andranno le vendite, tienimi alle Maldive! Ma non è così semplice.

Mi piace molto disegnare. Questo aiuta a comprendere i vari processi. Disegnamo?!

Finora il nostro modello si presenta così. Prendiamo i calzini, li mettiamo su Internet e otteniamo soldi. Questo è semplicemente fantastico! I tuoi occhi bruciano, i tuoi palmi sudano e vuoi già metterti al lavoro. Ma hai bisogno di realizzare un sito web o una piattaforma di vendita?

Sito web o piattaforma in vendita

Esistono varie soluzioni per posizionare il tuo prodotto sul World Wide Web. Puoi creare il tuo sito web o utilizzare piattaforme di terze parti (gruppi, pagine sui social network, bacheche, ecc.). Fermiamoci al sito.

Hai ordinato un sito Web, hai preso un modello già pronto o lo hai creato tu stesso utilizzando un costruttore di siti Web (puoi cercare su Google CMS), non importa. Poi hanno messo un mucchio di calzini di silicone di diversi tipi ed erano felici.

Scusate se interrompo la lettura. Unisciti al mio canale Telegram. Nuovi annunci di articoli, sviluppo di prodotti digitali e growth hack, è tutto lì. Ti aspetto! Continuiamo...

Sistemi di pagamento

Ma affinché una persona possa acquistare da te qui e ora, sarà necessario modificare i sistemi di pagamento. Questo è un tipo di servizio che ti consente di effettuare acquisti online tramite: carte bancarie, denaro su Internet, telefoni cellulari e tante altre cose. Per questo dovrai condividere una percentuale delle transazioni, ma in questo modo ti semplificherai la vita.

Scegli il servizio che fa per te. Da qualche parte la percentuale sarà più alta e da qualche parte ci sarà un abbonamento o qualcos'altro. Basta fare una piccola ricerca. Inserisci il codice richiesto sul tuo sito web, collega tutte le transazioni al conto della tua carta e voilà!

Sembrerebbe tutto. C'è il sito, anche le schede prodotto e funziona anche il pulsante “acquista”, ma manca qualcosa... Non c'è flusso di clienti che acquisteranno.

Flussi di clienti

Dove: CAC = Costo per l'acquisizione di un nuovo cliente. MCC (costi della campagna di marketing) = Il costo totale delle spese di marketing volte ad attirare i clienti (ma non a trattenerli). W (stipendi) = Stipendio per operatori di marketing e responsabili delle vendite. S (software) = Il costo del software utilizzato nella pubblicità e nelle vendite (ad esempio, la piattaforma di vendita utilizzata, l'automazione del marketing, i test A/B, i servizi di analisi, ecc.). PS (servizi professionali) = Costo dei servizi professionali forniti agli uffici marketing e vendite (progettazione, consulenza, ecc.). O (altro) = Altri costi generali relativi ai reparti marketing e vendite. CA (clienti acquisiti) = Numero totale di clienti attratti.

Ma non dobbiamo dimenticare la qualità del cliente, LTV aiuterà qui.

Metriche importanti: LTV

Il Live Time Value, il ciclo di vita del cliente, è un altro indicatore nell’e-commerce che deve essere preso in considerazione. Mostra quanto reddito guadagna in media un cliente. Esistono diversi approcci al calcolo, io ho scelto quello effettivo basato sul profitto, in quanto uno dei più accurati.

Questa è semplicemente la somma delle entrate totali nell'intera cronologia degli acquisti per ogni singolo cliente. Aggiungi la somma di tutti gli acquisti (transazioni) dei clienti alla transazione N, dove la transazione N è l'ultimo acquisto effettuato dal cliente con la tua azienda. Se hai accesso a tutti i dati delle transazioni dei clienti, puoi calcolarli facilmente utilizzando Excel.

LTV = (transazione 1 + transazione 2 + transazione 3... + transazione N) x quota di profitto nelle entrate.

Il calcolo del LTV basato sull'utile netto mostra in definitiva il profitto effettivo che un cliente apporta alla tua azienda. Ciò tiene conto del costo del servizio clienti, del costo di fidelizzazione, del costo di attrazione, ecc. Il risultato è un intero complesso di calcoli basati su dati individuali. Il profitto totale generato per cliente nel tempo ti fornirà una comprensione accurata della redditività dei tuoi clienti fino ad oggi.

Altri approcci possono essere trovati su.

Indicatori importanti: rapporto CAC e LTV

Per comprendere la redditività di un'impresa, è molto importante osservare il rapporto tra i due rapporti CAC:LTV menzionati.

  • Meno di 1:1 - Stai correndo a tutta velocità verso la bancarotta.
  • 1:1 – Perdi denaro per ogni cliente attratto.
  • 1:2 – Sembra buono, ma sembra che tu non stia investendo abbastanza denaro e potresti svilupparti più velocemente. Lancia campagne di acquisizione clienti più aggressive e ottieni tassi vicini a 1:3.
  • 1:3 – Rapporto ideale. Hai un’attività fiorente e un modello di business forte.

Indicatori importanti: il ROI non dimenticare

Come abbiamo discusso in precedenza, nell’e-commerce è necessario capire chiaramente se è vantaggioso utilizzare un canale di acquisizione o meno. Oltre a LTV e CAC, esiste un altro indicatore importante: il ROI. Mostra se il tuo investimento, nel nostro caso nella pubblicità, ha dato i suoi frutti. Questo è. quanto ci ha portato alla fine 1 rublo investito.

Per il calcolo viene utilizzata una formula molto semplice:

Dove “entrate della campagna” sono la differenza tra le entrate derivanti dal canale e il costo del tuo prodotto. E per calcolare il profitto, sottrai i costi pubblicitari.

Pertanto, una formula più dettagliata sarebbe simile a questa:

ROI = (Entrate del canale – Costo) – Spese pubblicitarie/Spese pubblicitarie x 100%

Leggi un esempio più dettagliato con il calcolo. Infatti, questa semplice formula viene inserita nella stessa tabella Excel, dove tutto viene calcolato automaticamente.

Tutti e tre gli indicatori di cui abbiamo discusso sono importanti nell'e-commerce. Ognuno di essi ti consente di trovare colli di bottiglia nei tuoi flussi e di lavorare con essi. È qui che risiede il potenziale di crescita per le imprese. Ho aggiunto qualcosa in più al nostro modello con i calzini.

È impossibile racchiudere tutto in un unico materiale e chi lo leggerà per così tanto tempo? Successivamente farò una guida a parte sulle sfumature dell’e-commerce che possono interferire con le vendite.

Totale

Nel complesso, ora hai una conoscenza generale del trading online o dell'e-commerce. Inoltre, come si suol dire: "Il diavolo è nei dettagli". Studia ogni canale separatamente, calcola gli indicatori di prestazione e cerca nuovi approfondimenti nelle piccole cose. Vendite su Internet per te e molto altro ancora! E ho ancora un materiale.

Sì, quasi dimenticavo, buon anno nuovo, cari lettori! Ti auguro grandi vittorie e risultati il ​​prossimo anno!

Andover, Massachusetts, 19 novembre 2003

Il Gruppo Commerciale, Inc. (NYSE: CGI), il più grande produttore di assicurazioni automobilistiche private per passeggeri nel Massachusetts e CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), fornitore leader di servizi informatici e di elaborazione aziendale, ha annunciato oggi la firma di un rinnovo del contratto BPO (Business Process Outsourcing) della durata di sei anni, del valore di 35 milioni di dollari. CGI fornirà servizi completi di elaborazione delle politiche per le linee automobilistiche commerciali e passeggeri private del Massachusetts, oltre a fornire lo strumento di interfaccia per agenzie CollaborativeEdge di CGI, supporto e manutenzione delle applicazioni, supporto normativo, consulenza sui sistemi e servizi di gestione dei documenti.

Gerald Fels, vicepresidente esecutivo e CFO di Commerce Group, ha dichiarato: "In qualità di fornitore leader di automobili private per passeggeri in Massachusetts, il nostro obiettivo è fornire ai nostri agenti e dipendenti servizi che li aiutino a raggiungere il massimo livello. Nel corso degli anni abbiamo coltivato un forte rapporto con la CGI. Il loro sistema è robusto e accurato e il loro team ha molta familiarità con i nostri sistemi di elaborazione interni. Questo è importante per noi."

Serge LaPalme, presidente dei servizi assicurativi di CGI, ha aggiunto: "Siamo molto lieti di continuare il nostro rapporto con Commerce Group, che dura da oltre 30 anni. Il Commerce Group continua a essere uno dei nostri stimati partner commerciali ed è strategico per il nostro successo. Aiutando i nostri clienti a concentrarsi ulteriormente sul loro core business, stiamo sfruttando le nuove tecnologie quando e dove ha senso. Il nostro team conosce a fondo il settore assicurativo e il contesto normativo davvero unico dello Stato e, di conseguenza, è rapido per adattare le soluzioni esistenti a questo settore in continua evoluzione."

Informazioni su The Commerce Group, Inc.

The Commerce Group, Inc., una holding assicurativa, ha sede a Webster, Massachusetts. Le filiali di assicurazioni contro danni e proprietà di Commerce Group includono The Commerce Insurance Company e Citation Insurance Company in Massachusetts, Commerce West Insurance Company in California e American Commerce Insurance Company in Ohio. Attraverso le attività assicurative combinate delle sue filiali, Commerce Group è classificata al 22° posto il più grande gruppo di assicurazioni automobilistiche personali del paese da A.M. Migliore, sulla base delle informazioni sui premi scritte dirette del 2002.

A proposito di CGI
Fondata nel 1976, CGI è la quinta più grande azienda indipendente di servizi informatici del Nord America, in base al numero dei suoi dipendenti. CGI e le sue società affiliate impiegano 20.000 professionisti. Il fatturato annuo di CGI è attualmente di 2,8 miliardi di dollari canadesi (1,9 miliardi di dollari USA) e al 30 settembre 2003, il portafoglio ordini di CGI era di 12,3 miliardi di dollari canadesi (9,1 miliardi di dollari USA). CGI fornisce servizi IT e di processi aziendali end-to-end a clienti in tutto il mondo da uffici in Canada, Stati Uniti ed Europa. Le azioni di CGI sono quotate sul TSX (GIB.A) e sul NYSE (GIB) e sono incluse nell'indice TSX 100 Composite nonché negli indici S&P/TSX Canadian Information Technology e Canadian MidCap.

2012: Acquisto della britannica Logica

Nel giugno 2012, CGI Group ha annunciato di aver firmato un accordo per l'acquisizione del più grande integratore di sistemi europeo Logica. L’importo della transazione è di 2,8 miliardi di dollari canadesi (2,7 miliardi di dollari). Nell'ambito degli accordi raggiunti, CGI ha accettato anche di assumersi l'obbligo di rimborsare il debito di Logica per un importo di 515 milioni di dollari canadesi.

Per finanziare la transazione, CGI prevede di raccogliere 1 miliardo di dollari canadesi emettendo ulteriori 46,7 milioni di azioni, prendere in prestito 2 miliardi di dollari canadesi dalla Canadian Imperial Bank of Commerce, dalla National Bank of Canada e dalla Toronto-Dominion Bank, e circa 650 milioni di dollari canadesi dollari in più dollari - entro l'attuale linea di credito.

Il prezzo per azione proposto era superiore del 59,8% rispetto al prezzo di chiusura di Logica del 30 maggio 2012. L'operazione rappresenta circa 6,6 volte l'utile di Logica prima di interessi, imposte, svalutazioni e ammortamenti (EBITDA) per l'anno in corso, periodo di 12 mesi terminato il 31 dicembre 2011.

Si prevede che l'acquisizione di Logica aumenterà gli utili per azione di CGI dal 25% al ​​30%, esclusi i costi di acquisizione e integrazione. Come risultato della fusione, la forza lavoro e i ricavi annuali della società risultante saranno più del doppio di quelli di CGI. Il personale della nuova società sarà di circa 72mila dipendenti dislocati in uffici in 43 paesi, e il fatturato annuo sarà di circa 10,4 miliardi di dollari canadesi (9,6 miliardi di dollari).

La nuova società sarà la sesta più grande tra i consulenti IT del mondo. Secondo le stime di Reuters, le più grandi tra queste sono IBM, Accenture, Cap Gemini, Tata Consultancy e Infosys.

"Logica è un'azienda leader nel settore dei servizi tecnologici e aziendali con professionisti dedicati e clienti fidati a lungo termine", ha affermato il presidente e amministratore delegato di CGI Michael Roach. "Siamo certi che stiamo facendo la cosa giusta". al giusto prezzo e al momento giusto per creare uno dei pochi maggiori fornitori indipendenti di servizi tecnologici end-to-end."

Il consiglio di amministrazione di CGI ha approvato all'unanimità l'operazione. Si prevede che sarà completato entro settembre 2012, dopo aver ricevuto l'approvazione degli azionisti e seguendo le procedure standard. Il completamento del processo di integrazione aziendale è previsto entro 3 anni

Grazie al World Wide Web, quasi chiunque può fornire informazioni on-line in una forma che sia gradevole alla vista e possa essere ampiamente diffusa. Senza dubbio hai navigato in Internet e visto altri siti, e ora probabilmente sai che acronimi spaventosi come "HTTP" e "HTML" sono semplicemente una scorciatoia per "Web" e "il modo in cui le informazioni sono espresse su Internet". Potresti già avere una certa esperienza nella presentazione di informazioni su Internet.

Internet si è rivelato un mezzo ideale per la distribuzione delle informazioni, come dimostra la sua enorme popolarità e il suo ampio sviluppo. Sebbene alcuni abbiano messo in dubbio l’utilità di Internet e ne attribuiscano lo sviluppo diffuso e la popolarità principalmente alla pubblicità intrusiva, Internet è innegabilmente un mezzo importante per presentare tutti i tipi di informazioni. Non solo sono disponibili molti servizi per fornire informazioni aggiornate (notizie, meteo, eventi sportivi in ​​diretta) e materiale di riferimento in formato elettronico, ma sono disponibili anche quantità significative di altri tipi di dati. L'IRS, che ha distribuito tutti i moduli di dichiarazione dei redditi del 1995 e altre informazioni tramite il World Wide Web, ha recentemente ammesso di ricevere posta dai fan per il suo sito web. Chi avrebbe mai pensato che l'IRS avrebbe mai ricevuto posta dai fan? Questo non perché il suo sito fosse ben progettato, ma perché si era rivelato uno strumento davvero utile per migliaia, forse milioni, di persone.

Cosa rende il Web un servizio di informazione unico e così attraente? Innanzitutto fornisce un'interfaccia ipermediale ai dati. Pensa al disco rigido del tuo computer. In genere, i dati sono espressi in modo lineare, simile a un file system. Ad esempio, hai un numero di cartelle e all'interno di ciascuna cartella ci sono documenti o altre cartelle. Il web utilizza un paradigma diverso per esprimere le informazioni chiamato ipermedia. Un'interfaccia ipertestuale è costituita da un documento e da collegamenti. I link sono parole su cui si fa clic per vedere altri documenti o trovare altri tipi di informazioni. Il Web espande il concetto di ipertesto per includere altri tipi di media, come grafica, suoni, video (da qui il nome "ipermedia"). La selezione di testo o grafica su un documento consente di visualizzare le informazioni correlate sull'elemento selezionato in qualsiasi numero di moduli.

Quasi tutti possono trarre vantaggio da questo modo semplice e unico di presentare e distribuire le informazioni, dagli accademici che desiderano utilizzare immediatamente i dati con i propri colleghi agli uomini d'affari che condividono informazioni sulla propria azienda con tutti. Tuttavia, sebbene dare informazioni sia estremamente importante, negli ultimi anni molti hanno ritenuto che ricevere informazioni sia un processo altrettanto importante.

Sebbene il Web fornisca un'interfaccia ipermediale unica per le informazioni, esistono molti altri modi efficaci per distribuire i dati. Ad esempio, servizi di rete come File Transfer Protocol (FTP) e il newsgroup Gopher esistevano molto prima del World Wide Web. La posta elettronica è stata il mezzo principale per la comunicazione e lo scambio di informazioni su Internet e sulla maggior parte delle altre reti fin dall'inizio di queste reti. Perché Internet è diventato un modo così popolare di distribuire informazioni? L'aspetto multimediale di Internet ha contribuito in modo significativo al suo successo senza precedenti, ma affinché Internet sia più efficace deve essere interattivo.

Senza la capacità di ricevere input dall'utente e fornire informazioni, il Web sarebbe un ambiente completamente statico. Le informazioni sarebbero disponibili solo nel formato specificato dall'autore. Ciò minerebbe una delle capacità dell’informatica in generale: l’informazione interattiva. Ad esempio, piuttosto che costringere l'utente a visualizzare più documenti come se stesse sfogliando un libro o un dizionario, sarebbe meglio consentire all'utente di identificare parole chiave su un argomento di interesse. Gli utenti possono personalizzare la presentazione dei dati anziché fare affidamento su una struttura rigida definita dal fornitore di contenuti.

Il termine "server Web" può essere fuorviante perché può riferirsi sia alla macchina fisica che al software utilizzato per comunicare con i browser Internet. Quando un browser richiede un determinato indirizzo Web, si connette innanzitutto alla macchina tramite Internet, inviando al software del server Web una richiesta del documento. Questo software funziona continuamente, aspettando che tali richieste arrivino e rispondendo di conseguenza.

Sebbene i server possano inviare e ricevere dati, il server stesso ha funzionalità limitate. Ad esempio, il server più primitivo può inviare solo il file richiesto al browser. Il server di solito non sa cosa fare con questo o quell'input aggiuntivo. Se l'ISP non dice al server come gestire queste informazioni aggiuntive, molto probabilmente il server ignorerà l'input.

Affinché il server possa eseguire altre operazioni oltre alla ricerca e all'invio di file al browser Internet, è necessario sapere come espandere le funzionalità del server. Ad esempio, un server Web non può effettuare ricerche in un database in base a una parola chiave immessa da un utente e restituire più documenti corrispondenti a meno che tale capacità non sia stata programmata in qualche modo nel server.

Cos'è la CGI?

La Common Gateway Interface (CGI) è un'interfaccia al server che consente di estendere le funzionalità del server. Utilizzando CGI, puoi interagire in modo interattivo con gli utenti che accedono al tuo sito. A livello teorico, CGI consente al server di essere in grado di analizzare (interpretare) l'input dal browser e restituire informazioni in base all'input dell'utente. A livello pratico, CGI è un'interfaccia che consente a un programmatore di scrivere programmi che comunicano facilmente con un server.

In genere, per espandere le capacità del server, è necessario modificare manualmente il server. Questa soluzione non è auspicabile perché richiede la comprensione del livello inferiore della programmazione di rete del protocollo Internet. Ciò richiederebbe anche la modifica e la ricompilazione del codice sorgente del server o la scrittura di un server personalizzato per ciascuna attività. Supponiamo che tu voglia estendere le capacità del server in modo che agisca come un gateway Web-to-e-mail, prendendo le informazioni immesse dall'utente dal browser e inviandole tramite e-mail a un altro utente. Il server dovrebbe inserire il codice per analizzare l'input dal browser, inoltrarlo via e-mail all'altro utente e inoltrare la risposta al browser tramite la connessione di rete.

Innanzitutto, tale attività richiede l'accesso al codice del server, cosa che non è sempre possibile.

In secondo luogo, è difficile e richiede una vasta conoscenza tecnica.

Terzo, questo si applica solo a un server specifico. Se devi spostare il tuo server su un'altra piattaforma, dovrai eseguire o almeno dedicare molto tempo al porting del codice su quella piattaforma.

Perchè CGI?

CGI offre una soluzione portatile e semplice a questi problemi. Il protocollo CGI definisce un modo standard per i programmi di comunicare con un server Web. Senza alcuna conoscenza particolare, è possibile scrivere un programma in qualsiasi linguaggio macchina che si interfaccia e comunica con il server Web. Questo programma funzionerà con tutti i server Web che supportano il protocollo CGI.

La comunicazione CGI viene eseguita utilizzando input e output standard, il che significa che se sai come stampare e leggere i dati utilizzando il tuo linguaggio di programmazione, puoi scrivere un'applicazione server Web. A parte l'analisi di input e output, programmare applicazioni CGI è quasi equivalente a programmare qualsiasi altra applicazione. Ad esempio, per programmare il programma "Hello, World!", si utilizzano le funzioni di stampa della propria lingua e il formato definito per i programmi CGI per stampare il messaggio appropriato.

Selezione di un linguaggio di programmazione

Poiché CGI è un'interfaccia universale, non sei limitato a nessun linguaggio macchina specifico. Una domanda importante che ci viene posta spesso è: quali linguaggi di programmazione si possono utilizzare per la programmazione CGI? È possibile utilizzare qualsiasi linguaggio che consenta di eseguire le seguenti operazioni:

  • Stampa su output standard
  • Leggi dall'input standard
  • Leggi dalle modalità variabili

Quasi tutti i linguaggi di programmazione e molti linguaggi di scripting fanno queste tre cose e puoi usarne una qualsiasi.

Le lingue rientrano in una delle seguenti due classi: tradotte e interpretate. Un linguaggio tradotto come C o C++ è solitamente più piccolo e più veloce, mentre i linguaggi interpretati come Perl o Rexx a volte richiedono il caricamento di un interprete di grandi dimensioni all'avvio. Inoltre, puoi distribuire codici binari (codice che si traduce in linguaggio macchina) senza codice sorgente se la tua lingua è traducibile. Distribuire script interpretabili di solito significa distribuire il codice sorgente.

Prima di scegliere una lingua, devi prima considerare le tue priorità. È necessario valutare i vantaggi della velocità e dell'efficienza di un linguaggio di programmazione rispetto alla facilità di programmazione di un altro. Se desideri imparare un'altra lingua, invece di usare quella che già conosci, valuta attentamente i vantaggi e gli svantaggi di entrambe le lingue.

I due linguaggi più comunemente usati per la programmazione CGI sono C e Perl (entrambi trattati in questo libro). Entrambi presentano chiari vantaggi e svantaggi. Perl è un linguaggio di altissimo livello e allo stesso tempo potente, particolarmente adatto per l'analisi del testo. Sebbene la sua facilità d'uso, flessibilità e potenza lo rendano un linguaggio attraente per la programmazione CGI, le sue dimensioni relativamente grandi e il funzionamento più lento a volte lo rendono inadatto per alcune applicazioni. I programmi C sono più piccoli, più efficienti e forniscono un controllo del sistema di livello inferiore, ma sono più complessi da programmare, non dispongono di routine di elaborazione del testo integrate leggere e sono più difficili da eseguire il debug.

Quale linguaggio è più adatto alla programmazione CGI? Quello che ritieni più conveniente dal punto di vista della programmazione. Entrambi sono ugualmente efficaci per la programmazione di applicazioni CGI e, con le librerie appropriate, entrambi hanno capacità simili. Tuttavia, se si dispone di un server difficile da raggiungere, è possibile utilizzare programmi C tradotti più piccoli. Se è necessario scrivere rapidamente un'applicazione che richiede molto lavoro di elaborazione del testo, è possibile utilizzare invece Perl.

Avvertenze

Esistono alcune importanti alternative alle applicazioni CGI. Molti server ora includono la programmazione API, che semplifica la programmazione delle estensioni server dirette rispetto alle applicazioni CGI autonome. I server API sono generalmente più efficienti dei programmi CGI. Altri server includono funzionalità integrate in grado di gestire elementi speciali non CGI, come il collegamento al database. Infine, alcune applicazioni possono essere gestite da alcune nuove tecnologie lato client (piuttosto che lato server) come Java. Con cambiamenti tecnologici così rapidi, la CGI diventerà presto obsoleta?

Difficilmente. La CGI presenta numerosi vantaggi rispetto alle tecnologie più recenti.

  • È versatile e portatile. Puoi scrivere un'applicazione CGI utilizzando quasi tutti i linguaggi di programmazione su qualsiasi piattaforma. Alcune alternative, come l'API del server, ti limitano a determinate lingue e sono molto più difficili da imparare.
  • È improbabile che le tecnologie lato client come Java sostituiranno CGI, perché ci sono alcune applicazioni che le applicazioni lato server sono molto più adatte a eseguire.
  • Molte delle limitazioni del CGI sono limitazioni dell'HTML o dell'HTTP. Man mano che gli standard Internet nel loro insieme si evolvono, anche le capacità CGI si evolvono.

Riepilogo

La Common Gateway Interface è il protocollo mediante il quale i programmi interagiscono con i server Web. La versatilità della CGI offre ai programmatori la possibilità di scrivere programmi gateway in quasi tutte le lingue, sebbene esistano molti compromessi associati ai diversi linguaggi. Senza questa capacità, la creazione di pagine Web interattive sarebbe difficile, richiederebbe nella migliore delle ipotesi modifiche al server, e l'interattività non sarebbe disponibile per la maggior parte degli utenti che non sono amministratori del sito.

Capitolo 2: Nozioni di base

Diversi anni fa ho creato una pagina per un college di Harvard dove le persone potevano inviare commenti su di loro. All’epoca Internet era giovane e la documentazione scarsa. Io, come molti altri, ho fatto affidamento su breve documentazione e sistemi di programmazione creati da altri per imparare a programmare in CGI. Sebbene questo metodo di studio richiedesse alcune ricerche, molti esperimenti e creasse molte domande, era molto efficace. Questo capitolo è il risultato del mio primo lavoro con la CGI (con qualche modifica, ovviamente).

Sebbene sia necessario del tempo per comprendere e padroneggiare appieno l'interfaccia gateway comune, il protocollo in sé è piuttosto semplice. Chiunque abbia alcune competenze di programmazione di base e abbia familiarità con il Web può imparare rapidamente a programmare applicazioni CGI abbastanza complesse proprio come io e altri abbiamo imparato a fare diversi anni fa.

Lo scopo di questo capitolo è presentare le basi della CGI in modo completo, anche se condensato. Ogni concetto qui discusso viene presentato in dettaglio nei capitoli successivi. Tuttavia, dopo aver completato questo capitolo, potrete iniziare immediatamente a programmare le applicazioni CGI. Una volta raggiunto questo livello, puoi apprendere le complessità della CGI, leggendo il resto di questo libro o semplicemente sperimentando per conto tuo.

È possibile ridurre la programmazione CGI a due attività: ricevere informazioni dal browser Web e inviare informazioni al browser. Ciò avviene in modo abbastanza intuitivo una volta acquisita familiarità con il normale utilizzo delle applicazioni CGI. Spesso all'utente viene chiesto di compilare un modulo, ad esempio inserire il proprio nome. Una volta che l'utente compila il modulo e preme Invio, queste informazioni vengono inviate al programma CGI. Il programma CGI deve quindi convertire queste informazioni in qualcosa che comprende, elaborarle di conseguenza e quindi inviarle nuovamente al browser, sia che si tratti di una semplice conferma o del risultato di una ricerca in un database multiuso.

In altre parole, la programmazione CGI richiede la comprensione di come ricevere input dal browser Internet e come restituire l'output. Ciò che accade tra le fasi di input e output di un programma CGI dipende dall'obiettivo dello sviluppatore. Scoprirai che la principale difficoltà nella programmazione CGI risiede in questa fase intermedia; Una volta che impari a lavorare con input e output, è essenzialmente sufficiente per diventare uno sviluppatore CGI.

In questo capitolo imparerai i principi alla base dell'input e dell'output CGI, nonché altre competenze di base necessarie per scrivere e utilizzare CGI, comprese cose come la creazione di moduli HTML e la denominazione dei programmi CGI. Questo capitolo tratta i seguenti argomenti:

  • Programma tradizionale "Hello, World!";
  • Output CGI: invio di informazioni per la visualizzazione in un browser Internet;
  • Configurazione, installazione ed esecuzione dell'applicazione. Imparerai a conoscere diverse piattaforme e server Web;
  • Input CGI: interpretazione delle informazioni inviate dal browser Web. Introduzione ad alcune librerie di programmazione utili per l'analisi di tale input;
  • Un semplice esempio: copre tutte le lezioni di un determinato capitolo;
  • Strategia di programmazione.

A causa della natura di questo capitolo, toccherò solo leggermente alcuni argomenti. Non preoccuparti; Tutti questi argomenti sono trattati in modo molto più approfondito in altri capitoli.

Ciao mondo!

Inizi con un tradizionale problema introduttivo di programmazione. Scriverai un programma che visualizzi "Hello, World!" sul tuo browser web. Prima di scrivere questo programma, è necessario comprendere quali informazioni il browser Web si aspetta di ricevere dai programmi CGI. Devi anche sapere come eseguire questo programma in modo da poterlo vedere in azione.

CGI è indipendente dalla lingua, quindi puoi implementare questo programma in qualsiasi lingua. Qui vengono utilizzate diverse lingue diverse per dimostrare l'indipendenza di ciascuna lingua. In Perl, il programma "Hello, World!" mostrato nel Listato 2.1.

Listato 2.1. Ciao mondo! in Perl. #!/usr/local/bin/perl # Hello.cgi - Il mio primo programma CGI print "Content-Type: text/html\n\n"; stampa " \n"; stampa " Ciao mondo!"; stampa "\n"; stampa " \n"; stampa "

Ciao mondo!

\n"; stampa "

\N";

Salva questo programma come hello.cgi e installalo nella posizione appropriata. (Se non sei sicuro di dove si trovi, non preoccuparti; lo scoprirai nella sezione "Installazione ed esecuzione di un programma CGI" più avanti in questo capitolo.) Per la maggior parte dei server, la directory necessaria è cgi-bin . Ora chiama il programma dal tuo browser web. Per la maggior parte, ciò significa aprire il seguente URL (Uniform Resource Locator):

http://nomehost/nomedirectory/ciao.cgi

Hostname è il nome del tuo server Web e directoryname è la directory in cui inserisci hello.cgi (probabilmente cgi-bin).

Divisione di hello.cgi

Ci sono alcune cose da notare su hello.cgi.

Innanzitutto, usi semplici comandi di stampa. I programmi CGI non richiedono descrittori di file speciali o descrittori di output. Per inviare l'output al browser, stampa semplicemente su stdout.

In secondo luogo, tieni presente che il contenuto della prima istruzione print (Content-Type: text/html) non appare sul tuo browser web. Puoi inviare qualsiasi informazione desideri al browser (pagina HTML, grafica o suono), ma prima devi dire al browser che tipo di dati gli stai inviando. Questa riga indica al browser che tipo di informazioni aspettarsi, in questo caso una pagina HTML.

In terzo luogo, il programma si chiama hello.cgi. Non è sempre necessario utilizzare l'estensione .cgi con il nome del programma CGI. Sebbene il codice sorgente di molte lingue utilizzi anche l'estensione .cgi, questa non viene utilizzata per indicare il tipo di lingua, ma è un modo con cui il server identifica il file come file eseguibile piuttosto che come file grafico, file HTML o altro. file di testo. I server sono spesso configurati per tentare di eseguire solo i file che hanno questa estensione, visualizzando il contenuto di tutti gli altri. Sebbene l'utilizzo dell'estensione .cgi non sia obbligatorio, è comunque considerata una buona pratica.

In generale, hello.cgi è composto da due parti principali:

  • dice al browser quali informazioni aspettarsi (Content-Type: text/html)
  • dice al browser cosa visualizzare (Hello, World!)

Ciao mondo! in C

Per mostrare l'indipendenza dal linguaggio dei programmi CGI, il Listato 2.2 mostra l'equivalente del programma hello.cgi scritto in C.

Listato 2.2. Ciao mondo! in C. /* ciao.cgi.c - Ciao, mondo CGI */ #include int main() ( printf("Tipo contenuto: testo/html\r\n\r\n"); printf(" \n"); printf(" Ciao mondo!\n"); printf("\n"); printf(" \n"); printf("

Ciao mondo!

\n"); printf("

\N"); )

Nota

Si noti che la versione Perl di hello.cgi utilizza Content-Type print ": text/html\n\n "; Mentre la versione C utilizza Printf("Content-Type: text/html\r\n\r\n");

Perché Perl stampa l'operatore termina con due ritorni a capo (\n) mentre C printf termina con due ritorni a capo e ritorni a capo (\r\n)?

Tecnicamente, le intestazioni (tutto l'output prima della riga vuota) dovrebbero essere separate da ritorni a capo e ritorni a capo. Sfortunatamente, su macchine DOS e Windows, Perl traduce \r come un altro ritorno a capo anziché come un ritorno a capo.

Sebbene l'eccezione \rs di Perl sia tecnicamente errata, funzionerà su quasi tutti i protocolli ed è ugualmente portabile su tutte le piattaforme. Pertanto, in tutti gli esempi Perl contenuti in questo libro, utilizzo le intestazioni che separano i ritorni a capo anziché i ritorni a capo e i ritorni a capo.

Una soluzione adeguata a questo problema è presentata nel capitolo 4, Conclusione.

Né il server Web né il browser si preoccupano del linguaggio utilizzato per scrivere il programma. Sebbene ogni linguaggio presenti vantaggi e svantaggi come linguaggio di programmazione CGI, è meglio utilizzare il linguaggio con cui ti senti più a tuo agio nel lavorare. (La scelta del linguaggio di programmazione è discussa in maggior dettaglio nel Capitolo 1, “Common Gateway Interface (CGI)”).

Rappresentazione CGI

Ora puoi dare un'occhiata più da vicino al problema dell'invio di informazioni al browser Web. Dall'esempio "Hello, World!", puoi vedere che i browser Web si aspettano due insiemi di dati: un'intestazione, che contiene informazioni come quali informazioni visualizzare (ad esempio Content-Type: riga) e informazioni effettive (cosa il browser Web viene visualizzato). Queste due informazioni sono separate da una riga vuota.

L'intestazione è chiamata intestazione HTTP. Fornisce informazioni importanti sulle informazioni che il browser riceverà. Esistono diversi tipi di intestazioni HTTP e la più comune è quella utilizzata in precedenza: Content-Type: header. È possibile utilizzare diverse combinazioni di intestazioni HTTP, separate da ritorni a capo e fine riga (\r\n). Anche la riga vuota che separa l'intestazione dai dati consiste di un ritorno a capo e di un ritorno a capo (il motivo per cui sono necessari entrambi è discusso brevemente nella nota precedente e dettagliato nel Capitolo 4). Imparerai a conoscere altre intestazioni HTTP nel Capitolo 4; Attualmente hai a che fare con Content-Type: header.

Content-Type: l'intestazione descrive il tipo di dati restituiti dal CGI. Il formato appropriato per questa intestazione è:

Tipo di contenuto: sottotipo/tipo

Dove sottotipo/tipo è il tipo MIME (Multiuso Internet Mail Extensions) corretto. Il tipo MIME più comune è il tipo HTML: text/html. La Tabella 2.1 elenca alcuni tipi MIME più comuni che verranno discussi; Un elenco e un'analisi più completi dei tipi MIME sono forniti nel Capitolo 4.

Nota

MIME è stato originariamente inventato per descrivere il contenuto del corpo dei messaggi di posta. È diventato un modo abbastanza comune per rappresentare le informazioni sul tipo di contenuto. Puoi leggere ulteriori informazioni su MIME in RFC1521. Le RFC su Internet stanno per Requests for Comments, che sono riassunti delle decisioni prese da gruppi su Internet che cercano di stabilire standard. È possibile visualizzare i risultati di RFC1521 al seguente indirizzo: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabella 2.1. Alcuni tipi MIME comuni. Tipo MIME Descrizione Testo/html Hypertext Markup Language (HTML) Testo/normale File di testo semplice Immagine/gif File grafici GIF Immagine/jpeg File grafici compressi JPEG Audio/file audio di base Sun *.au Audio/x-wav File Windows *.wav

Dopo l'intestazione e una riga vuota, stampi semplicemente i dati nel modulo che ti serve. Se stai inviando HTML, stampa i tag e i dati HTML su stdout dopo l'intestazione. Puoi anche inviare grafica, audio e altri file binari semplicemente stampando il contenuto del file su stdout. Diversi esempi di ciò sono forniti nel capitolo 4.

Installazione ed esecuzione di un programma CGI

Questa sezione si discosta in qualche modo dalla programmazione CGI e parla della configurazione del server Web per utilizzare CGI, dell'installazione e dell'esecuzione dei programmi. Ti verranno presentati server diversi per piattaforme diverse in modo più o meno dettagliato, ma dovrai scavare più a fondo nella documentazione del tuo server per trovare l'opzione migliore.

Tutti i server richiedono spazio per i file del server e spazio per i documenti HTML. In questo libro, l'area del server è chiamata ServerRoot e l'area dei documenti è chiamata DocumentRoot. Su macchine UNIX, ServerRoot è solitamente in /usr/local/etc/httpd/ e DocumentRoot è solitamente in /usr/local/etc/httpd/htdocs/. Tuttavia, ciò non farà alcuna differenza per il tuo sistema, quindi sostituisci tutti i riferimenti a ServerRoot e DocumentRoot con i tuoi ServerRoot e DocumentRoot.

Quando accedi ai file utilizzando il browser Web, specifichi il file nell'URL relativo a DocumentRoot. Ad esempio, se l'indirizzo del tuo server è mymachine.org, accedi a questo file con il seguente URL: http://mymachine.org/index.html

Configurazione del server per CGI

La maggior parte dei server Web sono preconfigurati per consentire l'uso di programmi CGI. Tipicamente due parametri indicano al server se il file è un'applicazione CGI o meno:

  • Directory designata. Alcuni server consentono di determinare che tutti i file in una directory designata (di solito chiamata cgi-bin per impostazione predefinita) sono CGI.
  • Estensioni dei nomi di file. Molti server dispongono di questa preconfigurazione che consente di definire come CGI tutti i file che terminano con .cgi.

Il metodo della directory designata è una sorta di reliquia del passato (i primissimi server lo utilizzavano come unico metodo per determinare quali file fossero programmi CGI), ma presenta diversi vantaggi.

  • Mantiene i programmi CGI centralizzati, evitando che altre directory diventino ingombrate.
  • Non sei limitato a nessuna particolare estensione del nome file, quindi puoi nominare i tuoi file come preferisci. Alcuni server consentono di designare diverse directory come directory CGI.
  • Ti dà anche un maggiore controllo su chi può registrare CGI. Ad esempio, se disponi di un server e supporti un sistema con più utenti e non vuoi che utilizzino i propri script CGI senza prima rivedere il programma per motivi di sicurezza, puoi designare solo quei file in una directory limitata e centralizzata come CGI . Gli utenti dovranno quindi fornirti i programmi CGI da installare e tu potrai prima controllare il codice per assicurarti che il programma non presenti grossi problemi di sicurezza.

La notazione CGI tramite l'estensione del nome file può essere utile grazie alla sua flessibilità. Non sei limitato a una singola directory per i programmi CGI. La maggior parte dei server può essere configurata per riconoscere CGI tramite l'estensione del nome file, sebbene non tutti siano configurati in questo modo per impostazione predefinita.

Avvertimento

Ricorda l'importanza dei problemi di sicurezza quando configuri il tuo server per CGI. Qui verranno trattati alcuni suggerimenti e il Capitolo 9, Protezione CGI, tratta questi aspetti in modo più dettagliato.

Installazione di CGI su server UNIX

Indipendentemente da come è configurato il server UNIX, è necessario eseguire diversi passaggi per garantire che le applicazioni CGI vengano eseguite come previsto. Il tuo server Web verrà in genere eseguito come un utente inesistente (ovvero, l'utente UNIX nessuno, un account che non dispone di autorizzazioni sui file e non può essere loggato). Gli script CGI (scritti in Perl, Bourne Shell o un altro linguaggio di scripting) devono essere eseguibili e leggibili in tutto il mondo.

Traccia

Per rendere i tuoi file leggibili ed eseguibili, utilizza il seguente comando di autorizzazioni UNIX: chmod 755 filename.

Se utilizzi un linguaggio di scripting come Perl o Tcl, fornisci il percorso completo del tuo interprete nella prima riga dello script. Ad esempio, uno script Perl che utilizza perl nella directory /usr/local/bin inizierà con la seguente riga:

#!/usr/local/bin/perl

Avvertimento

Non posizionare mai l'interprete (perl o il binario Tcl Wish) nella directory /cgi-bin. Ciò crea un rischio per la sicurezza del sistema. Questo è discusso in maggior dettaglio nel Capitolo 9.

Alcuni server UNIX generici

I server NCSA e Apache hanno file di configurazione simili perché il server Apache era originariamente basato sul codice NCSA. Per impostazione predefinita, sono configurati in modo che qualsiasi file nella directory cgi-bin (situata per impostazione predefinita in ServerRoot) sia un programma CGI. Per cambiare la posizione della directory cgi-bin, è possibile modificare il file di configurazione conf/srm.conf. Il formato per configurare questa directory è

ScriptAlias ​​fakedirectoryname realdirectoryname

dove fakedirectoryname è il nome della pseudo directory (/cgi-bin) e realdirectoryname è il percorso completo in cui sono effettivamente archiviati i programmi CGI. Puoi configurare più di uno ScriptAlias ​​aggiungendo più righe ScriptAlias.

La configurazione predefinita è sufficiente per le esigenze della maggior parte degli utenti. In entrambi i casi è necessario modificare la riga nel file srm.conf per determinare il nome corretto della directory reale. Se, ad esempio, i tuoi programmi CGI si trovano in /usr/local/etc/httpd/cgi-bin, la riga ScriptAlias ​​nel tuo file srm.conf dovrebbe essere simile a questa:

ScriptAlias ​​/cgi-bin/ /usr/local/etc/httpd/cgi-bin/

Per accedere o collegarsi ai programmi CGI presenti in questa directory, utilizzare il seguente URL:

Http://nomehost/cgi-bin/nomeprogramma

Dove hostname è il nome dell'host del tuo server Web e programname è il nome del tuo CGI.

Ad esempio, supponiamo che copi il programma hello.cgi nella directory cgi-bin (ad esempio /usr/local/etc/httpd/cgi-bin) sul tuo server Web chiamato www.company.com. Per accedere al tuo CGI, utilizza il seguente URL: http://www.company.com/cgi-bin/hello.cgi

Se desideri configurare il tuo server NCSA o Apache per riconoscere qualsiasi file con estensione .cgi come CGI, devi modificare due file di configurazione. Per prima cosa, nel file srm.conf, decommenta la seguente riga:

AddType application/x-httpd-cgi .cgi

Ciò assocerà il tipo MIME CGI all'estensione .cgi. Ora dobbiamo modificare il file access.conf in modo da poter eseguire CGI in qualsiasi directory. Per fare ciò, aggiungi l'opzione ExecCGI alla riga Opzione. Apparirà qualcosa di simile alla seguente riga:

Indici di opzioni FollowSymLinks ExecCGI

Ora, qualsiasi file con estensione .cgi è considerato CGI; accedervi come faresti con qualsiasi file sul tuo server.

Il server del CERN è configurato allo stesso modo dei server Apache e NCSA. Invece di ScriptAlias, il server del CERN utilizza il comando Exec. Ad esempio, nel file httpd.conf, vedrai la seguente riga:

Esegui /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

Altri server UNIX possono essere configurati allo stesso modo; Ciò è descritto più dettagliatamente nella documentazione del server.

Installazione di CGI su Windows

La maggior parte dei server disponibili per Windows 3.1, Windows 95 e Windows NT sono configurati utilizzando il metodo "estensione nome file" per il riconoscimento CGI. In generale, per modificare la configurazione di un server basato su Windows è sufficiente eseguire il programma di configurazione del server e apportare le modifiche appropriate.

A volte configurare un server per eseguire correttamente uno script (come Perl) può essere difficile. In DOS o Windows non potrete specificare l'interprete nella prima riga dello script, come nel caso di UNIX. Alcuni server hanno una configurazione predefinita per associare determinate estensioni di file all'interprete. Ad esempio, molti server Web Windows presuppongono che i file che terminano con .pl siano script Perl.

Se il server non esegue questo tipo di associazione di file, è possibile definire un file batch del packager che richiama sia l'interprete che lo script. Come con il server UNIX, non installare l'interprete né nella directory cgi-bin né in qualsiasi directory accessibile dal Web.

Installazione di CGI su Macintosh

Le due opzioni server più conosciute per Macintosh sono WebStar StarNine e il suo predecessore MacHTTP. Entrambi riconoscono CGI dall'estensione del nome file.

MacHTTP comprende due diverse estensioni: .cgi e .acgi, che sta per CGI asincrono. I normali programmi CGI installati su un Macintosh (con estensione .cgi) manterranno il server Web in uno stato occupato finché il CGI non termina l'esecuzione, provocando la sospensione di tutte le altre richieste da parte del server. Il CGI asincrono, invece, consente al server di accettare richieste anche mentre è in esecuzione.

Uno sviluppatore Macintosh CGI che utilizza uno qualsiasi di questi server Web dovrebbe, se possibile, utilizzare solo l'estensione .acgi anziché l'estensione .cgi. Dovrebbe funzionare con la maggior parte dei programmi CGI; se non funziona, rinomina il programma in .cgi.

Esecuzione di CGI

Una volta installato CGI, ci sono diversi modi per eseguirlo. Se il tuo programma CGI è un programma di solo output, come il programma Hello,World!, puoi eseguirlo semplicemente accedendo al suo URL.

La maggior parte dei programmi viene eseguita come applicazione server su un modulo HTML. Prima di apprendere come ottenere informazioni da questi moduli, leggere innanzitutto una breve introduzione sulla creazione di tali moduli.

Un breve tutorial sui moduli HTML

I due tag più importanti in un modulo HTML sono il

E . Puoi creare la maggior parte dei moduli HTML utilizzando solo questi due tag. In questo capitolo esplorerai questi tag e un piccolo sottoinsieme di possibili tipi o attributi. . Una guida completa e un collegamento ai moduli HTML si trovano nel Capitolo 3, HTML e moduli.

Etichetta

Etichetta utilizzato per determinare quale parte del file HTML deve essere utilizzata per le informazioni immesse dall'utente. Si riferisce al modo in cui la maggior parte delle pagine HTML richiama un programma CGI. Gli attributi dei tag specificano il nome e la posizione del programma, localmente o come URL completo, il tipo di codifica utilizzata e il metodo di spostamento dei dati utilizzato dal programma.

La riga successiva mostra le specifiche del tag :

< ACTION FORM = "url" METHOD = ENCTYPE = "..." >

L'attributo ENCTYPE non gioca un ruolo speciale e solitamente non è incluso nel tag . Informazioni dettagliate riguardanti il ​​tag ENCTYPE sono fornite nel Capitolo 3. Un modo per utilizzare ENCTYPE è mostrato nel Capitolo 14, "Estensioni con marchio".

L'attributo ACTION si riferisce all'URL del programma CGI. Una volta che l'utente compila il modulo e fornisce le informazioni, tutte le informazioni vengono codificate e trasferite al programma CGI. Il programma CGI stesso risolve il problema della decodifica e dell'elaborazione delle informazioni; Questo aspetto viene discusso nella sezione "Accettare l'input dal browser", più avanti in questo capitolo.

Infine, l'attributo METHOD descrive come il programma CGI dovrebbe ricevere input. I due metodi, GET e POST, differiscono nel modo in cui trasmettono le informazioni al programma CGI. Entrambi sono discussi in "Accettare l'input dal browser".

Affinché il browser consenta l'input dell'utente, tutti i tag e le informazioni del modulo devono essere circondati dal tag . Non dimenticare il tag di chiusura

per indicare la fine del modulo. Non è possibile avere un modulo all'interno di un modulo, sebbene sia possibile impostare un modulo che consenta di presentare informazioni in luoghi diversi; questo aspetto è ampiamente trattato nel capitolo 3.

Etichetta

Puoi creare barre di immissione testo, pulsanti di opzione, caselle di controllo e altri mezzi per accettare l'input utilizzando il tag . Questa sezione copre solo i campi di immissione testo. Per implementare questo campo, utilizzare il tag con i seguenti attributi:

< INPUT TYPE=text NAME = "... " VALUE = "... " SIZE = MAXLENGTH = >

NOME è il nome simbolico della variabile che contiene il valore inserito dall'utente. Se includi del testo nell'attributo VALUE, quel testo verrà inserito come predefinito nel campo di immissione del testo. L'attributo size ti consente di specificare la lunghezza orizzontale del campo di input come apparirà nella finestra del browser. Infine, MAXLENGTH specifica il numero massimo di caratteri che l'utente può inserire nel campo. Tieni presente che gli attributi VALUE, size e maxlunghezza sono facoltativi.

Invio del modulo

Se all'interno di un modulo è presente un solo campo di testo, l'utente può inviare il modulo semplicemente digitando le informazioni sulla tastiera e premendo Invio. Altrimenti, deve esserci un altro modo in cui l'utente può presentare le informazioni. L'utente invia le informazioni utilizzando un pulsante di invio con il seguente tag:

< Input type=submit >

Questo tag crea un pulsante Invia all'interno del modulo. Quando l'utente termina di compilare il modulo, può inviarne il contenuto all'URL specificato dall'attributo ACTION del modulo facendo clic sul pulsante Invia.

Accettazione dell'input dal browser

Sopra c'erano esempi di registrazione di un programma CGI che invia informazioni dal server al browser. In realtà, un programma CGI che emette solo dati non ha molte applicazioni (alcuni esempi sono forniti nel Capitolo 4). La capacità più importante della CGI è quella di ricevere informazioni dal browser, la caratteristica che conferisce al Web il suo carattere interattivo.

Il programma CGI riceve due tipi di informazioni dal browser.

  • Innanzitutto, ottiene varie informazioni sul browser (il suo tipo, cosa può visualizzare, l'host host e così via), il server (il suo nome e versione, la porta di esecuzione e così via) e il programma CGI. stesso (nome del programma e dove si trova). Il server fornisce tutte queste informazioni al programma CGI attraverso variabili di ambiente.
  • In secondo luogo, il programma CGI può ricevere l'input dell'utente. Queste informazioni, dopo essere state codificate dal browser, vengono inviate tramite una variabile d'ambiente (metodo GET) o tramite input standard (metodo stdin - POST).

variabili ambientali

È utile sapere quali variabili d'ambiente sono disponibili per un programma CGI, sia durante l'addestramento che per il debug. La Tabella 2.2 elenca alcune delle variabili di ambiente CGI disponibili. Puoi anche scrivere un programma CGI che restituisca le variabili di ambiente e i loro valori a un browser Web.

Tabella 2.2. Alcune importanti variabili di ambiente CGI Variabile di ambiente Scopo REMOTE_ADDR Indirizzo IP della macchina client. REMOTE_HOST L'host della macchina client. HTTP _ACCEPT Elenca i tipi di dati MIME che il browser può interpretare. HTTP _USER_AGENT Informazioni sul browser (tipo di browser, numero di versione, sistema operativo, ecc.). REQUEST_METHOD GET o POST. CONTENT_LENGTH La dimensione dell'input se inviato tramite POST. Se non è presente alcun input o se viene utilizzato il metodo GET, questo parametro non è definito. QUERY_STRING Contiene le informazioni di input quando vengono passate utilizzando il metodo GET. PATH_INFO Consente all'utente di specificare un percorso dalla riga di comando CGI (ad esempio, http://nomehost/cgi-bin/nomeprogramma/percorso). PATH_TRANSLATED Converte il percorso relativo in PATH_INFO in un percorso effettivo nel sistema.

Per scrivere un'applicazione CGI che visualizzi le variabili di ambiente, devi sapere come fare due cose:

  • Definire tutte le variabili di ambiente e i loro valori corrispondenti.
  • Stampa i risultati nel browser.

Sai già come eseguire l'ultima operazione. In Perl, le variabili d'ambiente sono memorizzate nell'array associativo %ENV, introdotto dal nome della variabile d'ambiente. Il Listato 2.3 contiene env.cgi, un programma Perl che raggiunge il nostro obiettivo.

Listato 2.3. Un programma Perl, env.cgi, che stampa tutte le variabili d'ambiente CGI.

#!/usr/local/bin/perl print "Tipo di contenuto: testo/html\n\n"; stampa " \n"; stampa " Ambiente CGI\n"; stampa "\n"; stampa " \n"; stampa "

Ambiente CGI

\n"; foreach $env_var (tasti %ENV) ( print " $env_var= $ENV($var_env)
\n"; ) stampa "

\N";

Un programma simile potrebbe essere scritto in C; il codice completo è nel Listato 2.4.

Listato 2.4. Env.cgi.c in C. /* env.cgi.c */ #include extern char **ambiente; int main() ( char **p = ambiente; printf("Tipo di contenuto: testo/html\r\n\r\n"); printf(" \n"); printf(" Ambiente CGI\n"); printf("\n"); printf(" \n"); printf("

Ambiente CGI

\n"); while(*p != NULL) printf("%s
\n",*p++); printf("

\N"); )

OTTIENI o PUBBLICA?

Qual è la differenza tra i metodi GET e POST? GET passa la stringa di input codificata attraverso la variabile di ambiente QUERY_STRING, mentre POST la passa attraverso stdin. Il POST è il metodo preferito, soprattutto per i moduli con molti dati, perché non ci sono restrizioni sulla quantità di informazioni inviate, mentre con il metodo GET la quantità di spazio multimediale è limitata. GET ha tuttavia una certa proprietà utile; questo è trattato in dettaglio nel capitolo 5, Input.

Per determinare quale metodo viene utilizzato, il programma CGI controlla la variabile d'ambiente REQUEST_METHOD, che verrà impostata su GET o POST. Se è impostato su POST, la lunghezza delle informazioni codificate viene archiviata nella variabile di ambiente CONTENT_LENGTH.

Ingresso codificato

Quando un utente invia un modulo, il browser prima codifica le informazioni prima di inviarle al server e poi all'applicazione CGI. Quando usi il tag , a ogni campo viene assegnato un nome simbolico. Il valore immesso dall'utente è rappresentato come valore della variabile.

Per determinarlo, il browser utilizza una specifica di codifica URL, che può essere descritta come segue:

  • Separa i diversi campi con una e commerciale (&).
  • Separa il nome e i valori con segni di uguale (=), con il nome a sinistra e il valore a destra.
  • Sostituisce gli spazi con i segni più (+).
  • Sostituisce tutti i caratteri "anomali" con un segno di percentuale (%) seguito da un codice esadecimale a due cifre per il carattere.

La stringa codificata finale sarà simile alla seguente:

Nome1=valore1&nome2=valore2&nome3=valore3 ...

Nota: le specifiche per la codifica URL si trovano in RFC1738.

Ad esempio, supponiamo che tu abbia un modulo che richiede nome ed età. Il codice HTML utilizzato per visualizzare questo modulo è mostrato nel Listato 2.5.

Listato 2.5. Codice HTML per visualizzare il nome e il modulo dell'età.

Nome ed età

Inserisci il tuo nome:

Inserisci la tua età:



Supponiamo che l'utente inserisca Joe Schmoe nel campo del nome e 20 nel campo dell'età. L'input verrà codificato nella stringa di input.

Nome=Joe+Schmoe&età=20

Analisi dell'input

Affinché queste informazioni siano utili, è necessario utilizzare le informazioni su qualcosa che può essere utilizzato dai programmi CGI. Le strategie per l'analisi dell'input sono trattate nel Capitolo 5. In pratica, non dovrete mai pensare a come analizzare l'input, perché diversi esperti hanno già scritto librerie che eseguono l'analisi, accessibili a tutti. Due di queste librerie sono presentate in questo capitolo nelle seguenti sezioni: cgi -lib.pl per Perl (scritta da Steve Brenner) e cgihtml per C (scritta da me).

L'obiettivo generale della maggior parte delle librerie scritte in vari linguaggi è analizzare una stringa codificata e inserire coppie nome e valore in una struttura dati. C'è un ovvio vantaggio nell'usare un linguaggio che ha strutture dati integrate come Perl; tuttavia, la maggior parte delle librerie per linguaggi di basso livello come C e C++ includono la struttura dei dati e l'esecuzione di subroutine.

Non è necessario acquisire una conoscenza completa delle biblioteche; è più importante imparare come usarli come strumenti per rendere più semplice il lavoro del programmatore CGI.

Cgi-lib.pl

Cgi-lib.pl utilizza array associativi Perl. La funzione &ReadParse analizza la stringa di input e inserisce ciascuna coppia nome/valore per nome. Ad esempio, le stringhe Perl corrispondenti necessarie per decodificare la stringa di input "nome/età" appena presentata sarebbero

&ReadParse(*input);

Ora, per vedere il valore inserito per "nome", puoi accedere all'array associativo $input("nome"). Allo stesso modo, per accedere al valore di "età", è necessario esaminare la variabile $input ("età").

Cgihtml

Il C non ha alcuna struttura dati incorporata, quindi cgihtml implementa il proprio elenco di collegamenti da utilizzare con le sue routine di analisi CGI. Ciò definisce la struttura del tipo di voce come segue:

Typedef struct ( Char *nome; Char *valore; ) Entrytype;

Per analizzare la stringa di input "nome/età" in C utilizzando cgihtml, viene utilizzato quanto segue:

/* dichiara una lista concatenata chiamata input */ Llist input; /* analizza l'input e la posizione nell'elenco collegato */ read_cgi_input(&input);

Per accedere alle informazioni sull'età, è possibile analizzare l'elenco manualmente oppure utilizzare la funzione cgi _val() disponibile.

#includere #includere Char *età = malloc(sizeof(char)*strlen(cgi_val(input, "età")) + 1); Strcpy(età, cgi_val(input, "età"));

Il valore "età" è ora memorizzato nella stringa età.

Nota: invece di utilizzare un array semplice (come char age ;), sto allocando dinamicamente lo spazio di memoria per la stringa age. Sebbene ciò renda la programmazione più difficile, è comunque importante dal punto di vista della sicurezza. Questo è discusso più dettagliatamente nel capitolo 9.

Un semplice programma CGI

Scriverai un programma CGI chiamato nameage.cgi che gestisce il formato nome/età. L'elaborazione dei dati (quella che di solito chiamo "roba in mezzo") è minima. Nameage.cgi decodifica semplicemente l'input e visualizza il nome e l'età dell'utente. Sebbene non sia molto utile per uno strumento del genere, dimostra l'aspetto più critico della programmazione CGI: input e output.

Si utilizza lo stesso modulo di cui sopra, richiamando i campi "nome ed età". Non preoccuparti ancora della robustezza e dell'efficienza; risolvere il problema esistente nel modo più semplice. Le soluzioni Perl e C sono mostrate rispettivamente nei Listati 2.6 e 2.7.

Listato 2.6. Nomeage.cgi in Perl

#!/usr/local/bin/perl # nameage.cgi require "cgi-lib.pl" &ReadParse(*input); print "Tipo contenuto: testo/html\r\n\r\n"; stampa " \n"; stampa " Nome ed età\n"; stampa "\n"; stampa " \n"; print "Ciao, " . $input("nome") . ". Hai\n"; print $input("età") . " anni.

\n"; stampa "

\N";

Listato 2.7. nameage.cgi in C

/* nomeage.cgi.c */ #include #include "cgi-lib.h" int main() ( llist input; read_cgi_input(&input); printf("Tipo contenuto: text/html\r\n\r\n"); printf(" \n"); printf(" Nome ed età\n"); printf("\n"); printf(" \n"); printf("Ciao %s. Sei\n",cgi_val(input,"nome")); printf("%s anni.

\n",cgi_val(input,"età")); printf("

\N"); )

Tieni presente che questi due programmi sono quasi equivalenti. Entrambi contengono routine di analisi che occupano solo una riga ed elaborano l'intero input (grazie alle corrispondenti routine di libreria). L'output è essenzialmente una versione modificata del programma principale Hello, World!.

Prova a eseguire il programma compilando il modulo e facendo clic sul pulsante Invia.

Strategia generale di programmazione

Ora conosci tutti i principi di base richiesti per la programmazione CGI. Una volta compreso come CGI riceve le informazioni e come le restituisce al browser, la qualità effettiva del prodotto finale dipende dalle tue capacità generali di programmazione. Vale a dire, quando programmi CGI (o qualsiasi altra cosa, del resto), tieni a mente le seguenti qualità:

  • Semplicità
  • Efficienza
  • Versatilità

Le prime due qualità sono abbastanza comuni: cerca di rendere il tuo codice il più leggibile ed efficiente possibile. La versatilità si applica più ai programmi CGI che ad altre applicazioni. Quando inizi a sviluppare i tuoi programmi CGI, imparerai che esistono diverse applicazioni di base che tutti vogliono realizzare. Ad esempio, uno dei compiti più comuni e ovvi di un programma CGI è elaborare un modulo e inviare i risultati via email a un destinatario specifico. È possibile che vengano elaborati più moduli separati, ciascuno con un destinatario diverso. Invece di scrivere un programma CGI per ogni singolo modulo, puoi risparmiare tempo scrivendo un programma CGI più generale che si applica a tutti i moduli.

Coprendo tutti gli aspetti di base della CGI, ti ho fornito informazioni sufficienti per iniziare con la programmazione CGI. Tuttavia, per diventare uno sviluppatore CGI efficace, è necessario avere una comprensione più approfondita di come CGI comunica con il server e il browser. La parte restante del libro tratta in dettaglio le questioni brevemente menzionate in questo capitolo, nonché la strategia di sviluppo dell'applicazione e i vantaggi e i limiti del protocollo.

Riepilogo

Questo capitolo introduce brevemente le basi della programmazione CGI. Crei l'output formattando correttamente i dati e stampandoli su stdout. Ricevere l'input CGI è un po' più complesso perché deve essere analizzato prima di poter essere utilizzato. Fortunatamente esistono già diverse librerie che eseguono l'analisi.

A questo punto dovresti essere abbastanza a tuo agio con la programmazione delle applicazioni CGI. La parte restante di questo libro fornisce maggiori dettagli su specifiche, suggerimenti e strategie di programmazione per applicazioni più avanzate e complesse.

I proprietari di negozi online conoscono in prima persona il concetto di "commercio elettronico", conoscono già la risposta alla domanda "e-commerce: che cos'è?" Ma se si va a fondo emergono molte sfumature e questo termine assume un significato più ampio.

E-commerce: cos'è?

Il concetto generale è il seguente: per commercio elettronico si intende un certo approccio al fare affari, che comporta l'inclusione di una serie di operazioni che utilizzano il trasferimento digitale di dati nella fornitura di beni o nella prestazione di servizi/lavori, compreso l'utilizzo del Internet.

Si tratta quindi di qualsiasi transazione commerciale effettuata utilizzando un mezzo di comunicazione elettronico.

Lo schema di lavoro è così organizzato:

  • chiunque può essere un blogger o qualsiasi altro proprietario della propria pagina Internet) si registra in questo sistema;
  • ottiene il proprio collegamento;
  • inserisce un codice speciale sulla sua pagina web: appare un annuncio per il partner ufficiale selezionato dell'e-Commerce Partners Network;
  • monitora la conversione del sito web;
  • guadagna una certa percentuale per ogni acquisto effettuato da un visitatore del tuo sito web che segue un link di affiliazione.

WP e-commerce

Sono ormai tantissime le persone che si appassionano all'e-commerce, soprattutto per il desiderio di creare il proprio sito web, un negozio online unico in cui vendere i propri prodotti. Per soddisfare questa crescente domanda, gli sviluppatori si sono concentrati sulla creazione di modelli di e-commerce. Diamo un'occhiata a cosa accadrà dopo.

Uno di questi esempi di template è l’e-commerce WordPress. Si tratta di un plugin per il carrello della spesa per WordPress (uno dei più famosi sistemi di gestione delle risorse web), destinato principalmente alla creazione e all'organizzazione di blog). Viene fornito in modo completamente gratuito e consente ai visitatori del sito di effettuare acquisti sul sito web.

In altre parole, questo plugin ti consente di creare un negozio online (basato su WordPress). Questo plugin per e-commerce ha tutti gli strumenti, le impostazioni e le opzioni necessarie per soddisfare le esigenze moderne.




Superiore