Visualizzazione post con etichetta php. Mostra tutti i post
Visualizzazione post con etichetta php. Mostra tutti i post

venerdì 27 luglio 2018

Leggi il post

Come unire due array in php

La desiderata del giorno è molto semplice: unire array php.
Poniamo ad esempio di avere due o più liste separate di nomi, salvate per qualche ignoto motivo in array differenti, come si può fare per unire il contenuto dei due array?
Presto detto, continua a leggere questo post (cit.).


Come unire due array in php


Per poter mixare due array, accodando tutte le chiavi ed i valori del secondo dentro al primo, basta usare il comando php array_merge.

Prendiamo l'esempio delle due liste di nomi, ecco un po' di codice per capire subito come funziona il merge degli array in php:

<?
    $nomi_maschili=array("giovanni","rosario","francesco");
    $nomi_femminili=array("chiara","giovanna","antonia");
    $nomi=array_merge($nomi_maschili,$nomi_femminili);
    print_r($nomi);
?>


La prima obiezione che potrebbe sorgere guardando il codice che ho appena postato, è che con questo metodo le chiavi numeriche degli array uniti cambiano.
Per evitare questo effetto collaterale si può, prima di fare il merge, assegnare una chiave non numerica a mano ad ogni valore degli array, prestando però attenzione a non generare duplicati tra un array ed un altro, così ad esempio:

<?
    $nomi_maschili=array("gio"=>"giovanni","ros"=>"rosario","fran"=>"francesco");
    $nomi_femminili=array("chia"=>"chiara","giov"=>"giovanna","anto"=>"antonia");
    $nomi=array_merge($nomi_maschili,$nomi_femminili);
    print_r($nomi);
?>


Ed ecco che con il potentissimo array merge php si potranno mixare infinite liste di array.

giovedì 26 luglio 2018

Come installare Laravel su Windows

Laravel è un framework open source di tipo MVC (modello-vista-controllo) scritto in PHP per lo sviluppo di applicazioni web e siti internet in generale.
Laravel è stato creato nel 2011 da Taylor Otwell, come una sorta di spin-off di Symfony, e poi distribuito con licenza MIT.
Tutto il codice sorgente di laravel può essere trovato su GitHub, sul quale ha riscosso un grande successo.

Fatta questa premessa su quello che forse è il framework php più famoso al mondo, ed evitando sterili polemiche sul fatto che i veri programmatori usano le proprie librerie e che le tabelle del database se le creano a mano perchè conoscono l'sql, vediamo subito come fare per installare laravel su windows, quindi volendo anche ambiente wamp.


Come installare Laravel su Windows


Per poter installare velocemente laravel, occorre prima installare composer.
Se non sai come fare, leggi prima questo post, che ti spiega anche come configurare il php in modo che sia facilmente eseguibile sotto windows.

Dopo aver messo il composer in una cartella generica che possiamo chiamare laravel, andiamo a generare i nostri ambienti di sviluppo, gestendoli come sottocartelle indipendenti.
Se ad esempio il nostro sito si deve chiamare fatture, ecco cosa scrivere dal prompt dei comandi di dos partendo dalla cartella laravel in cui abbiamo installato il composer:

php composer.phar create-project laravel/laravel nomeprogetto --prefer-dist

Dove ovviamente in questo caso, al posto di nomeprogetto dovremo scrivere fatture.

Attendiamo con pazienza la fine del download e dell'installazione di tutti i pacchetti, ed il gioco è fatto.

Come installare Laravel su Windows

Se tutto sarà andato a buon fine, non ci saranno errori a video ed avremo la nostra cartellina fatture con tutti i file di laravel necessari per poter gestire il progetto.

Ah, dimenticavo, allo stato attuale per poter utilizzare laravel occorre soddisfare i seguenti requisiti:
  • Avere PHP versione 5.5.9 o successive
  • Abilitare l’estensione PHP Mbstring
  • Abilitare l’estensione PHP PDO
  • Abilitare l’estensione PHP Tokenizer
  • Abilitare l’estensione PHP OpenSSL 

E' tutto, eccoci pronti per muovere i primi passi con il framework php laravel, tantè che con questo metodo viene già generato il file di configurazione contenente l'application key.

martedì 24 luglio 2018

Leggi il post

Come installare Composer su Windows

