Abbiamo il DOVERE di parlare di WEB FORM in PHP e della spettacolare partita di TAL giocata nel 1985 vs Ftacnik!

social media marketing umbriaBasta con i buzzurri giochi di parole che hanno consentito alla Juventus di approdare alla semifinale di Coppa Italia contro il Torino grazie a una partita taroccata per un errore umano al minuto settanta quando quel poveraccio di arbitro DOVERI (candidato a visionare prossimamente tornei di freccette) si permetteva di fare grandi danni a quegli sportivi che non tifano Juventus. Finiamola con questa becera rivendicazione e parliamo delle mosse di Tal lo scacchista. Come possiamo definire la Mikhail Tal vs Lubomir Ftacnik Nimzowitsch Memorial (1985), Naestved DEN, rd 8, Sicilian Defense: Scheveningen. Classical Variation (B84) 1-0 in 31 mosse? Un pestaggio sportivo ? O qualcosa simile a una prestazione sonora dei Nirvana modello Come As You Here? Qualcosa di vero c’è a giudicare l’ultimo parallelismo, le parole del testo esaltato da Kurt Kobain sono incomprensibili come le mosse tattiche giocate dal bianco: http://www.chessgames.com/perl/chessgame?gid=1045773. E’ complicato anche ricamarci sopra una bella telecronaca del tipo clamoroso allo Stadium, il bianco vince facile grazie a una incertezza della VAR. Le mosse di Tal sono semplici e oculate nella loro scelleratezza. Come soppesare una mossa come 15 f6!? Il nero forse si aspettava questa spinta di attacco? Un aspetto salta subito all’ occhio e cioé che tutto sommato i pezzi neri sono temporaneamente ripiegati sull’ ultima traversa a esprimere un potenziale limitato rispetto a un gioco di squadra che potrebbero orchestrare. E dopo 20 Ah6 come avrà cambiato la sua valutazione il nero? Avrà finalmente capito in guai seri, chiede social media marketing Umbria? Per le prestazioni di Tal e le sue best games vedere link http://www.chessgames.com/perl/chesscollection?cid=1005503. E ora passiamo a parlare di WEB FORMS per gli sviluppatori PHP che sono strumento o risorse messe a disposizione per consentire all’ utente di processare i dati, sottolinea social media marketing Umbria. Hai presente un modulo di LOGIN? Hai presente dettagli come nome , cognome, indirizzo, mail? Siamo dentro ai web form ma anche ai METODI che servono per processare e spedire queste informazioni. PHP offre un vasto campionariod i opzioni per gestire i FORM al meglio e non dimentichiamoci poi dell’ integrazione con JQuery ed Ajax che consentono un aggiornamento senza passare per il rendering della pagina. Passiamo a valutare con mano e a toccare un esempio pratico che social media marketing Umbria ha messo in piedi all’ indirizzo http://www.farwebdesign.com/php/Example8-webforms.html. Il tag FORM come si evince dalla gallery circoscrivono l’ambito di lavoro della spedizione dei dati e come tutti i tag HTML prevedono la solita apertura chiusura di rito. In una architettura client server, cioé all’ interno di un sistema dove qualcuno richiede e qualcun’ altro predisposto a rispondere, risponde, esistono due modi diversi di spedire i dati GET e POST. Coh get come si evince dal link di cui sopra le variabili transitano sopra la URL e sono visibili il che potrebbe essere un problema in termini di sicurezza, fa notare social media marketing Umbria, per questo spesso si usa il metodo (METHOD nello script) POST dove il tutto passa sotto silenzio in maniera coercitiva! HTTP per Definisce il protocollo di trasferimento ipertestuale come comunicano il server e il client. L’ & come simbolo separa le variabili nella stringa URL nel metodo GET. In uno dei prossimi articoli con social media marketing Umbria affronteremo la spinosa questione del perché l’uomo non sia ancora allunato su Marte (si fa per dire!).

Annunci

PHP: un buon libro per vedere in azione i fondamenti!

