Visualizzazione risultati 1 fino 1 di 1

Discussione: [risolto] Problema $_FILES e move_uploaded_file() in locale

  1. #1
    Guest

    Predefinito [risolto] Problema $_FILES e move_uploaded_file() in locale

    Ho un problema relativo ad un sito che sto provando a costruirmi e che attualmente sto testando in locale. Ho provato a cercare nel forum, ma sono poche le discussioni che fanno un riferimento esplicito al PHP 5, perciò ho pensato di avviarne una io!
    Il problema consiste nel fatto che non sempre mi riconosce la variabile $_FILES e neppure $HTTP_POST_FILES (il bello è che lo fa con gli stessi medesimi valori inseriti nel form!). Posto l'intero codice per ogni evenienza:
    Codice PHP:
    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 mkdir(), ma quando provo ad utilizzare il move_uploaded_file() (in un momento di follia - o disperazione, come preferite - avevo anche provato a usare il copy()!) restituisce un errore e mi blocca tutto... Per chi ne capisce più di me: io ho installati sia PHP 4 che PHP 5, ma con nessuno dei due funge.

    Grazie a chi si cimenterà nella risposta!

    PS: Questo file deve essere incluso, non vi preoccupate di variabili che non vengono usate o che non sapete da dove sbucano!




    EDIT: Ma sarò deficiente... Ma deficiente forte! Il problema stava nel fatto che mancava il enctype="multipart/form-data" come parametro di <form>!!
    Ultima modifica di tryphpnuke : 18-03-2007 alle ore 19.37.15 Motivo: Risolto!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •