Oggi voglio segnalare il blog di Ilia Alshanetsky, sito che seguo da un po’ dove ho trovato numerose informazioni su come utilizzare al meglio PHP, in particolare, oltre alla consueta sezione dedicata agli articoli, ho trovato molto utile la sezione Talks da dove si possono scaricare delle utilissime slide.
Buona lettura.
Posted in Internet, PHP | No Comments »
Qualche giorno fa dovevo eseguire delle operazioni lato server e per curiosità ho provato a confezionare degli script eseguibili da shell scritti in php e devo dire che la cosa non è affatto male.
Le operazioni da seguire per lanciare degli script php da shell sono molto semplici, prima di tutto bisogna sapere dove è installato php sul server in maniera da dichiararne il percorso a monte dello script, solitamente il percorso è /usr/bin/php ma se non si è sicuri basta eseguire il comando which php e si saprà dove è installato.
Quindi la prima riga del nostro file deve essere così:
#!/usr/bin/php
Successivamente dobbiamo rendere eseguibile il nostro script settando i permessi sul file:
chmod +x nomescript.php.
A questo punto il nostro file è pronto per essere eseguito da shell:
./nomescript.php.
Se il nostro script fose come questo:
1
2
3
4
| #!/usr/bin/php
<?php
echo 'Ciao mondo';
?> |
nella finestra del terminale verrà stampato:
Ciao mondo
Posted in Linux, PHP | No Comments »
Oggi mentre stavo sviluppando una nuova applicazione su Server PHP5 ho riscontrato il seguente errore:
Strict Standards: Only variables should be passed by reference
La parte di codice incriminata, già utilizzata più volte su PHP4, era la seguente:
return end(explode(".", $str));
Insomma, documentandomi ho risolto così:
$ext = explode(".", $str);
$ext = $ext[count($ext)-1];
return $ext;
Posted in PHP | No Comments »
Purtroppo per questioni di infrastuttura tecnica non sto lavorando da molto su ambiente PHP5 ma ogni volta trovo qualcosina in più che mi rende le cose più facili, tra le ultime la lettura dei file xml.
Infatti dalla versione 5 è stata introdotta nel php la libreria SimpleXML che offrendo un’interfaccia ad oggetti rende il lavoro di lettura veramente semplice.
Supponiamo di leggere il file anagrafica.xml riportato di seguito:
1
2
3
4
5
6
7
8
9
10
11
| <?xml version="1.0"?>
<anagrafica>
<record>
<NOME><![CDATA[Mario]]></NOME>
<COGNOME><![CDATA[Bianchi]]></COGNOME>
</record>
<record>
<NOME><![CDATA[Paolo]]></NOME>
<COGNOME><![CDATA[Rossi]]></COGNOME>
</record>
</anagrafica> |
Con poche righe di codice si ha accesso ai dati.
1
2
3
4
5
6
7
8
9
| <?php
$doc = simplexml_load_file("anagrafica.xml");
$anagrafica = $doc->record;
foreach($anagrafica as $dati){
echo "Nome: ".$dati->NOME."<br>\n";
echo "Cognome: ".$dati->COGNOME."<br>\n";
echo "<hr>\n";
}
?> |
Come si vede la struttura ad oggetti è molto semplice, facilita molto il lavoro ed il codice risulta molto pulito.
Posted in PHP | No Comments »
Quotidianamente durante la scrittura dei progetti faccio un grande uso di array e molte volte ho pensato che sarebbe utilie per vari scopi salvare il contenuto di un array in un database.
Con php questa operazione è molto semplice, basta utilizzare la funzione serialize().
Serialize “traduce” in stringa il contenuto dell’array così da poterlo salvare in un campo di una tabella, successivamente, per il recupero dei dati e la “ritrasformazione” in array, bisogna utilizzare la funzione unserialize().
In pratica l’ipotetico array $var_array=array(‘pippo’,'pluto’,'paperino’) verrebbe codificato in questa maniera:
a:3:{i:0;s:5:"pippo";i:1;s:5:"pluto";i:2;s:8:"paperino";}
Di seguito è mostrato del codice di esempio:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?php
/*
* Trasformo l'array in stringa
* Per evitare errori di sql codifico la stringa in base64
*/
$var_array = array('pippo','pluto','paperino');
$array_to_save = base64_encode( serialize($var_array) );
/* Salvataggio nel database */
$sql = "INSERT INTO TABELLA (CAMPO) VALUES ('".$array_to_save."')";
mysql_result($sql,$dblink);
/* Recupero dell'array dal database */
$sql = "SELECT CAMPO FROM TABELLA WHERE ID = ".$id;
$result = mysql_result($sql,$dblink);
$row = mysql_fetch_assoc($result);
$var_array = unserialize( base64_decode($row[CAMPO]) );
?> |
Posted in MySql, PHP | No Comments »
Ecco qui di seguito una piccola funzione che vi permettarà di leggere in maniera veloce il contenuto dei file xml. Questo script restituisce un array contenente i dati del file xml, sarà vostra cura elaborare questo array adattandolo ai vostri utilizzi.
<?php
function readXml($file){
$xml_parser = xml_parser_create();
if(!($fp = fopen($file, "r"))){ die("Impossibile aprire il file Xml"); }
$data = fread($fp, filesize($file)+1);
fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
return $vals;
}
?>
Posted in PHP | 2 Comments »
In questi giorni stavo analizzando la fattibilità di realizzazione di un archivio fotografico collegato ad un motore di ricerca in maniera da cercare all’interno dei metadata delle immagini, cercando su Google ho trovato un articolo molto interessante che in pratica fa proprio al mio caso e spiega nel dettaglio come poter leggere i metadata con php. Non male…!
Di seguito il link all’articolo:
http://devzone.zend.com/article/4025-Reading-and-Writing-MP3-and-Photo-Metadata-with-PECL-
Posted in PHP | 1 Comment »
Ecco un esempio di come si può fare un upload ftp con Php. La seguente funzione trasferisce mediante protocollo ftp il contenuto di una cartella verso uno spazio ftp.
La proprietà $setting della funzione è un array che deve contenere i seguenti dati:
- $setting['Host'] -> Host a cui collegarsi, ad esempio un indirizzo ip;
- $setting['User'] -> Nome utente per la connessione ftp
- $setting['Pass'] -> Password per la connessione ftp
- $setting['RemoteFolder'] -> Percorso remoto su cui trasferire i file, ad esempio “/Upload/”
- $setting['DeleteRemoteFiles'] -> Se viene settato con valore 1, prima del caricamento vengono cancellati tutti i files presenti nel $setting['RemoteFolder']
- $setting['LocalFolder'] -> Percorso dove recuperare i files da trasferire, ad esempio “/home/File_da_trasferire/”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| <?php
function FtpUpload($setting){
if(!$conn_id = @ftp_connect($setting['Host'])){
return false;
}
if(!$login_result = @ftp_login($conn_id,$setting['User'],$setting['Pass'])){
ftp_quit($conn_id);
return false;
}
if($setting['DeleteRemoteFiles'] == 1){
if($contents = ftp_nlist($conn_id,$setting['RemoteFolder'])){
foreach($contents as $v){
if($v!="." and $v!=".."){
if(@ftp_delete($conn_id,$v)){
$ndelete++;
}else{
$faildelete.="Errore nella rimozione del file remoto: ".$v."<br />\n";
}
}
}
}else{
ftp_quit($conn_id);
return false;
}
}
if($handle = opendir($setting['LocalFolder'])){
while(($file = readdir($handle)) !== false){
if($file != "." and $file != ".."){
if(@ftp_put($conn_id,$setting['RemoteFolder'].$file,$setting['LocalFolder'].$file,FTP_BINARY)){
$nput++;
}else{
$failput.="Errore nell'upload del file: ".$setting['LocalFolder'].$file."<br />\n";
}
}
}
}else{
ftp_quit($conn_id);
return false;
}
ftp_quit($conn_id);
$return['nput'] = $nput;
$return['ndelete'] = $ndelete;
$return['failput'] = $failput;
$return['faildelete'] = $faildelete;
return $return;
}
$setting['Host'] = '';
$setting['User'] = '';
$setting['Pass'] = '';
$setting['RemoteFolder'] = '';
$setting['DeleteRemoteFiles'] = '0';
$setting['LocalFolder'] = '';
if($upload = FtpUpload($setting)){
print_r($upload);
}else{ echo "Si è verificato un errore"; }
?> |
Posted in PHP | No Comments »
Ho approfondito lo studio dell’espressione regolare di ieri e ne ho scritta una decisamente migliore utilizzando la funzione preg_match_all() derivata dal Perl. Questa, a differenza della regex scritta nel precedente articolo, estrae tutti gli indirizzi email che si trovano all’interno di un testo.
1
2
3
4
5
6
| <?php
preg_match_all("/\\b[A-Z0-9._-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i",$testo,$array);
foreach($array[0] as $v){
echo $v."<br>\n"; /* Elenco degli indirizzi trovati */
}
?> |
Posted in PHP | No Comments »