Composer è uno standard mondiale per la gestione delle dipendenze in PHP, uno strumento che permette anche il setup e la generazione di ambienti.
Composer semplifica il lavoro dello sviluppatore, rendendo facile l’utilizzo di librerie di terze parti e consentendo anche di usare microlibrerie al posto di più pesanti macrolibrerie.
Composer installa automaticamente le dipendenze delle librerie che si devono usare, liberando lo sviluppatore da quest'onere.

Inoltre Composer, si occupa anche degli aggiornamenti, eseguibili  facilmente tramite semplici comandi che tengono conto di eventuali limiti impostati nel file di configurazione.
Infine Composer fornisce anche una funzione per l’autocaricamento delle classi, la quale può essere ottimizzata per l’ambiente di produzione.


Come installare Composer su Windows


Se utilizzi php sotto windows, magari con wamp, devi sapere che la sintassi per installare composer è la medesima che in altri ambienti.

Ecco cosa devi fare per installare composer:
  1. Apri il prompt di dos con i permessi di amministratori
  2. Entra nella cartella dove vuoi installare il composer
  3. Se non hai registrato il php come variabile d'ambiente su windows, per semplicità per poterlo lanciare da qualsiasi parte, fallo (se non sei capace leggi questo post)
  4. Digita in sequenza i seguenti comandi nel prompt di dos (dopo ogni riga, riconoscibile dalla parola php, premi invio):
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"

L'unica accortezza che dovresti avere, è quella di verificare, nel caso nel secondo comando ti dia errore, se l'installer scaricato abbia l'hash aggiornato (altrimenti ti appare installer corrupt), andando a verificare il tutto su questo sito e nel caso sostituire l'hash_file trovato in questo esempio con quello corrente.

Ecco tutto, hai già installato composer su windows.
Ora per poterlo utilizzare digita banalmente php composer.phar nella cartella in cui è stato generato questo file, e segui le istruzioni a video.

Ed ecco che hai fatto i tuoi primi passi nel magnifico mondo di composer php :)

venerdì 6 luglio 2018

Nascondere versione PHP wamp

La suddetta guida su come nascondere le informazioni del php è valida sia per wamp, che per qualsiasi altro tipo di installazione e/o server, dato che si andrà ad agire direttamente sui file di configurazione del php.

Quello che ci interessa poter fare è non fare apparire la versione del php in uso sul server, in modo tale da rendere meno vulnerabili i nostri siti internet da attacchi malevoli.
La logica dietro alla necessità di questa azione è molto semplice: meno cose il nemico sa, e più per lui sarà difficile trovare il modo di attaccarti.

Nascondere versione PHP wamp

Vediamo dunque come fare per aumentare la sicurezza/privacy del nostro sito php.


Come nascondere le informazioni del PHP con wamp (e non)


Per far sparire dal server la versione in uso del php, basta agire sul famoso file di configurazione php.ini.

Se utilizzi wamp, trovi questo file cliccando con il tasto sinistro del mouse sull'icona del programma, poi cliccando su php ed infine su php.ini.

Adesso dovrai cercare e sostituire

expose_php = On

con

expose_php = Off

Ed ovviamente riavviare tutti i servizi di wamp.

Nel file di configurazione del php troverai la seguente spiegazione:
"Decides whether PHP may expose the fact that it is installed on the server (e.g. by adding its signature to the Web server header).  It is no security threat in any way, but it makes it possible to determine whether you use PHP on your server or not."

Questo in pratica vuole anche dire che volendo per far sparire questa informazione, basta agire anche solo sul file di configurazione di apache, come spiegato in questo post.

giovedì 28 giugno 2018

Leggi il post

Variabile dinamica in PHP

C'era una volta l'eval php, con la quale ad esempio, poter generare delle variabili dinamiche, se così si possono chiamare.
Poniamo ad esempio di avere un form generato dinamicamente, con un numero imprecisato di campi. Capire quali campi sono stati passati alla pagina di destinazione è indispensabile per poter fare gli opportuni controlli su di essi.
Se quindi da una parte è possibile sapere a monte quante variabili vengono passate ad una pagina, dall'altra è poi possibile generare dinamicamente una variabile php, utilizzando un nome seguito da un numero o un valore contenuto in un'altra varibile.

Probabilmente è più facile fare un esempio pratico, piuttosto che cercare di spiegare a parole questo concetto :p


Come creare una variabile dinamica in PHP