agenzia web marketingUn buon libro per imparare PHP é quello che suggeriamo in questo post da cui preleviamo un estratto. PHP. Una sigla con la quale tutti noi che navighiamo in rete abbiamo avuto a che fare qualche volta (anche semplicemente per aver trovato una pagina con il suffisso “.php”). Una sigla che per qualcuno evoca un obiettivo da raggiungere nell’ambito dello sviluppo di siti web. Che per qualcun altro evoca uno dei primi CMS, quel famoso “PHP-Nuke” tanto in voga qualche anno fa. Che per i miei ex compagni di università evoca notti insonni passati davanti al computer per passare un esame… ! Ma alla fine una sigla che per noi rappresenterà un modo per creare siti dinamici. Ecco, mettiamoci subito d’accordo sul termine “dinamico”. Capita spesso (è capitato anche a me) di avere clienti che chiedono un sito “dinamico”, e con “dinamico” il 99% delle volte intendono un sito “che si muove” (con animazioni in Flash, per intenderci). Non è affatto così. E per capire cosa si intende correttamente per “dinamico”, dobbiamo sapere che il linguaggio PHP è un linguaggio lato server, a differenza, per esempio, di JavaScript che invece è un linguaggio lato client. Cosa significa questo in breve? Significa che uno script JavaScript verrà interpretato dal vostro browser, che eseguirà il codice e si comporterà di conseguenza. Invece le operazioni di un linguaggio lato server come PHP saranno compiute, come dice il termine stesso, dal server, che consegnerà al client (e cioè al browser nel nostro caso) la pagina HTML, codificata dopo aver eseguito una serie di operazioni. Avete mai provato a vedere il codice delle pagine PHP sulle quali navigate? Bene, avrete sicuramente notato che se cliccate “sorgente pagina” (io uso Firefox) su una pagina di un sito in PHP vedrete che in realtà non c’è neppure una riga di codice PHP, ma soltanto HTML. Se invece osservate il codice di una pagina che ha uno script JavaScript, vedrete al contrario lo script nella sua interezza. Perché succede questo? Molto semplice: il codice PHP sta sul server, che lo interpreta e, come detto prima, consegna al browser la pagina già codificata. Per questo motivo vedete solo HTML e non PHP. Quindi, non è neppure possibile copiare il codice PHP (una volta che è stato eseguito) da un altro sito. Tornando quindi al termine “dinamico”, ora possiamo dire che i linguaggi lato server producono dinamicamente il contenuto a seconda delle richieste dell’utente, anche con interrogazioni al database (l’interazione tra PHP e un database di tipo MySQL è uno degli argomenti di questo corso). Ecco cosa si intende per “dinamico”! Pensiamo per esempio a un sito che ci serve per cercare un dato in un database con centinaia di campi: per esempio un indirizzo di un ristorante in un sito che ospita un database di tutti i ristoranti d’Italia. Noi cercheremo un ristorante in Liguria (magari attraverso un semplice form di ricerca), e il server, interpretando la nostra richiesta, ci produrrà in modo dinamico una pagina che conterrà gli indirizzi di tutti i ristoranti liguri memorizzati nel database, tralasciando quelli che non ci interessano. Invece intendiamo con “statico” un sito prodotto con un linguaggio come HTML: esiste una sola pagina ed è quella per tutti, e non ci sono contenuti che vengono prodotti a seconda delle richieste dell’utente. Prima di iniziare a mettere le mani sul codice, è necessario sapere che creare un sito con PHP (alcuni dicono anche “programmare in PHP”!) è un po’ diverso rispetto a creare un sito con HTML e CSS, perché abbiamo bisogno di qualche strumento aggiuntivo, necessario per poter svolgere il nostro compito. Quello che ci serve è un cosiddetto “ambiente di sviluppo” (o “piattaforma di sviluppo”, se preferite): dal momento che PHP è una tecnologia lato server, dovremo creare un piccolo server sul nostro computer in modo tale che il nostro codice possa funzionare, e insieme a questo server dovremo avere anche un programma che ci permetterà di gestire il database, se vorremo utilizzarlo. La scelta è vivamente consigliata, perché se iniziate a mettere le mani sul PHP, prima o poi vi capiterà sicuramente di dover creare un sito PHP/MySQL. Ma di questo parleremo più avanti! E infine, ovviamente, dovremo avere installato sul nostro computer, oltre a server e database, il codice. Queste tre componenti (codice, server e database) costituiscono l’ambiente di sviluppo. Sono davvero molti gli ambienti di sviluppo che si trovano in giro per la rete, ma io vi consiglio WAMP, acronimo di Windows (tra poco vi dirò come fare con Linux), Apache (il nome del server), MySQL (il database: il programma integrato in WAMP per la gestione dei database è PhpMyAdmin) e, naturalmente, Php. Per scaricare WAMP basta recarsi sul sito http://www.wampserver.com (o http://www.wampserver.com/en, se non avete familiarità con il francese). Dicevo, per gli utenti che utilizzano Linux, l’ambiente di sviluppo (server, PHP e MySQL: potete chiamarlo “Lamp”, con la “L” che sta per “Linux”) si trova già nel sistema operativo e basterà avviarlo (vi consiglio però di scaricare PhpMyAdmin da http://www.phpmyadmin.net, è un programma favoloso). Altrimenti potete utilizzare un altro ambiente, che si chiama XAMPP e va benissimo anche per chi usa un Mac: trovate l’ambiente di sviluppo all’indirizzo http://www.apachefriends.org. Io preferisco WAMP (e lo conosco molto meglio), quindi faremo riferimento a questo ambiente, perché è molto semplice, è veloce da utilizzare e non richiede alcuna conoscenza di base! A questo punto facciamo un bel download (è pubblicato con licenza GNU GPL, quindi è libero e gratis!) e installiamo la piattaforma sulla nostra macchina (durante l’installazione dovremo indicare un browser che ci servirà quando faremo le prove: indicate pure il vostro browser preferito). Clicchiamo sull’icona di WAMP per farlo avviare: noteremo che nella barra delle applicazioni apparirà un’icona a forma di W racchiusa in un rettangolo (nelle versioni più datate, l’icona era invece una specie di semicerchio), che in fase di caricamento sarà dapprima rossa, poi gialla e infine diventerà tutta verde: solo quando l’icona sarà tutta verde potremo iniziare a lavorare. Facciamo ora clic con il tasto sinistro del mouse sull’icona: vedrete un elenco di voci, e per spiegarle partiamo dal fondo. L’ultimissima, “Metti online”, ci serve se vogliamo mettere in rete il nostro server (magari stiamo chattando con un’amica o con un amico e vogliamo fargli vedere la nostra creazione! Quindi all’inizio, visto che non avremo niente da far vedere, non ci servirà). Le due successive, “Ferma tutti i servizi” e “Riavvia tutti i servizi”, ci servono se vogliamo “spegnere” oppure “riavviare” il nostro server virtuale, e la terzultima “Avvia tutti i servizi”, sarà da utilizzare dopo che avremo, per un motivo o per l’altro, “spento” il nostro server (la dicitura “tutti i servizi” si riferisce alle componenti dell’ambiente di sviluppo, e cioè il server stesso, il linguaggio PHP e il database). Troviamo poi “MySQL”, “PHP” e “Apache”: queste tre voci hanno sottomenù con le varie configurazioni. Lasceremo quelle di default, che ci vanno benissimo così come sono: andranno cambiate solo se utilizzeremo dei CMS e ci serviranno delle modifiche particolari. La prossima voce è “www directory” ed è importantissima, perché è la cartella dentro alla quale inseriremo tutti i nostri progetti. Proviamo a farci clic con il tasto sinistro: per ora è vuota, fatta eccezione per la pagina index.php che è la pagina principale del server virtuale. Ne parleremo in modo più approfondito tra pochissimo. Abbiamo poi il nostro PhpMyAdmin, il programma che serve per gestire database di tipo MySQL: quando lavoreremo sui database, noi utilizzeremo MySQL. L’ultima voce che troviamo partendo dal basso è “Localhost”: proviamo a cliccarci sopra. Vedrete che si aprirà il vostro browser preferito (… o almeno quello che avete indicato al momento dell’installazione) con la pagina principale di Wampserver, e cioè quell’index.php di cui si diceva poco fa: la pagina ci mostra la configurazione del server, i “tools” (che sono i già citati programmi per il database assieme a phpinfo(), la pagina che ci mostrerà le configurazioni del PHP) e infine i nostri progetti! Per adesso la colonna è vuota, ma per riempirla si fa prestissimo. Andiamo nella www directory, creiamo una cartella e chiamiamola “nuovosito”: torniamo sul Localhost e vedremo che nella colonna “Your Projects” troveremo “nuovosito”. Ma torniamo al punto da cui siamo partiti: la sigla. Cosa significa PHP? È un cosiddetto acronimo “ricorsivo”, perché significa “PHP Hypertext Preprocessor” (“PHP Preprocessore di Ipertesti”): un acronimo ricorsivo è un acronimo in cui una delle lettere sta per la sigla, insomma un acronimo che contiene se stesso. “Preprocessore” è invece un termine informatico con il quale ci si riferisce a un programma che compie alcune operazioni preliminari prima dell’esecuzione del codice: il nostro linguaggio contiene il termine “preprocessore” perché prima di inviare la pagina HTML finale all’utente vengono interpretate, appunto, le istruzioni del codice, quindi prima che la pagina HTML venga consegnata al nostro browser, il preprocessore PHP compie alcune operazioni. Che espressione utilizzeremo per indicare PHP? O meglio… che tipo di linguaggio è? Non è ovviamente un linguaggio di markup. Il papà di PHP, il danese nato in Groenlandia Rasmus Lerdorf, lo chiama “linguaggio di scripting”, quindi io direi di utilizzare questa espressione, che sta bene anche con JavaScript. Curiosità: PHP è stato inventato nel 1994. Da allora ne ha fatta di strada! I vantaggi che derivano dall’utilizzo di PHP sono davvero molti e li scopriremo man mano che andremo avanti con il corso. Possiamo anticipare che PHP è facile da apprendere (certo, ci vogliono un po’ di pratica e un po’ di esercizio), che PHP ci semplificherà notevolmente la vita per alcune operazioni, che grazie a PHP potremo gestire meglio i dati del nostro sito, e che con PHP potremo anche, se avremo pazienza e soprattutto tempo a disposizione, costruire un nostro piccolo e semplice CMS personale! Bene, dopo aver installato l’ambiente di sviluppo è ora di cominciare a scrivere un po’ di codice! La prima cosa da sapere è che possiamo inserire codice PHP in qualsiasi punto della pagina: all’inizio, a metà, alla fine… dove vogliamo. Però prima di scrivere il codice… dobbiamo creare la pagina! Apriamo quindi la cartella “www” di WAMP e creiamo una nuova cartella, a cui daremo il nome che più ci aggrada: per questo esempio potremmo chiamarla PrimoProgetto. Apriamo la cartella PrimoProgetto e creiamo una pagina che chiameremo index.php: esattamente come per i siti in HTML, la prima pagina deve chiamarsi “index”. Cambia, ovviamente, l’estensione. Bene, adesso creiamo la struttura HTML come siamo abituati: doctype, tag html, insomma tutto ciò che serve per creare una pagina HTML in accordo con gli standard internazionali, che dovremo rispettare sempre anche progettando un sito in PHP! Creata la nostra pagina siamo finalmente pronti per aprirla con il nostro editor preferito (io consiglio di installare Notepad++) e per scrivere il nostro primo codice! Tutto il testo in PHP deve essere compreso tra un’etichetta (o tag, come preferite, io uso i due termini indistintamente) di apertura e un’etichetta di chiusura. Le etichette di apertura e chiusura sono queste:

<?php

?>

All’interno di queste due tag andrà inserito tutto il nostro codice, stando bene attenti a non commettere errori… vedremo tra pochissimo quanto sono facili le sviste con il PHP. Il primo comando che impariamo si chiama “echo”. Questo comando è un costrutto che serve per stampare a schermo una stringa di testo, ovvero ogni volta che digiteremo il comando echo, seguito da una stringa tra parentesi e apici o doppi apici e chiuso da un punto e virgola, vedremo comparire (quando apriremo la pagina con il browser), quella scritta che abbiamo inserito nel comando. Per vedere il risultato con WAMP, vi basterà cliccare sull’icona nel menù delle applicazioni e cliccare quindi su “Localhost”: si aprirà il vostro browser preferito con l’elenco dei progetti, nel nostro caso “PrimoProgetto”. Cliccate su “PrimoProgetto” e vi si aprirà la pagina index.php. Ma passiamo ora a un esempio pratico del comando echo:

<?php
echo (“Ciao, io mi chiamo Federico!”);
?>

Dal momento che echo non è una funzione (vedremo poi più avanti cosa sono le funzioni), possiamo anche omettere le parentesi:

<?php

echo “Ciao, io mi chiamo Federico!”;

?>

E possiamo cambiare i doppi apici con gli apici:

