logo grande web4human blog

in Codice | -April-18 | | 0

PHP 4 beginners - consigli utili all'uso

PHP per tutti.

PHP è un linguaggio di programmazione molto semplice all'apparenza, è infatti facile da approciare nei concetti di base e facile da utilizzare anche da parte di chi è a secco di nozioni di programmazione. Spesso nella forma più semplice PHP si alterna all'HTML e al javascript "avvolgendo" il codice in cicli o controlli, rendendo intuitivo quello che sta facendo nella pagina. Questa sua semplicità è però anche la più grande causa dei suoi mali, è facile trovare software scritto male e senza nessuna attenzione alla sicurezza. Mentre con altri tipi di linguaggi scrivere male il software può portare ad un risultato brutto o non funzionante, con PHP scrivere male può portare a pericoli davvero seri in grado di mettere a rischio l'integrità del software, della base dati e della piattaforma di appoggio.
Per questo motivo, abbiamo preparato una breve lista di consigli per chi è alle prime armi e rischia di far danni, Consigli che potrebbero portare sulla giusta strada per iniziare a scrivere software di buona qualità.

Darsi delle Regole

Imponiti delle regole per normalizzare il codice, ad esempio usa sempre le minuscole per i nomi delle variabili e le maiuscole per le costanti, utilizza sempre la lingua inglese per assegnare i nomi a variabili e costanti, utilizza Camel case per i nomi delle funzioni, apri sempre PHP con la sintassi intera, organizza le directory in maniera chiara in modo da separare le parti di codice destinate a operazioni diverse, separa sia a livello fisico che logico le parti pubbliche da quelle sotto autenticazione, Mantenere l'ordine, quando apri e chiudi php per alternare l'html può risultare complicato. cerca di aprire e chidere al livello dell'html quando convivono nello spesso file.
Utilizza la forma abbreviata per gli array $var=[], e se devi solo stampare in linea utilizza la forma abbreviata di echo <?= $myvar ?> Utilizza il plurale e il singolare in base al contenuto della variabile. es $products conterrà una lista di prodotti mentre $product conterrà un prodotto specifico.
Tutte queste regole autoimposte, ti porteranno a scrivere più velocemente e a commettere meno errori, nonchè ti agevoleranno quando vorrai passare a un utilizzo di PHP con strutture di programmazione più complesse.

Spero si capisca che non vi sto dicendo di fare esattamente così, ma di trovare un vostro metodo per ritrovarvi sempre nel vostro codice.

<?php
	function ucName($name){
		return ucfirst(strtolower($name));
	}
	$names=[
		'mario', 'LUCA', 'maria'
	];
	foreach($names as $name){
		?>
		<div>
			<?= $name=ucName($name); ?>
		</div>
		<?php
	}
?>
 

FORM e SANITIZE

L'incubo per chi programma PHP e interagisce con una base dati è quello di essere esposti a SQL injection.
Prova a pensare, quando costruisci un form e poi utilizzi i dati di quel form per costruire il testo di una query, qualunque stringa inattesa venga passata da quel form, andrà a interagire direttamente con il Databse. Una stringa ben scritta potrebbe fare danni gigantesci, dall'estrazione di una tabella privata, alla cancellazione di tutto il database.
Prendi precauzioni:

  • Passa le tue variabili attraverso la funzione mysqli::escape_string
  • Se devi passare un numero intero, castalo a (int)
  • Cerca di imporre limiti sul numero di caratteri dagli input e verifica se tale limite viene violato
  • Controlla bene la tua configurazione php.ini e valuta bene la dimensione massima di una Post, di un singolo file, l'utilizzo massimo di memoria e del tempo di esecuzione
  • Utilizza i filter validate e i filetr sanitize
  • qualunque controllo effettuato lato frontend, va rieseguito sul lato backend
  • utilizza CSRF token per lo scambio dati tra il form e lo script
  • Se carichi file, esegui accurati controlli sui MIME type e scansiona i file con clamAV
  • Se scrivi un form contatti o comunque un form collegato con un mailer, usa re-captcha
  • Se hai accesso al sistema operativo, valuta l'eventuale necessità per l'utilizzo di un application Firewall

Questi sono solo una piccola parte delle varie precauzioni che vanno prese, alcune By-default e altre in base all'esigenza; bastano per iniziare a far capire come lo scenario su PHP cambi da linguaggio semplice a linguaggio che necessità una cura estrema durante l'uso.

 
 

Query e cicli

In ottica di una potenziale crescita dei record nel Database, dovete sempre scrivere pensando ai grandi numeri, ottimizzando numero delle query e dimensione dei risultati. Bisogna evitare accuratamente l'uso di query al databse all'interno dei cicli come foreach, se ti trovi a dover fare una cosa del genere, probabilmente hai sbagliato qualcosa a livello di concetto. Mettiano di avere una tabella products e un'altra tabella relazionata di nome colors e di conseguenza una joinTable products_colors, NON dobbiamo mai estrarre prima i prodotti e poi ciclandoli andare a cercare i colori associati, ma dobbiamo pensare a come scrivere una sola Query in grado di estrarci i prodotti già completi dei colori associati. La sintassi MySQL è ricca ed articolata e permette di raggiungere qualunque dato che sia relazionato tramite una ForeingKey. Ottimizza anche i dati che andrai a selezionare dalle tabelle evitando quando possibile di utilizzare SELECT *, Le query devono essere più snelle e il meno numerose possibile, i dati estratti devo subire il minimo indispensabile dei trattamenti prima di essere pronti. In sostanza, il codice deve essere il più leggero e veloce che si può. Quando estraete i dati dovete essere dei chirurghi !!!!

