Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139

    [ PHP ] problemi di sintassi in un percorso di variabili

    Ciao ragazzi, sto impazzendo da tre ore per trovare la sintassi giusta per leggere un file con la funzione READFILE().

    Ho letto da PHP MANUAL questo script per aprire un file di un server direttamente da un client:
    codice:
    <?php
    $file = "http://localhost/file-to-download.xyz";
    header("Content-Description: File Transfer");
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=".basename($file));
    @readfile($file);
    ?>
    Ora: nel mio caso il percorso sarebbe generato dall'unione di 2 variabili, quindi devo trovare il modo di scrivere correttamente la prima riga.
    Ho provato nei seguenti modi:

    $file_da_aprire = "cartella/$var1/$var2";
    mi considera valido il path solo fino a "cartella"

    $file_da_aprire = "cartella/".$var1.$var2;
    aggiungendo chiaramente lo "/" in $var1, ma niente da fare.

    $file_da_aprire = "cartella/";
    $file_da_aprire .= $var1;
    $file_da_aprire .= $var2;

    Come sopra.

    Sono disperato, magari è una cavolata, ma non so come venirne fuori...
    I permessi (777) sono tutti settati correttamente perchè se scrivo:
    $file_da_aprire = "cartella/sottocartella/nomefile";
    senza ricorrere a delle variabili, il file si apre.

    Grazie in anticipo.

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    domanda banale: $var1 e $var2 sono settati??
    posta tutto lo script
    think simple think ringo

  3. #3
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da marketto
    domanda banale: $var1 e $var2 sono settati??
    posta tutto lo script
    Questo è il file con il link:
    codice:
    .....
    .....
    //imposto la variabile che mi identifica la cartella contenuta dentro a "downl_file"
    $nome_cartella ="pubblicazioni/";
    
    echo "
    
    $num</p> </td>
    <td width =\"43%\" style=\"background-color: #F7FAFA;\">
    
    $file</p></td>
    <td width =\"12%\" style=\"background-color: #F7FAFA;\">
    
    $data_conv</p></td>
    <td width =\"20%\" style=\"background-color: #F7FAFA;\">
    
    ( $dimensioni Kb)</p></td>
    <td width =\"20%\" align=\"center\" style=\"background-color: #F7FAFA;\"> 
    
    
    <a href=\"downloadit.php?file=$file&nome_cartella=$nome_cartella\">
    apri o salva...
    </a></p>";
    ........
    ........
    Questo è "downloadit.php"
    codice:
    <?php
    $file_da_aprire = "downl_file/".$nome_cartella.$file;
    header("Content-Description: File Transfer");
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=".basename($file_da_aprire));
    @readfile($file_da_aprire);
    ?>
    La variabile $file è settata anche se non te l'ho mostrata. Appare nella tabella correttamente, quindi esiste.

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    prova cosi:

    codice:
    $file_da_aprire = "downl_file/".$_GET['nome_cartella'].$_GET['file'];
    think simple think ringo

  5. #5
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Ora faccio io una domanda banale:
    L'esempio che ho trovato su PHP MANUAL mi permette di scegliere l'applicazione che mi pare per aprire qualsiasi file (comodo quindi per i file musicali ad esempio), ma diciamo che io non avrei l'esigenza forzata di sfruttare questo script.
    Ho notato che se nel percorso del link scrivo direttamente la destinazione del file che m'interessa (senza quindi sfruttare gli header contenuti in "downloadit.php"), mi da comunque la possibilità di scelta tra aprirlo (in questo caso con l'applicazione predefinita)o salvarlo.

    Mi chiedo, però, perchè mi funziona solo con EXPLORER e OPERA, mentre con NETSCAPE e MOZILLA mi apre una pagina bianca?

    Per intenderci, l'alternativa semplice che ho appena descritto sarebbe questa:

    codice:
    
    <a href=\"downl_file/pubblicazioni/$file\" target=\"_blank\">
    apri o salva...

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da gordian
    Mi chiedo, però, perchè mi funziona solo con EXPLORER e OPERA, mentre con NETSCAPE e MOZILLA mi apre una pagina bianca?
    alcuni browser necessito di header "particolari", prova a fare un ricerca sul forum, troverai diversi esempi di header per download crossbrowser
    think simple think ringo

  7. #7
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da marketto
    prova cosi:

    codice:
    $file_da_aprire = "downl_file/".$_GET['nome_cartella'].$_GET['file'];
    GRANDE!!!!
    Funziona! Non mi fa scegliere l'applicazione, ma va benissimo lostesso.
    Tra l'altro me li apre correttamente pure su MOZILLA.

    Credevo che la sintassi $_GET[..] e $_POST[..] si dovessero usare solo per delle variabili passate da form e solo con PHP5.

    Che casino con sta cavolo di sintassi
    Ci credi che nel frattempo avevo fatto una prova su un'altro server e la sintassi che avevo scritto io funzionava.

    Grazie davvero.

  8. #8
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    $_GET, $_POST, etc ci sono con php >= 4.1.0

    il fatto che su un'altro server il codice senza $_GET funzioni dipende dall'impostazione del register global.
    think simple think ringo

  9. #9
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da marketto
    $_GET, $_POST, etc ci sono con php >= 4.1.0

    il fatto che su un'altro server il codice senza $_GET funzioni dipende dall'impostazione del register global.
    Cosa si deve fare per permettere di accettare anche le variabili senza il $_GET, $_POST?

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    è una cosa sconsigliata per motivi di sicurezza, cmq devi abilitare il register global nel php.ini, oppure tramite un file .htaccess
    think simple think ringo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.