<?php

echo ‘Ciao, io mi chiamo Federico!’;

?>

Gli apici o i doppi apici devono sempre essere due! Una cosa del genere non può esistere perché restituisce un errore:

<?php

echo ‘Ho visto un’anatra’;

?>

Se proviamo a scrivere questa cosa sopra e poi proviamo ad aprire la pagina index.php scrivendo, nella barra degli indirizzi del nostro browser, http://localhost/PrimoProgetto/index.php, vedremo comparire una scritta del genere:

Parse error: parse error, expecting `’,” or `’;” in [percorso] on line [numero riga]

Significa che manca un apice, perché il server interpreta l’apostrofo dell’anatra di cui sopra come un apice (e in effetti, abbiamo usato il carattere dell’apice, e non quello dell’apostrofo, che è diverso, anche graficamente). Come fare quindi se ci serve un apice che faccia da apostrofo? Semplice: utilizziamo il carattere di escape, che è nient’altro che la backslash, subito prima dell’apice:

<?php

echo ‘Ho visto un\’anatra’;

?>

i caratteri di escape diranno che si dovrà tener conto di quell’apice per snobbarlo e non generare un errore. Ah, un’altra cosa a cui fare bene attenzione: non confondete gli apici con gli apostrofi e i doppi apici con le virgolette. Se scriveremo il codice con il blocco note o con un editor come Dreamweaver non avremo problemi, ma se avremo l’insana idea di scrivere il codice con, che so, Writer, i doppi apici vi verranno automaticamente trasformati in virgolette e se proverete a copiare il codice con le virgolette al posto dei doppi apici in una pagina PHP, non vi funzionerà niente. E altra cosa importante, non dimenticate il punto e virgola alla fine. State bene attenti a non confondere apici e doppi apici tra di loro (per esempio non potete aprire un echo con un apice e chiuderlo con un doppio apice): sembrano banalità ma si possono trascorrere mezz’ore con complesse funzioni PHP che dànno errore per scoprire alla fine, dopo aver controllato ogni singola riga di complicatissimi cicli o blocchi di istruzioni, che è tutto causato da un echo chiuso male e a cui magari non si è neppure fatto caso. Eh, per il PHP ci vuole un po’ di pazienza. Tornando a noi, possiamo utilizzare echo anche per stampare tag HTML:

