Codice PHP:
<?php
// Scrivo il nome e il percorso.
$nome_pag = "Upload";
$percorso = "<a href=\"?upload\">Upload</a>";
// Trovo le categorie e le metto nel campo "categoria".
$query = mysql_query("SELECT id,nome,categoria_madre FROM ".$db->prefix."_downloads_categories ORDER BY id ASC");
$categorie = array();
$gerarchia_categorie = array();
while ($ris = mysql_fetch_array($query)) {
$categorie[$ris['id']] = $ris['nome'];
$gerarchia_categorie[$ris['id']] = $ris['categoria_madre'];
}
$cat_select = "";
foreach ($categorie as $id => $cat) {
if ($gerarchia_categorie[$id] == "0") {
$cat_select .= " <option value=\"".$id."\">".$cat."</option>\n";
foreach ($categorie as $id_son => $cat_son) {
if ($gerarchia_categorie[$id] == $id) {
$cat_select .= " <option value=\"".$id."\"> ---".$cat."</option>\n";
}
}
}
}
mysql_free_result($query);
unset($query,$ris,$categorie,$gerarchiacategorie,$id,$cat,$id_son,$cat_son);
// Scrivo il codice del form;
$valori_pred = array();
$valori_pred['nome'] = (isset($_POST['nome']) && trim($_POST['nome']) !== NULL)?$_POST['nome']:"Nome";
$valori_pred['descrizione'] = (isset($_POST['descrizione']) && trim($_POST['descrizione']) !== NULL)?$_POST['descrizione']:"Descrizione";
$valori_pred['autore'] = (isset($_POST['autore']) && trim($_POST['autore']) !== NULL)?$_POST['autore']:"Autore";
$valori_pred['email'] = (isset($_POST['email']) && trim($_POST['email']) !== NULL)?$_POST['email']:"E-mail";
$valori_pred['sito'] = (isset($_POST['sito']) && trim($_POST['sito']) !== NULL)?$_POST['sito']:"Sito";
$valori_pred['file'] = (isset($_POST['file']) && trim($_POST['file']) !== NULL)?$_POST['file']:"";
$form = " <div class=\"feature\">\n <h3>Upload file </h3>\n <p> <form name=\"carica_file\" action=\"\" method=\"POST\"><input type=\"hidden\" name=\"modulo_inviato\" value=\"yes\" />\n <table align=\"center\" border=\"0\" cellspacing=\"0\">\n <tr>\n <td align=\"right\">Nome: </td>\n <td align=\"left\"> <input name=\"nome\" type=\"text\" value=\"".$valori_pred['nome']."\" onFocus=\"if (this.value=='Nome') this.value='';\" onBlur=\"if (this.value=='') this.value='Nome';\" /></td>\n </tr>\n <tr>\n <td align=\"right\">Descrizione: </td>\n <td align=\"left\"> <textarea name=\"descrizione\" rows=\"7\" cols=\"35\" onFocus=\"if (this.value=='Descrizione') this.value='';\" onBlur=\"if (this.value=='') this.value='Descrizione';\">".$valori_pred['descrizione']."</textarea></td>\n </tr>\n <tr>\n <td align=\"right\">Autore: </td>\n <td align=\"left\"> <input name=\"autore\" type=\"text\" value=\"".$valori_pred['autore']."\" onFocus=\"if (this.value=='Autore') this.value='';\" onBlur=\"if (this.value=='') this.value='Autore';\" /></td>\n </tr>\n <tr>\n <td align=\"right\">E-mail: </td>\n <td align=\"left\"> <input name=\"email\" type=\"text\" value=\"".$valori_pred['email']."\" onFocus=\"if (this.value=='E-mail') this.value='';\" onBlur=\"if (this.value=='') this.value='E-mail';\" /></td>\n </tr>\n <tr>\n <td align=\"right\">Sito: </td>\n <td align=\"left\"> <input name=\"sito\" type=\"text\" value=\"".$valori_pred['sito']."\" onFocus=\"if (this.value=='Sito') this.value='';\" onBlur=\"if (this.value=='') this.value='Sito';\" /></td>\n </tr>\n <tr>\n <td align=\"right\">File: </td>\n <td align=\"left\"> <input type=\"file\" name=\"file_da_caricare\" /></td>\n </tr>\n <tr>\n <td align=\"right\">Categoria:</td>\n <td align=\"left\"><select name=\"categoria\">\n <option value=\"seleziona\" selected> - - - Seleziona - - - </option>\n".$cat_select." </select></td>\n </tr>\n <tr>\n <td align=\"right\"><input name=\"invia\" type=\"submit\" value=\"Invia\" onClick=\"upload();\" class=\"button\" /></td>\n <td align=\"left\"><input name=\"canc_tutto\" type=\"reset\" value=\"Reset\" class=\"button\" /> </td>\n </tr>\n </table>\n </form> </p>\n </div>\n";
// Controllo se il modulo contiene errori o se non è ancora stato inviato.
if ($_POST['modulo_inviato'] == 'yes') {
// E' già stato inviato, controllo tutti i campi.
$err_msg = "";
$controlla_mail = ereg("^[a-zA-Z0-9_\. +-]+@[a-zA-Z0-9_\.-]+\.[a-zA-Z]{2,6}$", $_POST['email']);
if (trim($_POST['nome']) == NULL || $_POST['nome'] == "Nome" || $_POST['nome'] == "") {
$err_msg .= "Il campo \"nome\" deve essere compilato!<br />";
}
if (trim($_POST['descrizione']) == NULL || $_POST['descrizione'] == "Descrizione" || $_POST['descrizione'] == "") {
$err_msg .= "Il campo \"descrizione\" deve essere compilato!<br />";
}
if (trim($_POST['autore']) == NULL || $_POST['autore'] == "Autore" || $_POST['autore'] == "") {
$err_msg .= "Il campo \"autore\" deve essere compilato!<br />";
}
if (trim($_POST['email']) == NULL || $controlla_mail == FALSE || $_POST['email'] == "E-mail" || $_POST['nome'] == "") {
$err_msg .= "Il campo \"e-mail\" deve essere compilato in modo corretto!<br />";
}
if (trim($_POST['sito']) == NULL || $_POST['sito'] == "Sito" || $_POST['sito'] == "") {
$err_msg .= "Il campo \"sito\" deve essere compilato!<br />";
}
if (trim($_POST['categoria']) == NULL || $_POST['categoria'] == "seleziona" || $_POST['categoria'] == "") {
$err_msg .= "Il campo \"categoria\" deve essere compilato!<br />";
}
if (trim($_POST['file_da_caricare']) == NULL || $_POST['file_da_caricare'] == "" || !isset($_FILES)) {
$err_msg .= "Il campo \"file\" deve essere compilato!<br />";
}
if ($err_msg !== "") {
// C'è un qualche errore, mostro l'errore e il form nuovamente.
$errore = " <div class=\"story\">\n <h3>Errore!</h3>\n <p> ".$err_msg." </p>\n </div>\n";
$output .= $errore.$form;
unset($errore, $err_msg);
} else {
$query = mysql_query("INSERT INTO ".$db->prefix."_downloads (nome, descrizione, file, autore, email, sito, data, downloads, voti_tot, somma_voti, categoria) VALUES (\"".$_POST['nome']."\", \"".$_POST['descrizione']."\", \"".$_POST['file_da_caricare']."\", \"".$_POST['autore']."\", \"".$_POST['email']."\", \"".$_POST['sito']."\", \"".time()."\", 0, 0, 0, \"".$_POST['categoria']."\")");
$id = mysql_insert_id();
$cartella = getcwd().DIRECTORY_SEPARATOR."downloads".DIRECTORY_SEPARATOR.$id;
$crea_cartella = mkdir($cartella);
$file = getcwd().DIRECTORY_SEPARATOR."downloads".DIRECTORY_SEPARATOR.$id.DIRECTORY_SEPARATOR.$_POST['file_da_caricare'];
$crea_file = move_uploaded_file($_FILES['file_da_caricare']['tmp_name'], $file);
if ($crea_file == false) {
die("Errore:<br /> ".$cartella." = ".$crea_cartella."<br />".$file." = ".$crea_file);
}
header("Location: index.php?downloads&cat=".$_POST['cat']);
}
} else {
// Non è ancora stato inviato nulla, mostro semplicemente il form.
$output .= $form;
}
unset($form,$err_msg,$errore,$id,$cartella,$crea_cartella,$file,$crea_file);
?>
Lo script crea correttamente la cartella con il