Se si vuole generare una varibile composta da più elementi, uno fisso ed uno dinamico, magari andandola ad utilizzare all'interno di un loop, ecco la sintassi php da utilizzare.

$nuova_variabile=${'variabile_'.$numero};

Con la sintassi ${} infatti, è possibile fare quello che su altri linguaggi si faceva con l'eval, ovvero generare una varibile dinamicamente.

Vediamo due righe di codice d'esempio:

$variabile_1="Franco";
$variabile_2="Mario";
$variabile_3="Antonio";
$variabile_4="Giovanni";
$variabile_5="Ugo";
for($i=1; $i<=5; $i++)
{
$nuova_variabile=${'variabile_'.$i};
echo "$nuova_variabile<br />";
}

Il ciclo in questione dunque, mostrerà a video il contenuto di tutte le varibili generate con il nome dinamico, una parte del quale sarà sempre fissa, mentre l'altra sarà composta dal numero incrementato in automatico in un loop.

Come usare questa cosa nel concreto?
Beh, a parte esempi di array dinamici php, prendiamo il caso del form dinamico con dieci campi che si chiamano nello stesso modo, fatta eccezione per una parte finale del nome incrementata con un contatore.
Se si vuole poi lato server fare i controlli e salvare i dati nel database, un metodo molto utilizzato è quello di passare dalla form un campo hidden contenente il numero di variabili da controllare, e poi ciclare il tutto come nell'esempio di poco sopra, con l'unica differenza che la variabile generata sarà ottenuta con una _request.

Se poi si vogliono pescare i dati di una tabella sql che ha tantissime colonne, normalmente bisognerebbe scrivere un sacco di codice sia per comporre la query (a meno che non si voglia usare il terribile asterisco *), sia per assegnare alle variabili php il contenuto delle singole colonne.
Per risparmiare un bel po' di tempo, soprattutto se le pagine che fanno queste query sono molte, si potrebbe salvare in un'array la struttura della tabella, indicando come valore il nome di ciascun campo, così:
$campitabella=array("nome","cognome","indirizzo","fax","telefono");
Poi, quando si sfoglia la tabella nel classico ciclo while, al posto di scrivere tutte queste righe:
$nome=$row['nome']);
$cognome=$row['cognome']);
$indirizzo=$row['indirizzo']);
$fax=$row['fax']);
$telefono=$row['telefono']);

Potremmo scrivere semplicemente:

foreach ($campitabella as $k=>$v) ${$k}=$row[$k];

Comodo, no?

mercoledì 6 giugno 2018

Leggi il post

Collegarsi a Sql Server con il PHP

Si, lo so, il database per eccellenza del php è il mysql, che tra l'altro è anche gratis come il linguaggio di programmazione per il web da cui più comunemente viene richiamato.
Ci sono però dei casi in cui bisogna lavorare su db diversi, magari a cui si appoggiano altri applicativi.
Se quindi l'esigenza è quella di collegarsi a sql server da php, ecco che sei capitato nel post giusto (cit.).

Per compiere questa operazione in realtà, esistono diversi metodi, più o meno semplici.
Si va dall'installazione di drivers sul server ospitante, all'aggiunta di specifiche estensioni del php, ecc...
Il metodo più rapido che ho trovato però, non richiede chissà quali passaggi a livello sistemistico, se non quelli di verificare che non ci siano blocchi tra i server che devono comunicare, e consiste nell'utilizzo di poche semplici righe di codice.


Come collegarsi a Sql Server con il PHP


Qui di seguito il codice necessario per poter effettuare la connessione a sql server da php, e come fare per poter effettuare le query, che in questo caso consistono in una semplice select:

<?
$server="nome-server";
$database="nome-database";
$user="username";
$password="password";
$conn=odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;",$user,$password) or die("Impossibile collegarsi a sql server");
$sql="SELECT campo FROM tabella";
$rs=odbc_exec($conn,$sql);
while(odbc_fetch_row($rs)) echo odbc_result($rs,1)."<br />";
odbc_close($conn);
?>

Come si può ben intuire da queste poche righe di codice php, la funzione chiave che serve per collegarsi a sqlserver è una generica odbc_connect.
Una volta effettuata la connessione poi, si esegue la query tramite il comando odbc_exec, che ovviamente potrebbe essere utilizzato anche per insert o update.
Si cicla il tutto con una bella while abbinata alla odbc_fetch_row, ed infine si chiude la connessione con una odbc_close.