<?php

echo ‘<strong>Ciao</strong>, io mi chiamo <em>Federico</em>!<br />Come va?’;

?>

E possiamo concatenare più stringhe utilizzando, tra una stringa e l’altra (ognuna compresa tra apici o doppi apici), il punto e chiudendo il tutto, al solito, con il punto e virgola:

<?php

echo ‘Questa’. ‘ è una’. ‘ concatenazione ‘. ‘di stringhe!’;

?>

In questo caso però state attenti agli spazi se non vorrete vedere le parole tutteattaccatecosì. La concatenazione ci sarà molto utile in futuro per fare alcune operazioni, soprattutto quando vedremo come far interagire PHP e MySQL: quindi dobbiamo impararla bene. Infine impariamo a usare i commenti. Ci sono due modi per commentare in php: su una riga o su più righe. I commenti su una riga si aprono con un doppio slash:

<?php
// questo è un commento su una riga
?>

Mentre quelli multiriga si aprono con backslash e asterisco e si chiudono con asterisco e slash, proprio come i commenti CSS:

<?php

/* questo è un commento

multiriga */

?>

Non ci sono particolari raccomandazioni sull’uso dei commenti: dobbiamo solo stare attenti a dove metterli. Non possiamo per esempio metterli tra il comando echo e il doppio apice:

<?php

echo //questo è sbagliato e restituirà un errore “Ciao a tutti!”;

?>

I commenti, come nel caso di CSS, ci serviranno se vorremo descrivere alcune parti di codice a chi le leggerà, per esempio. Oppure per ricordarci che cosa fa una certa funzione. Insomma, ognuno fa dei commenti l’uso che più ritiene necessario! C’è anche chi non li utilizza, ma io consiglio sempre di usarli, perché quando avremo a che fare con funzioni molto complesse ci sarà utile commentare alcune righe per ricordare meglio certi passaggi. Per noi che siamo abituati a creare siti in HTML, i CSS sono una bellissima invenzione: con pochi clic possiamo cambiare grafica, colori, immagini di sfondo, ampiezza dei div al nostro sito. Sono un po’ come dei vestiti di sartoria che cuciamo su misura per il corpo della nostra pagina web. Ma ci sono punti a cui anche i CSS non possono arrivare, purtroppo. Supponiamo di aver creato un sito di cinquanta pagine, con un bel menù come questo:

<pre>

</pre>

Supponiamo anche che, per una qualsiasi ragione, dobbiamo modificare questo menù, magari aggiungendo una voce. Con HTML l’unico modo per aggiornare il menù è aprire tutte le nostre cinquanta pagine e in ognuna di esse aggiungere la voce mancante. Una bella seccatura, non c’è che dire. A questo punto entra in gioco uno dei costrutti più utili di PHP: si chiama include e serve, come dice il nome stesso, per “includere” in una pagina un file esterno. Ma vediamone subito l’utilizzo. Prima di tutto dobbiamo creare un nuovo file in cui inseriremo soltanto il menù: pertanto inseriremo nel nuovo file la ul e tutto il suo contenuto, ma non il div. Possiamo assegnare a questo nuovo file il suffisso txt o ancora meglio il suffisso html. Chiameremo quindi il file “menu.html”. A questo punto portiamoci nella pagina principale (per esempio, “index.php”) e, al posto della ul, utilizziamo il costrutto include, sempre aprendo il codice PHP come abbiamo imparato nel capitolo precedente:

<pre>

</pre>