<?php
	$query='SELECT r.id, r.name, c.tel, c.mail, c.registry_id
		FROM registries AS r, contacts AS c
		WHERE c.registry_id=r.id
		AND r.id='.(int)$_POST['id'].';';
?>
 

Utilizza quando puoi gli stati di ritorno nell'header e l'error handling. Se un record non viene trovato a volte è meglio restituire uno stato 404, anzichè uno stato 200 con un return false del metodo.

 

Una buona Roadmap di apprendimento

Bisogna partire dal basso e piano piano risalire l'albero della conoscenza, perchè la conoscenza di ogni gradino è essenziale per l'apprendimento del sucessivo
Ti consiglio di seguire una roadmap di studio simile a quella indicata :

  • Linux AMP = LAMP - PHP è un interprete, il suo compito è quello di processare i nostri script e alla fine passarli al server apache (o alla CLI). Una buona conoscenza della tecnologia alla base è un buon punto di partenza.
    Installare CentOS, lo stack AMP, gestire i server ftp, ftps, sftp, ssh, apache, MariaDB, conoscere Mod_rewrite, utilizzare correttamente .httaccess, firewalld Selinux ...... Questi e molti altri sono non indispensabili ma in molti casi, requisiti molto utili.
  • Paradigma procedurale - Per imparare le basi e approciare al linguaggio è necessario studiarlo nella sua forma procedurale. da questa forma non si può tirare fuori nulla di finito, non si può dar luce a strutture complesse, ma si può imparare quello che serve per passare allo step successivo.
  • OOP - Il paradigma ad oggetti è INDISPENSABILE per raggiungere un livello decente nello sviluppo di qualunque applicazione in PHP. Introduce i concetti di oggetti, classi, attributi, metodi, interface e molti altri, ma ma sopratutto ti insegerà a ragionare diversamente sui problemi di programmazione.
  • MVC, ORM....Framework - Il design pattern MVC permete un organizzazione superiore del codice, dividendolo in parti specifiche le quali si occupano di svolgere un compito determinato, I modelli stabiliscono l'accesso ai dati, danno forma agli oggetti, decidono come interagiscono con altri modelli, danno vita alle entity, i Controller si occupano di ricevere le richieste utente, di processarle e di acceder ai dati attraverso il modello, La vista si occupa di fornire i dati all'utente e di interagire con lui.
    ORM, un sistema studiato per agevolare (notevolmente) l'accesso ai dati nei database in ottica OOP.
    I Framework sono l'insieme di tante regole di programmazione e di tanti metodi. Sono dei telai, delle architetture logiche di supporto, che ti porteranno finalmente ad avere tutti gli strumenti necessari per poter realizzare del software di qualità.
    Esistono molti Framework, non esiste il migliore di tutti, esistono diversi Framework adatti a diverse esigenze, Ogni programmatore ti dirà che quello che usa lui è il migliore, ma l'importante all'inizio è capire un po come funzionano, per poi aver la possibilità di provarli e trovare quello che fa per te e per la tua esigenza specifica.
    Laravel è uno dei più utilizzati in questo periodo, ma visto quello che abbiamo detto prima dei programmatori..... vi invito a dare uno sguardo anche a CakePHP3.
    Programmare utilizzando un framework cambia tutto, agevola le operazioni di base di preparazione dei progetti, fornisce strutture di base per il CRUD sui vari modelli, offre tramite composer l'accesso a plugin per l'uso delle varie SDK o per la gestione di autenticazioni e autorizzazioni e davvero molte molte molte altre bellissime cose.

Considerazioni

Non si finisce mai di studiare e apprendere, se a un certo punto pensi di essere "arrivato", ti stai perdendo la possibilità si imparare qualcosa. L'esperienza come sempre è una costande fondamentale per il corretto uso di qualunque linguaggio, sono difatti i problemi reali che ci si presentano durante lo sviluppo che ci obbligano a sfoderare tutto l'ingegno per trovare nuove soluzioni. in base alla propria esperienza, ogni programmatore troverà la propria soluzione.

Contrariamente a quanto detto all'inizio di questo post, PHP non è un linguaggio ne semplice ne veloce da padroneggiare.
Come tutte le cose nel mondo dell'informatica, è una scatola piccola vista da fuori ma infinitamente grande al suo interno !!!

 

Data pubblicazione: 22-April-18 / Ultima modifica: 23-April-18

Ti è piaciuto l'articolo? Condividilo!
Commenti

Accedi o registrati per lasciare un commento.

Link Sponsorizzato