
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>
<?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.





