Pagine

mercoledì 22 dicembre 2010

Scrivere, leggere e inserire foto su un file xml da php

Rieccoci a parlare di php e di interazione con i file .xml .Questa volta vorrei creare un form che permetta di inserire testi e foto su una pagina web partendo da un file XML.
Creiamo con il nostro editor preferito un file che chiameremo Inserisci.php e scriviamo:


<HTML>
<BODY>
<?php echo ('<form action="public/insert.php" method="post" name="Ins" ENCTYPE="multipart/form-data">
//insert.php sarà il file che ci permetterà (fra poco) di inserire sia i testi che le foto.
<table align="center" bgcolor=#cccccc border=1>
 <th colspan="2">Inserisci nuova foto</th>
 <tr><td><label>Id Utente</label></td><td><input name="id" type="text" /></td></tr>
 <tr><td><label>Password</label></td><td><input name="pass" type="password" /></td></tr>
 <tr><td>Scegli categoria</td><td><select name="categoria" size="1">');
 $MenuCat=Array ("Gare","Personali","Raduni","Altro");
 foreach ($MenuCat as $k=>$v)
 print ("- <a href='Categorie.php?Categoria=$v'>$v</a><br />");
 print (" <option>$v</option>");
 echo ('</select></td></tr>
 <tr><td><label>Titolo</label></td><td><input name="Tit" type="text" /></td></tr>
 <tr><td><label>Descrizione</label></td><td><textarea name="Des" cols="50" rows="3"></textarea></td></tr>

<tr><td>Foto</td><td><input type="file" name="image" size="40" /></td></tr>
<tr><td colspan="2" align="center"><input name="Vai" type="submit" /></td></tr>
 </table></form>');
 ?>

</BODY>
</HTML>

A questo punto creo il secondo file che chiamerò Insert.php con il seguente codice:

<HTML>
<BODY>
<?php
$Cat= $_REQUEST['categoria'];
 $ID=$_REQUEST['id'];
 $pas=$_REQUEST['pass'];
 $TIT=$_REQUEST['Tit'];
 $MINFOT=$_FILES['image']['name'];//$_REQUEST['MinFot'];
 $DES=$_REQUEST['Des'];
 $FOT=$_FILES['image']['name'];//$_REQUEST['Fot'];
 $LIN=$_REQUEST['Link'];

//miologin e mia password possono ovviamente essere sostituite
if ($ID=="miologin" and $pas =="miapassword") {
 $xml = simplexml_load_file("Categorie.xml");

//Categorie.xml sarà il nostro contenitore
$nuovaCategoria = $xml->addChild($Cat); //crea un elemento <categoria>
 $Tit = $nuovaCategoria->addChild('Tit', $TIT); //inserisce dentro categoria l'attributo<Tit>
 $MinFot = $nuovaCategoria->addChild('MInFot', $MINFOT); //come sopra, però con gli attributi cambiati
 $Des = $nuovaCategoria->addChild('Des', $DES); //come sopra
 $Fot = $nuovaCategoria->addChild('Fot', $FOT);
 $Link=$nuovaCategoria->addchild('Link',$LIN);
 $msg="";
 $f = fopen("Categorie.xml", "w");

//apro il file XML e scrivo
 fwrite($f, $xml->asXML());
 fclose($f); // chiudo il file xml
 echo "<table align='center' border='1' bgcolor=#ffffff><tr><td colspan='2'><strong>Aggiunta con successo nuova foto: </td></tr><tr><td>categoria: </td><td><strong>$Cat</td>><tr><td>Titolo: </td><td><strong>$TIT</td></tr><tr><td>Descrizione: </td><td><strong>$DES</td></tr><tr><td>Foto:</td><td><strong> $FOT</td></tr><tr><td>Miniatura: </td><td><strong>$MINFOT</td></tr><tr><td>Link: </td><td><strong>$LIN</td></tr><tr><td><a href='Inserisci.php' align='center'>Inserisci Altra foto</a></td></tr></table>";}
 elseif ($ID!="miologin") {
 echo ("<h2>non si passa: Hai Sbaglito l'id</h2><a href='Inserisci.php'>Riprova</a>");
 return;
 }
 elseif ($pas!="miapassword"){
 echo ("<h2>non si passa: Hai Sbagliato la passWord !</h2> <a href='Inserisci.php'>Riprova</a>");
 return;
 };

//adesso mi controllo il file
 do {
 if (is_uploaded_file($_FILES['image']['tmp_name'])) {
 // Controllo che il file non superi i KB da me desiderati
 if ($_FILES['image']['size'] > 120000) {
 $msg = "<p>Il file non deve superare i 120 KB!!</p>";
 break;
 }
 // Ottengo le informazioni sull'immagine
 list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
 // Controllo che le dimensioni (in pixel) non superino 800x800
 if (($width > 800) || ($height > 800)) {
 $msg = "<p>Dimensioni non corrette!!</p>";
 break;
 }
 // Controllo che il file sia in uno dei formati GIF, JPG o PNG
 if (($type!=1) && ($type!=2) && ($type!=3)) {
 $msg = "<p>Formato non corretto!!</p>";
 break;
 }
 // Verifico che sul sul server non esista già un file con lo stesso nome
 // In alternativa potrei dare io un nome che sia funzione della data e dell'ora
 if (file_exists('upload_img/'.$_FILES['image']['name'])) {
 $msg = "<p>File già esistente sul server. Rinominarlo e riprovare.</p>";
 break;
 }
 // Sposto il file nella cartella da me desiderata
 if (!move_uploaded_file($_FILES['image']['tmp_name'],$_FILES['image']['name'])) {
 $msg = "<p>Errore nel caricamento dell'immagine!!</p>";// 'Miniature/.'
 break;
 }
 }
 } while (false);
 echo $msg;
 //per eliminare:
 //unset($xml->$Cat[0]);
 unset($xml[0]);
 ?>

</BODY>
</HTML>

A questo punto, sempre con il mio editor preferito, creo un file xml vuoto.


<?xml version="1.0" encoding="utf-8"?>
 <parent></parent>


Adesso proviamo a lanciare il file inserisci.php sul nostro server compiliamo tutti i campi del form e facciamo clic su invia. Se tutto è andato a buon fine e non ci sono messaggi di errore possiamo provare ad aprire con l'editor il file Categorie.XML dove troveremo i dati che abbiamo caricato. Infine creiamo il file che ci permetterà di vedere il contenuto del file Categorie.XML compreso di miniature delle foto che abbiamo caricato. Creiamo il file Categorie.php:


<HTML>
<BODY>
<?php
$xml = simplexml_load_file("Categorie.xml");
 $Categoria=$_GET['Categoria'];
 echo "<table border=1 bgcolor=#ffffff align=center><tr bgcolor=#cccccc><th>Foto</th><th>Titolo</th><th>Descrizione</th></tr>";
 foreach($xml->$Categoria as $item)
 //echo $item->id." - ".$item->MInFot." - "." <a href = $item->Fot> Foto</a><br/>";
 echo "<tr><td><a href='$item->Fot' title=Clicca per ingrandire target=_blank> <img src='$item->MInFot' width='100' height='100' align='right'/> </a></td><td><strong> $item->Tit</strong></td><td>$item->Des</td></tr>";
 echo "</table>";
 ?>

</BODY>
</HTML>


Ho inserito tutti i file all'interno della stessa cartella sul server, pertanto tutte le foto saranno caricate insieme ai file in un'unica cartella. Basterà creare una cartella dove posizionare Categorie.XML e Insert.php e modificare i percorsi (path) all'interno del codice. Infine sconsiglio un uso così "libertino" di password e id, magari in futuro affronteremo l'argomento in maniera più appropriata.

giovedì 9 dicembre 2010

Dall'asfalto al cemento: storia di una provincia mai veramente ricca.

Circa duecento anni di storia caratterizzano fortemente un territorio, ne modificano le tradizioni, ne determinano i flussi di popolazione e le migrazioni, ne determinano la ricchezza e ne modificano fortemente le caratteristiche anche dal punto di vista paesaggistico. Questo è quello che è successo alla provincia più a sud d'Italia: Ragusa.
 Per un paio di secoli le attività estrattive legate alle miniere di asfalto hanno impresso nella cultura e nelle tradizioni di queste contrade solchi profondi, indelebili. In principio, se di principio si può parlare visto che l'asfalto esiste e viene estratto fin dalla preistoria in questi luoghi, furono alcune famiglie inglesi a beneficiare degli introiti legati alle miniere di asfalto. Poi fu la volta di aziende con una più o meno importante partecipazione statale, ne cito alcune: Calce e cementi di Segni ( alias Banco di Roma, alias stato italiano); A.B.C.D in due diverse edizioni ed epoche storiche diverse, nonché lavorazioni affini (la seconda volta fa capolino il cemento); poi è stata la volta dell' Eni, attirata dagli idrocarburi ; la Regione Siciliana, così tanto per ribadire il concetto di affiliazione e clientele varie; la Colacem di Gubbio, infine. L'asfalto quindi, anche se non viene più estratto, ha dato di che vivere alle popolazioni iblee per tutto questo tempo. Di che vivere, appunto.
Infatti ad una analisi attenta l'unico parametro che viene fuori è che dalle miniere di asfalto prima, agli altoforni del cemento ed alla polimerizzazione della plastica poi, nel corso di quasi duecento anni, gli abitanti di queste ridenti colline hanno legato il proprio sostentamento.  Ma, mentre per riuscire a valutare la ricchezza che il territorio ha offerto agli autoctoni bisognerebbe andare a scavare tra i meandri della piccola economia (mutui, prestiti, piccole costruzioni, vite fatte di sacrifici e stenti), per valutare ciò che è stato portato via da facoltose famiglie, ricche aziende, multinazionali, banche, stato, regione e apparati vari (leggi politica), basta immaginare fatturati annui milionari (miliardari per chi pensa ancora il lire) ed elevarli ad una potenza a piacere da uno a cento. Tutto questo senza che, di fatto, la collettività ragusana abbia avuto benefici non strettamente legati alle altrui esigenze (ex fondi In.Si.Cem do you remember?). Non c'è l'autostrada, non c'è l'aereoporto, non c'è nulla di cui una provincia dinamica e propositiva possa sentirsi degna e gratificata.
 Purtroppo non esistono soluzioni che garantiscano ad un territorio il re-investimento in loco della ricchezza che produce.
 Esiste, mi auguro, una necessaria presa di coscienza ed una imprescindibile consapevolezza di ciò che si è e di ciò che si ha in funzione del territorio a cui si appartiene.
Esiste, aimè,  la possibilità che la parola "crisi" dia la possibilità a chi ha già preso abbastanza di chiudere i battenti ed affidare ad altri (nella migliore delle ipotesi) il compito di sfruttare le colline di cui sopra come meglio crede.
 Esiste, mi chiedo, un orgoglio ibleo?
Esiste la possibilità che la opinione pubblica sia correttamente informata su ciò che avviene, è avvenuto e avverrà sulle alture alla periferia del capoluogo ibleo, prima che la storia si ripeta, e che ancora una volta il numero, sempre più esiguo, di dipendenti degli stabilimenti ed ex miniere subisca l' umiliazione dei cosiddetti "ammortizzatori sociali"  con lo stesso stoicismo con cui i loro padri affrontavano le fatiche e gli stenti sotto le viscere della terra?