Visualizzazione risultati 1 fino 4 di 4

Discussione: [PHP] Contenuto del file errato dopo la forzatura del download

  1. #1
    Guest

    Predefinito [PHP] Contenuto del file errato dopo la forzatura del download

    Ciao a tutti, sto creando uno script ed in pratica quando il file viene salvato dopo io voglio che il download di questo (in formato txt) venga forzato.
    Il download parte (quindi l'operazione riesce) ma il contenuto però non è più quello ricavato dalla variabile $testo, ossia dall'area di testo... perché?
    Il contenuto del file diventa il sorgente della pagina stessa da cui viene forzato il download... da cosa è dovuto tutto ciò? =)
    Ecco il codice:
    Codice PHP:
    if($_POST["testo"]) {

    $testo = trim($_POST["testo"]);
    $time = time();
    if(empty(
    $testo) || $testo == "Documento vuoto...") { header("Location: index.php"); exit(); }

    $nome = "EasyWrite-{$time}.txt";
    $fo = fopen("Files/{$nome}","wt");
    $fw = fwrite($fo,$testo);
    $fc = fclose($fo);

    if(
    $fo && $fw && $fc) {
    header("Content-type: application/octet-stream");
    header("Content-Length: " . filesize("Files/{$nome}"));
    header("Content-Disposition: attachment; filename=\"{$nome}\"");
    readfile("Files/{$nome}");
    #header("Location: Files/{$nome}");
    }
    }
    Grazie mille... ciao Davide!! ^^"

    Edit: Il contenuto viene inserito però è in questa forma:
    Codice:
    --- CODICE HTML ---
    -- ALTRO CODICE HTML ---
    [[[[testo ricavato da $testo al posto del codice php di sopra]]]]
    --- ALTRO CODICE HTML ---
    --- ALTRO CODICE SEMPRE HTML ---
    Ultima modifica di sIM : 30-04-2010 alle ore 17.12.19

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Non ho capito molto bene, l'unica cosa che mi è chiara è che Il contenuto del file diventa il sorgente della pagina stessa da cui viene forzato il download.
    Il codice che hai postato sopra è inserito all'interno di una pagina che contiene HTML?
    Se è così, dovresti interrompere l'esecuzione altrimenti è normale che succede:

    Codice PHP:
    if($_POST["testo"]) {

    $testo = trim($_POST["testo"]);
    $time = time();
    if(empty(
    $testo) || $testo == "Documento vuoto...") { header("Location: index.php"); exit(); }

    $nome = "EasyWrite-{$time}.txt";
    $fo = fopen("Files/{$nome}","wt");
    $fw = fwrite($fo,$testo);
    $fc = fclose($fo);

    if(
    $fo && $fw && $fc) {
    header("Content-type: application/octet-stream");
    header("Content-Length: " . filesize("Files/{$nome}"));
    header("Content-Disposition: attachment; filename=\"{$nome}\"");
    readfile("Files/{$nome}");
    exit();
    #header("Location: Files/{$nome}");
    }
    }

  3. #3
    Guest

    Predefinito

    Hai capito benissimo cos'è successo... ma il problema è risolto in parte...
    Poiché di sopra vi è altro codice html quindi il problema non si risolve! =(
    Edit: Si risolve mettendo il codice PHP all'inizio del file... ma qualora questo non fosse possibile come dovrei fare? ... Grazie mille. ^^"
    Ultima modifica di sIM : 30-04-2010 alle ore 20.40.15

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma è necessario mettere il codice prima di qualsiasi output, perchè gli headers vengono inviati e non è possibile impostarli dopo!

Regole di scrittura

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