Se poi vogliamo sapere quanti record abbiamo pescato con la nostra query, prima di decidere se sfogliarli o meno, basta utilizzare la seguente sintassi:
$numero-record=odbc_num_rows($rs);

Bene, direi che è tutto.
Con poche e semplici righe di codice php, che comprendono la stringa di connessione a sql server, ci siamo connessi al database microsoft ed abbiamo sfogliato il contenuto di una tabella.

PS ovviamente bisogna ricordarsi di utilizzare la sintassi sql di sql server, che è un po' differente da mysql... ma chettelodicoaffare (cit.).

venerdì 23 marzo 2018

Come aggiornare il PHP su Wamp

Se usi wamp per windows per gestire i tuoi siti internet, sicuramente potrebbe capitare di voler aggiornare la versione del php installata di default.
In questi casi puoi agire sostanzialmente in due modi.
Il primo consiste in una brutale reinstallazione da zero di wamp, magari in una nuova cartella, il secondo metodo invece consente di aggiungere una nuova versione php al tuo wamp.

Visto che reinstallare wamp da zero può voler dire molto lavoro per replicare configurazioni di apache, mysql e php varie, la seconda soluzione è decisamente quella più comoda.


Come aggiornare la versione del PHP su Wamp


Per poter aggiornare wamp php più recente senza dover reinstallare tutto, procedere nel seguente modo:
  1. Scarica l'ultima versione del php per windows dal sito ufficiale (o la versione che più ti aggrada): https://windows.php.net/download
  2. Scompatta lo zip appena scaricato dentro la cartella bin/php di wamp, dandogli un nome sulla falsa riga degli altri, ovvero ad esempio:
    C:\wamp\bin\php\php7.2.3
  3. Entra nella versione più recente del php wamp (tra quelle installate in precedenza) e copia nella nuova cartella il file wampserver.conf
    In linea di massima questo file va bene così senza modifiche
  4. Sempre in una precedente cartella di un php funzionante (meglio se il più recente della versione che intendi aggiornare, ovvero la 5.qualcosa se vuoi aggiornare la 5, o la 7.qualcosa se vuoi aggiornare quest'ultima), prendi e copia nel nuovo php i seguenti file: php.ini e phpForApache.ini.
    Questi file vanno modificati con una breve ricerca, basta infatti ricercare il nome della versione precedente, con il nuovo numero.
    Ad esempio:
    extension_dir ="c:/wamp/bin/php/php7.0.10/ext/"
    con
    extension_dir ="c:/wamp/bin/php/php7.2.3/ext/"
  5. Chiudi e riapri wamp

Se avrai fatto tutto correttamente, l'icona di wamp tornerà verde, e cliccando con il tasto sinistro del mouse potrai cliccare su php->version, e da lì vedere e selezionare la nuova versione del php appena installata.

Come aggiornare il PHP su Wamp

Nella foto che ho allegato, la procedura non è filata liscia al 100%, in quanto in questo caso cliccando sul punto esclamativo vicino alla versione del php aggiornato, viene fuori un bel messaggio con scritto: "this php version doesn't seem to be compatible with your actual apache version".
Siccome viene indicata anche la dll mancante, ovvero la php7apache2_4.dll, mi è bastato prenderla dalla solita cartella php precedente ed incollarla nella nuova, e chiudendo e riaprendo wamp tutto ha funzionato... o meglio quasi.
Anche con la dll copiata apache non voleva girare, cercando poi su internet ho visto che è meglio installare la versione safe del php (nel mio caso la "VC15 x64 Thread Safe" e che mixare 32bit e 64bit è sempre il male, per cui attenzione!

php wamp aggiornato

Ovviamente questa procedura fila lisca, quanto più la versione del php da aggiornare è vicina all'ultima versione installata.
Se infatti c'è un abisso tra una versione ed un'altra, è molto probabile che copiare i vari php.ini possa non essere la via più semplice, in quanto potrebbero esserci parametri non più usati/compatibili.
Quindi in questi casi è meglio partire da un php.ini preso direttamente dalla versione che andiamo ad installare, magari aggiornato sulla falsa riga dell'ultimo php.ini funzionante.
Se poi anche la versione di apache o quella di mysql o phpmyadmin risultano incompatibili con il nuovo php, allora potrebbe proprio essere il caso di installare da zero una versione più recente di wamp.