Se aprirete la pagina, noterete che avrà un aspetto identico a quello della pagina creata solo con il codice HTML, perché questo costrutto non fa altro che inserire all’interno della pagina il contenuto di un file esterno. Osservando il codice avrete già intuito la sintassi del costrutto: include con, tra parentesi, il nome del file racchiuso tra doppi apici (o apici), il tutto chiuso da punto e virgola. In questo modo, ogni volta che dovremo modificare il menù, sarà sufficiente apportare le modifiche al solo file “menu.html” e automaticamente, se avremo utilizzato “include” in tutte le cinquanta pagine, le modifiche saranno estese a tutto il sito! Davvero una grande comodità! È inteso che il nome del file che includiamo tra parentesi e apici o doppi apici deve trovarsi nella stessa cartella del file principale. Altrimenti dovremo specificare il percorso nello stesso modo in cui specifichiamo i percorsi, per esempio, di file html con l’etichetta a, ma senza poter utilizzare percorsi completi (per esempio: http://www.miosito.com/includes/menu.html)… i percorsi devono sempre essere relativi:

<?php

include(“includes/menu.html”);

?>

<?php

include(“../menu.html”);

?>

Include è del tutto simile a echo, quindi anche se omettiamo le parentesi non succede niente di strano. Sappiate però che è indifferente usare o meno le parentesi. È però molto importante non sbagliare i percorsi: nel caso in cui non dovessimo specificare il percorso corretto, comparirebbe un warning nella nostra pagina, e sinceramente non sarebbe bello da vedere. E ovviamente il file che vogliamo includere non sarà affatto incluso se sbagliamo il percorso! Il costrutto include, come abbiamo visto, è anche sufficiente per creare il nostro primissimo sito in PHP e ci aiuta già a risolvere un grosso problema. A proposito: attenti a chiamare include “funzione” (cosa che avviene in moltissimi siti), perché non è una funzione. Lo so, vi starete ancora chiedendo cos’è una funzione. Tra non molto ci arriveremo! Per completezza dobbiamo sapere che esiste anche un altro costrutto per includere file esterni, che si chiama require e funziona allo stesso modo di include:

<?php

require(“menu.html”);

?>

Qual è la differenza tra include e require, dal momento che il risultato prodotto è lo stesso? La differenza sta nella gestione degli errori: come abbiamo visto, include, nel caso in cui ci sia qualcosa che non va (come il percorso sbagliato) restituisce un warning, ovvero una scritta che vi avverte dello sbaglio: questo però non impedisce che il resto della pagina si possa vedere correttamente. Require invece restituisce un fatal error: se c’è qualcosa che non va nel require, si blocca tutta la pagina. Vi invito a fare qualche prova con la vostra pagina “index.php” per notare la differenza, anche perché il PHP si impara, più che con la teoria, con la pratica e con l’esercizio!

Riesci a saltare al di là di un crepaccio con php? Andiamo a cancellare record con seo Umbria, accetta la sfida!

seo umbriaAll’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1103138 tanto per riprendere i contenuti espressi in https://umbriawaycultura.wordpress.com/2017/10/17/insert-select-update-delete-le-basi-strategiche-delle-query-mysql-per-le-esplosioni-tattiche-di-php/ da seo Umbria assistiamo a una fase di gioco rocambolesca, il GM Nunn che sacrifica la regina per una sola torre il che begli scacchi agonistici rappresenta qualcosa di meraviglioso, ma dopo un poco vediamo che i pedoni diventano anziché uno, due e tre etc. Vabbé se n’era già parlato di questa lungimirante combinazione no? Pedr la verità questa partita, la Gert Ligterink vs John Nunn, Marbella Zonal Final Group (1982), Marbella ESP, rd 6, Feb-27,Benoni Defense: Fianchetto Variation. Hastings Defense (A63)·0-1 scatena un dibattito nel senso che verrebbe da chiedersi con seo Umbria se un motore moderno potrebbe mai perdere questa posizione e la risposta possiamo intuirla (non resterà che verificare le incongruenze tra uomo e macchina per chiarire la questione). Comunque tornando sempre a bomba e al nostro database JOKE, un contenitore per barzellette, avevamo affrontato le QUERY CRUD, ma eravamo rimasti in sospeso con una sfida. Si tratta a questo punto di posizionare sulla pagina, a fianco di ogni barzelletta, un link con un pulsante DELETE this joke (elimina questa barzelletta) che , quando viene attivato, rimuove quella barzelletta dal database e mostra un elenco di barzellette aggiornato. Magari utilizzando una pagina multiuso. Magari usando il comando SQL DELETE. Dobbiamo essere in grado di cancellare la nostra barzelletta UNIVOCAMENTE, la colonna ID nella tabella é stata inserita e progettata proprio con questo scopo! La stringa della query del pulsante “DELETE this joke” é un posto perfetto dove posizionare questo valore. E ora non ci resta che entrare in queste dinamiche con seo Umbria! seo umbriaDobbiamo quindi fare dei CAMBIAMENTI per inserire un pulsante di cancellazione a fianco di ogni barzelletta. In precedenza abbiamo fatto passare una variabile addjoke con il pulsante “ADD a joke!” alla fine di ogni pagina, per segnalare che il nostro script avrebbe dovuto mostrare il form di immissione della barzelletta, invece del solito elenco di barzellette. Allo stesso modo dobbiamo far passare una variabile deletejoke con il nostro pulsante di cancellazione per indicare il nostro desiderio di rimuovere una barzelletta. Per ogni barzelletta rintracciamo la colonna id dal database insieme alla colonna joketext in modo da sapere quale ID é associato con ogni barzelletta del Database. Dobbiamo far coincidere il valore della variabile $_GET[‘deletjoke’] all’ ID della barzelletta che stiamo cancellando. Per fare ciò inseriamo il valore dell’ id trovato nel DB all’ interno del codice HTML apposta per il pulsante “Delete this joke” di ogni barzelletta e infine, usando una dichiarazione IF, verifichiamo se $_GET[‘deletejoke’] é configurata su un valore specifico (attraverso la funzione PHP ISSET), quando la pagina si carica. Se é così, utilizziamo il valore sulla quale é configurata (l’id della barzelletta da cancellare) con una dichiarazione DELETE di SQL, che elimina la barzelletta in questione. Vediamo quindi il codice completo dopo la sequenza segnalata da seo Umbria di cui sopra, come al solito all’ interno del body va inserito questo codice PHP:

<?php if (isset($_GET[‘addjoke’])): // If the user wants to add a joke
?>

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

<?php else: // Default page display

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

// If a joke has been deleted,
// remove it from the database.
if (isset($_GET[‘deletejoke’])) {
$jokeid = $_GET[‘deletejoke’];
$sql = “DELETE FROM joke
WHERE id=$jokeid”;
if (@mysql_query($sql)) {
echo ‘<p>The joke has been deleted.</p>’;
} else {
echo ‘<p>Error deleting joke: ‘ .
mysql_error() . ‘</p>’;
}
}

echo ‘<p> Here are all the jokes in our database: </p>’;

// Request the ID and text of all the jokes
$result = @mysql_query(‘SELECT id, joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .
mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
// with a “Delete this joke” link next to each.
while ($row = mysql_fetch_array($result)) {
$jokeid = $row[‘id’];
$joketext = $row[‘joketext’];
echo ‘<p>’ . $joketext .
‘ <a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?deletejoke=’ . $jokeid . ‘”>’ .
‘Delete this joke</a></p>’;
}

// When clicked, this link will load this page
// with the joke submission form displayed.
echo ‘<p><a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?addjoke=1″>Add a Joke!</a></p>’;

endif;
?>

 

Come faccio a diventare Grande Maestro se accetto patta in posizione superiore? Come faccio a programmare in PHP se non conosco la bonifica e la validazione dei FORM?

Come faccio io web developer Umbria a risolvere il problema dei migranti? Come faccio a risanare l’INPS? Vabbè rientriamo nei ranghi senza fare spam per non subire penalizzazioni come web developer Umbria: Margate 1935, http://www.chessgames.com/perl/chessgame?gid=1224079, una piccola lezione di Reshewsky sulla valutazione della posizione. Non aveva la norma di GM e Capablanca di fronte gli propone patta, ma Reshewsky che fa? Decide di giocarsela e di vincerla quella partita dichiarando a un certo Frankael a fine partita con il punto portato a casa: come faccio a diventare Grande Maestro se non sono in grado di vincere le posizioni superiori? Alla faccia della sicurezza in se stessi, verrebbe da dire con web developer Umbria o con le stesse parole del GM: “Here Capablanca offered a draw, but since I had a clear initiative and pressure on black’s weaknesses, I declined the offer. I thought I could win, and I could not hope to become a grandmaster by accepting draws in winning positions.” – Source: Reshevsky’s Best Games by Reshevsky – SR. Tornando al problea dei form, bisogna risolvere la questione degli spazi bianchi digitati dall’ utente e la questione dei tag HTML oppure dei caratteri speciali HTML? Non possiamo mica permettere queste brotture no? Partiamo da un presupposto, chiunque digiti in un campo testo qualcosa é un maleintenzionato, potrebbe essere un ossimoro ma non lo é. Lo sviluppatore deve sempre mettersi dalla parte della sicurezza e della bonifica, costruire la sua interfaccia grafica a prova di superidiota in modo da non subire danni di qualsiasi tipo, quindi il processo di sanificazione é cosa buona e giusta ma soprattutto va accompagnato dalla validazione.Facendo riferimento da un interessante articolo apparso su uno dei tanti portali del Ceo Faraoni Enrico all’ indirizzo: https://umbriawaysemplifica.wordpress.com/2017/08/05/lumanita-sta-per-essere-distrutta-ma-php-permette-la-prevenzione-con-la-bonifica-dei-campi/ avevamo visto in dettaglio tutte quelle funzioni utili per la bonifica che possiamo riassumere anche in una funzione del tipo:

function clean($input) {
// Trims whitespace from input
$input = trim($input);
// Removes slashes from input data
$input = stripslashes($input);

// Typically you would use either strip_tags or htmlspecialchars
// depending on whether you want to remove the HTML characters
// or just neutralize it.

// Removes all the html tags from input data
$input = strip_tags($input);
// Escapes html characters from input data
$input = htmlspecialchars($input);

return $input;
}

Ovviamente serve poi tutto il lavoro sulla validazione che prevede una serie di controllo accurati sui singoli campi, accertarsi che la mail sia stata inserita con il simbolino giusto, accertarsi che il campo telefono non veda lettere, accertarsi che i campi non debbano essere vuoti, bisogna mettersi dalla parte di HULK che arriva sulla nostra pagina e inizia a compilare e spedire con la stessa grazia del suo collega Ben Grimm dei fantastici 4. I controlli di sicurezza sul modulo devono essere a prova di bomba atomica e di pugni sferrati sulla tastiera con la potenza della roccia dei fantastici 4! In questo posto sono riassunti i momenti salienti a livello di codice per risolvere il problema e potersi così finalmente distinguersi da un newbie! La spiegazione é abbastanza intuitiva ma se dovreste avere problemi non esitate a contattare Umbriaway Consulting per le delucidazioni (non gratuite!) di rito. Il modulo in azione con tutte le possibilità di errore da testare é presente all’ indirizzo: http://www.farwebdesign.com/examplephp/Example11-validatingInput-bootstrap.php e tra l’altro per l’appunto é stato formattato anche con bootstrap e le sue classi specifiche relative ai form e al gruppo di elementi per un form.

Il ciao mondo come non l’avete mai visto in PHP

Nel famoso script phpinfo(); veniva generato un intero documento HTML comprensivo di tutte le intestazioni standard della pagina, ossia head, content, body, footer etc e il tutto serviva per illustrare le specifiche di sistema. Ora proprio a riguardo della generazione dell’ output ricordiamo che PHP oltre alla generazione di pagine web può anche lavorare su shell e interfacce grafiche complesse che qui nell’ ultimo caso non andremo a vedere come umbriaway consulting nello specifico. Sicuramente per chi inizia a programmare scrivere codice cross platform é un vantaggio, certamente java é più rigoroso. La prima cosa che si impara é il famoso ciao universo che vediamo insieme a Umbriaway Consulting:

 

<html>
<head>
</head>
<body>
<?
echo “ciao Giove!”;
?>
</body>
</html>

accedendo da localhost per vedere l’effetto che fa con questo script scopriremo che sulla pagina in esecuzione comparirà la famosa scritta giovesca sopra menzionata. Ora a livello di codice HTML se andiamo a curiosare con tastro destro il sorgente della pagina vedremo che il codice diventa il seguente:

<html>
<head>
</head>
<body>
ciao Giove!
</body>
</html>

echo é una funzione che stampa a video le stringhe delimitate da virgolette e questo esempio serve per far capire come viene generato il codice in output. La sintassi poteva anche essere echo (“ciao pinko”); ma qui si ha il vantaggio che posso solo eseguire una istruzione alla volta mentre con: echo “ciao pallino”, “questo é un saluto php”; le due frasi saranno stampate consecutivamente su una unica riga. Da shell questo script verrà eseguito prima lanciando il php.exe e poi il ciao.php il nostro script e a video comparirà lo stesso output a livello semantico. Path e percorsi per i comandi di riga di comando possono differire da sistemna a sistema (linux o windows). Ovviamente viene da chiedersi come mai devo scrivere anche i tag html se questi poi vengono generati automaticamente e dinamicamente, corretto quindi per ottenere l’effetto finale posso anche scrivere solo echo (“ciao Giove!”); nel mio script, mentre se invece volessi modellare il testo potrei scrivere qualcosa di funzionale del tipo:

<html>
<head>
</head>
<body>
<?
echo ‘<p align=”center”><b>ciao Giove!</b></p>’;
?>
</body>
</html>

da notare la sfumatura virgoletta singola e virgoletta doppia dove abbiamo usato le prime per delimitare l’intera istruzione stringa di stampa in quanto all’ interno della stringa stessa sono presenti le doppie che provocherebbero conflitti sull’ apertura chiusura. Usando solo doppie avrei generato un errore errore per l’interprete di comando. Dal punto di vista strategico restituire degli errori a video é controproducente lì dove si incontrano maleintenzionati disposti a trarre profitto dai punti di vulnerabilità del sistema. Come abbiamo giàù detto in uno dei tanti portali umbriaway consulting sul file php.ini é possibile modificare la direttiva del parametro error_reporting a =E_ALL in modo che vengano riportati tutti gli errori utili per il debug e in secondo luogo bisogna anche andarli a visualizzare tramite l’accensione del parametro: display_errors=ON che per motivi di sicurezza all’ inizio viene impostato a OFF. Se PHP viene eseguito come modulo di APACHE affinché le modifiche diventino effettive é necessario riavviare il server web.

che produce esattamente una pagina statica con questo codice:

<html>
<head>
</head>
<body>
<p align=”center”><b>ciao Giove!</b></p>
</body>
</html>