Visualizzazione risultati 1 fino 7 di 7

Discussione: problema script upload

  1. #1
    Guest

    Exclamation problema script upload

    ciao a tutti,
    ho uno script che permette l'upload e il download dei file sul mio sito, premetto che successivamente lo metterò in una pagina con password per evitare problemi.

    lo script è formato da due file e una cartella disposti in questo modo:
    >upload
    >>>uploaded(contiene i file uppati)
    >>>upload.php ( è la pagina alla quale bisogna accedere per uppare i file)
    >>>uploader.php (è la pagina delle configurazioni)

    questi sono i codici delle pagine:
    upload.php
    Codice PHP:
    Codice PHP:
    <?
    include("uploader.php"); // Don't put anything above this line or you'll get errors
    ?>
    <p><strong><span style="background: #fff; color: #000"><? if($_REQUEST["message"] == "") echo "seleziona un file da caricare con il tasto sfoglia."; else echo $_REQUEST["message"]?></span></strong></p>
    <form action="upload.php" enctype="multipart/form-data" id="upload" method="post">
    <p><input id="userfile" name="userfile" size="45" type="file" /><input name="upload" type="submit" value="Upload File" /><br /></p>

    <p>estensioni file accettate: <strong><?=$file_extensions_list?></strong> se hai la necessità di caricare file con altre estensioni invia un email a webmaster@angeliperungiorno.it indicando l'estensione del file che vuoi caricare</p>

    <p>dimensione massima file: <strong> (<?=round($maximum_file_size/1048576)?>MB)</strong></p>




    </form>

    <p><strong>file caricati</strong></p>
    <table style="border: 2px dotted #000; width: 100%">
    <? if($uploaded_files == "") echo " <tr>
    <td colspan=\"2\" style=\"background: #fff; color: #000; text-align: center\"><br /><strong>non hai ancora caricato nessun file.</strong><br /><br /></td>
    </tr>
    "
    ; else echo $uploaded_files ?>
    </table>
    uploader.php:
    Codice PHP:
    Codice PHP:
    <?
    /*
    Silentum Uploader v1.3.0
    Modified November 23, 2007
    uploader.php copyright 2005-2007 "HyperSilence"
    */

    // Begin options

    $allow_file_deletion = true; // To allow visitors to delete files, leave this at true; otherwise, change it to false

    $file_extensions = array(".doc", ".gif", ".htm", ".html", ".jpg", ".png", ".txt"); // Add or delete the file extensions you want to allow

    $file_extensions_list = ".doc, .gif, .htm, .html, .jpg, .png, .txt"; // Type the same as above, without the quotes separating them

    $max_length = 30; // The maximum character length for a file name

    $maximum_file_size = "26214400"; // In bytes

    $upload_log_file = "upload_log.txt"; // Change this to the log file you want to use

    // End options

    $folder_directory = "http://angelibrescia.altervista.org/upload/";
    $message = "";
    $set_chmod = 0;
    $site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
    $upload_directory = "uploaded/";
    $upload_uri = "http://angelibrescia.altervista.org/uploaded";

    if(
    $allow_file_deletion == true) $status = "enabled";
    else
    $status = "disabled";

    if(
    $_REQUEST["delete"] && $allow_file_deletion) {
    $resource = fopen($upload_log_file,"a");
    fwrite($resource,date("F d, Y / h:i:sa")." - ".$_REQUEST["delete"]." deleted by ".$_SERVER["REMOTE_ADDR"]."\n");
    fclose($resource);

    if(
    strpos($_REQUEST["delete"],"/.") > 0);
    elseif(
    strpos($_REQUEST["delete"],$upload_directory) === false);
    elseif(
    substr($_REQUEST["delete"],0,6) == $upload_directory) {
    unlink($_REQUEST["delete"]);
    $message = "File has been deleted.";
    header("Location: $site_uri?message=$message");
    }
    }

    elseif(
    $_FILES["userfile"]) {
    $resource = fopen($upload_log_file,"a");
    fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"]["name"]." "
    .$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
    fclose($resource);

    $file_type = $_FILES["userfile"]["type"];
    $file_name = $_FILES["userfile"]["name"];
    $file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
    @
    chmod($upload_uri."".$file_name, 0755);
    if(
    $_FILES["userfile"]["size"] > $maximum_file_size) {
    $message = "ERROR: il file che stai cercando si caricare supera il limite di ".$maximum_file_size." bytes. carica un file più piccolo";
    }

    elseif(
    $file_name == "") $message = "ERROR: devi selezionare un file da caricare.";
    elseif(
    strlen($file_name > $max_length)) $message = "ERROR: il nome del file è troppo lungo il massimo è ".$max_length." caratteri. cambia il nome e prova a ricaricarlo";
    elseif(!
    preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: il nome del tuo file contiene caratteri non ammessi.";
    elseif(!
    in_array($file_ext, $file_extensions)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è permessa. manda un email a [email]webmaster@angeliperungiorno.it[/email] indicando l'estensione del file (<ins>$file_ext</ins>)";
    else
    $message = upload_file($upload_directory, $upload_uri);
    header("Location: $site_uri?message=$message");
    }

    elseif(!
    $_FILES["userfile"]);
    else
    $message = "ERROR: file non valido.";

    $open = opendir($upload_directory);
    $uploaded_files = "";
    while(
    $file = readdir($open)) {
    if(!
    is_dir($file) && !is_link($file)) {
    $uploaded_files .= " <tr>
    <td style=\"background: #fff; color: #000; text-align: left; width: 70%\"><a href=\"
    $upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a> (".filesize($upload_directory.$file)." bytes)</td>";
    if(
    $allow_file_deletion)
    $uploaded_files .= "
    <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><a href=\"?delete=
    $upload_directory".urlencode($file)."\" title=\"Delete File\">Delete File</a></td>";
    else
    $uploaded_files .= "
    <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><del><strong>Delete File</strong></del></td>"
    ;
    $uploaded_files .= "
    </tr>
    <tr>
    <td colspan=\"2\" style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <strong>"
    .date("F d, Y / h:ia", filemtime($upload_directory.$file))."</strong></td>";
    $uploaded_files .="
    </tr>
    "
    ;
    }
    }

    function
    upload_file($upload_directory, $upload_uri) {
    $file_name = $_FILES["userfile"]["name"];
    $file_name = str_replace(" ","_",$file_name);
    $file_path = $upload_directory.$file_name;
    $temporary = $_FILES["userfile"]["tmp_name"];

    $result = move_uploaded_file($temporary, $file_path);
    if(!
    chmod($file_path,0777))
    $message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777. si prega di inviare un email a [email]webmaster@angeliperungiorno.it[/email]";
    else
    $message = ($result)?"file caricato con successo." : "An error has occurred.";
    return
    $message;
    }
    ?>
    spiegati tutti i componenti veniamo ai problemi:
    1) come potete vedere nel file uploader e precisamente in questa stringa
    Codice PHP:
    Codice PHP:
    $file_extensions = array(".doc", ".gif", ".htm", ".html", ".jpg", ".png", ".txt"); // Add or delete the file extensions you want to allow

    $file_extensions_list = ".doc, .gif, .htm, .html, .jpg, .png, .txt"; //
    vi è un elenco di estensioni consentite, io vorrei però fare in modo che siano accettate tutte le estensioni eccetto quelle che io inserirò, esempio php o altri che permetterebbero azioni pericolose per il sito, come devo fare?

    2) come potete vedere in fondo alla pagina upload http://angelibrescia.altervista.org/upload/upload.php vi è un elenco di tutti i file uppati con il tasto per cancellarli, però se anche premo il pulsante non vengono cancellati, come devo fare per risolvere il problema? (P.S. provate pure a cancellare i file, quelli che ho uppato sono solo di prova e contengono solo parole a caso)

    3) se si preme sul nome di un file questo viene aperto o scaricato a seconda dell'estensione, se si preme su un file con estensione .txt questo viene aperto nel browser se invece si preme su un file .zip questo viene scaricato, io volevo fare che il file venisse scaricato indistintamente dal tipo di estensione, si può fare?
    Ultima modifica di angelibrescia : 18-04-2011 alle ore 17.59.26 Motivo: ulteriori dubbi

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    Citazione Originalmente inviato da angelibrescia Visualizza messaggio
    vi è un elenco di estensioni consentite, io vorrei però fare in modo che siano accettate tutte le estensioni eccetto quelle che io inserirò, esempio php o altri che permetterebbero azioni pericolose per il sito, come devo fare?
    rispondo al tuo primo quesito...

    devi creare un altro array con le estensioni non valide, es.:
    Codice PHP:
    $file_extensions_non_ammesse = array(".php", ".asp", ".cgi");
    nel file uploader.php hai questa linea:
    Codice PHP:
    //elseif(!in_array($file_ext, $file_extensions)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è permessa. manda un email a [email]webmaster@angeliperungiorno.it[/email] indicando l'estensione del file (<ins>$file_ext</ins>)";

    //semplicemente la escudi come commento con // e metti questa linea:

    elseif(in_array($file_ext, $file_extensions_non_ammesse)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è permessa. manda un email a [email]webmaster@angeliperungiorno.it[/email] indicando l'estensione del file (<ins>$file_ext</ins>)";
    per il secondo quesito:
    Codice PHP:
    if(strpos($_REQUEST["delete"],"/.") > 0);
    elseif(
    strpos($_REQUEST["delete"],$upload_directory) === false);
    //commenta questa linea:
    //elseif(substr($_REQUEST["delete"],0,6) == $upload_directory) {
    //e sostituiscila semplicemente con:
    else {

    unlink($_REQUEST["delete"]);
    $message = "File has been deleted.";
    header("Location: $site_uri?message=$message");
    }
    per il terzo quesito:
    ricerca google -> parola chiave = "php download file"
    http://www.google.it/search?aq=f&sou...+download+file
    Ultima modifica di EuroSalute : 20-04-2011 alle ore 20.03.08 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Grazie EuroSalute ho risolto il primo quesito, il secondo peró non funziona, ho seguito tutte le tue istruzioni ma Mi da degli errori, non potresti riscrivermi il codice di tutta la pagina?. Per il terzo punto io so come forzare il download ma non so come integrarlo in questo script!
    Grazie 1000000 anticipatamente

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per il terzo quesito se sai come forzare il download, allora basta che sostituisci nella variabile $uploaded_files alla linea di codice dove linka il collegamento

    <a href=\"$upload_directory$file\" tit....ecc

    con il file per il download (es: download.php) a cui aggiungi via query string il percorso del file e il file (es: download.php?percorsoFile=$upload_directory$file)

    quindi nel file download.php prelevi il valore della variabile $percorsoFile con $_GET e gestisci il download.....

    per il secondo quesito ....quali sono gli errori ?
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    Guest

    Predefinito

    Lo puoi vedere tu. http://angelibrescia.altervista.org/upload/upload.php.
    Non potresti riscrivermi il file uploader.php integrando i comandi per cancellare e quello per forzare il download? Ti chiedo scusa
    M non sono molto pratico.
    Grazie 1000

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    ho ommesso la parte di codice delle estensioni non ammesse....

    ho inserito dei commenti nel codice:
    il file che gestisce il download è download.php, ma puoi rinominarlo a piacere....
    la variabile che passa il percorso del file da scaricare è "file" (senza le virgolette), ma puoi rinominarla a piacere...

    dimmi se funge....:

    Codice PHP:
    <?
    /*
    Silentum Uploader v1.3.0
    Modified November 23, 2007
    uploader.php copyright 2005-2007 "HyperSilence"
    */

    // Begin options

    $allow_file_deletion = true; // To allow visitors to delete files, leave this at true; otherwise, change it to false

    $file_extensions = array(".doc", ".gif", ".htm", ".html", ".jpg", ".png", ".txt"); // Add or delete the file extensions you want to allow

    $file_extensions_list = ".doc, .gif, .htm, .html, .jpg, .png, .txt"; // Type the same as above, without the quotes separating them

    $max_length = 30; // The maximum character length for a file name

    $maximum_file_size = "26214400"; // In bytes

    $upload_log_file = "upload_log.txt"; // Change this to the log file you want to use

    // End options

    $folder_directory = "http://angelibrescia.altervista.org/upload/";
    $message = "";
    $set_chmod = 0;
    $site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
    $upload_directory = "uploaded/";
    $upload_uri = "http://angelibrescia.altervista.org/uploaded";

    if(
    $allow_file_deletion == true) $status = "enabled";
    else
    $status = "disabled";

    if(
    $_REQUEST["delete"] && $allow_file_deletion) {
    $resource = fopen($upload_log_file,"a");
    fwrite($resource,date("F d, Y / h:i:sa")." - ".$_REQUEST["delete"]." deleted by ".$_SERVER["REMOTE_ADDR"]."\n");
    fclose($resource);

    if(
    strpos($_REQUEST["delete"],"/.") > 0);
    elseif(
    strpos($_REQUEST["delete"],$upload_directory) === false);
    //linea esclusa:
    //elseif(substr($_REQUEST["delete"],0,6) == $upload_directory) {
    else {
    unlink($_REQUEST["delete"]);
    $message = "File has been deleted.";
    header("Location: $site_uri?message=$message");
    }
    }

    elseif(
    $_FILES["userfile"]) {
    $resource = fopen($upload_log_file,"a");
    fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"]["name"]." "
    .$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
    fclose($resource);

    $file_type = $_FILES["userfile"]["type"];
    $file_name = $_FILES["userfile"]["name"];
    $file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
    @
    chmod($upload_uri."".$file_name, 0755);
    if(
    $_FILES["userfile"]["size"] > $maximum_file_size) {
    $message = "ERROR: il file che stai cercando si caricare supera il limite di ".$maximum_file_size." bytes. carica un file più piccolo";
    }

    elseif(
    $file_name == "") $message = "ERROR: devi selezionare un file da caricare.";
    elseif(
    strlen($file_name > $max_length)) $message = "ERROR: il nome del file è troppo lungo il massimo è ".$max_length." caratteri. cambia il nome e prova a ricaricarlo";
    elseif(!
    preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: il nome del tuo file contiene caratteri non ammessi.";
    elseif(!
    in_array($file_ext, $file_extensions)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è permessa. manda un email a [email]webmaster@angeliperungiorno.it[/email] indicando l'estensione del file (<ins>$file_ext</ins>)";
    else
    $message = upload_file($upload_directory, $upload_uri);
    header("Location: $site_uri?message=$message");
    }

    elseif(!
    $_FILES["userfile"]);
    else
    $message = "ERROR: file non valido.";

    $open = opendir($upload_directory);
    $uploaded_files = "";
    while(
    $file = readdir($open)) {
    if(!
    is_dir($file) && !is_link($file)) {
    $uploaded_files .= " <tr>
    <td style=\"background: #fff; color: #000; text-align: left; width: 70%\">
    <!--linea originale:
    <a href=\"
    $upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a>
    -->
    <!-- file è la variabile del percorso del file da scaricare
    download.php è il file .php che gestisce il download
    -->
    <a href=\"download.php?file=
    $upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a>
    ("
    .filesize($upload_directory.$file)." bytes)</td>";
    if(
    $allow_file_deletion)
    $uploaded_files .= "
    <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><a href=\"?delete=
    $upload_directory".urlencode($file)."\" title=\"Delete File\">Delete File</a></td>";
    else
    $uploaded_files .= "
    <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><del><strong>Delete File</strong></del></td>"
    ;
    $uploaded_files .= "
    </tr>
    <tr>
    <td colspan=\"2\" style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <strong>"
    .date("F d, Y / h:ia", filemtime($upload_directory.$file))."</strong></td>";
    $uploaded_files .="
    </tr>
    "
    ;
    }
    }

    function
    upload_file($upload_directory, $upload_uri) {
    $file_name = $_FILES["userfile"]["name"];
    $file_name = str_replace(" ","_",$file_name);
    $file_path = $upload_directory.$file_name;
    $temporary = $_FILES["userfile"]["tmp_name"];

    $result = move_uploaded_file($temporary, $file_path);
    if(!
    chmod($file_path,0777))
    $message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777. si prega di inviare un email a [email]webmaster@angeliperungiorno.it[/email]";
    else
    $message = ($result)?"file caricato con successo." : "An error has occurred.";
    return
    $message;
    }
    ?>
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  7. #7
    Guest

    Predefinito

    grazie mille ora funzioan tutto!!! sei stato fantastico!!!

Tags for this Thread

Regole di scrittura

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