Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Originariamente inviato da leandro-2003
    Ho provato proprio ora a connettermi a PostgreSQL con PHP seguendo la guida di HTML.it e non funziona. La funzione pg_connect non esiste
    Hai abilitato l'estensione per postgres? guarda qui


    Se vuoi usare un id, mi pare scontato che ti serve un db*. Altrimenti lascia tutto com'è ed usa il nome del file.


    * A meno che non ti vuoi creare un sistema tuo, tramite file, per associare id->file

  2. #12
    Originariamente inviato da boots
    Hai abilitato l'estensione per postgres? guarda qui


    Se vuoi usare un id, mi pare scontato che ti serve un db*. Altrimenti lascia tutto com'è ed usa il nome del file.


    * A meno che non ti vuoi creare un sistema tuo, tramite file, per associare id->file
    Grazie!
    L'estensione postgres non l'avevo abilitata, adesso vedo di attivarla.
    Io vorrei fare un sistema id->file, come ho già spiegato prima, perchè non avrei chiesto se avrei voluto usare il sistema che ho trovato su Internet.

    P.S. Ho risolto il problema di PgSQL

  3. #13

  4. #14
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    In generale dovresti fare così (usando un db):

    UPLOAD del file

    Quando carichi il file, devi aggiungere un entry nel db. Quindi ti serve una tabella che memorizzi il nome/path del file. Ad esempio
    Tab documenti
    ID - PATH - ... (qualsiasi altro campo ti può servire, es tipo, (non)scaricabile, proprietario, etc)

    DOWNLOAD del file

    Ora nel tuo script non gli passi più il nome ma l'id. Quindi dato che il path del file lo costruisci a monte, non serve più fare tutti quei controlli:
    Codice PHP:
    <?php 
         
        $download_path 
    $_SERVER['DOCUMENT_ROOT']."/download" 
         
        
    $id = (int)$_GET['id']; 
         
        
    // Non ho mai usato postgres con php, quindi te lo scrivo per mysql 
        
    $query mysql_query ("SELECT * FROM documenti WHERE id = $id");
        
        
    $f mysql_fetch_assoc($query);

         if(!
    $f){
                die(
    "L'id non fa riferimento ad un file valido");
         }
         
        
    // Combine the download path and the filename to create the full path to the file. 
        
    $file "$download_path/".$f['path']; 
         
        
    // Test to ensure that the file exists. 
        
    if(!file_exists($file)){ die("Il file non esiste.") ; } 
         
        
    // Extract the type of file which will be sent to the browser as a header 
        
    $type filetype($file); 
         
        
    // Get a date and timestamp 
        
    $today date("F j, Y, g:i a"); 
        
    $time time(); 

        
    // Send file headers 
        
    header("Content-type: $type"); 
        
    header("Content-Disposition: attachment;filename=$filename"); 
        
    header('Pragma: no-cache'); 
        
    header('Expires: 0'); 

        
    // Send the file contents. 
        
    readfile($file); 
         

    ?>
    in questo caso devi stare attento solo quando vai a fare l'upload del file, in modo da salvare un path che si combina correttamente con lo script di download

  5. #15
    Non riesco a connettermi al database nemmeno usando le query stile PgSQL, non si può proprio creare un sistema ID senza DB?

  6. #16
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88
    Guarda, è una soluzione molto complicata(oddio, non difficile, ma lunga e che stufa abbastanza).
    Invece di usare un database, potresti mettere i dati dei file in un file .json(consiglio questo formato perchè è molto più versatile), usando la sintassi appropriata. E fai una cosa del genere:
    codice:
    {
    	"files": [
    		{
    			"ID": 0,
    			"filename": "immagine",
    			"estensione": ".jpg",
    			[...]
    		},
    		{
    			"ID": 1,
    			"filename": "archivio",
    			"estensione": ".rar",
    			[...]
    		}
    		[...]
    	]
    }
    O anche un file XML, ugualmente versatile:
    codice:
    <files>
    	<file ID="0" filename="immagine" estensione=".jpg" [...] />
    	<file ID="1" filename="archivio" estensione=".rar" [...] />
    	[...]
    </files>
    Al posto dei puntini, vuol dire che può andare avanti quello che ho scritto, dipende da te.

    Ti consiglio comunque VIVAMENTE di continuare a provare ad eseguire le queries.

  7. #17
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    La soluzione via file (json o xml), per quanto valida, potrebbe portati ad ulteriori problemi
    Se sei sicuro che chi va a modificare il file è sempre una sola persona, allora puoi pure usarlo.
    Ma se ci sono molti utenti che possono aggiungere/togliere file (da quel file), allora devi prevedere un sistema per gestire la concorrenza (ad esempio i mutex) ... ma a questo punto ti conviene usare in db

  8. #18
    In realtà i file li modifico/creo solo io quindi non credo ci siano problemi
    Una volta creati questi file (è meglio json o XML?) come li includo nel file? Come eseguo i vari comandi per il download?

  9. #19
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88
    Come ti ho detto, consiglio il JSON come formato(quando trattato in PHP ha una struttura molto simile a quella delle classi).
    Il JSON non lo includi nel file, bensì lo usi come database sostitutivo usando come esempio quelli che ti ho mostrato nel mio post precedente.
    Per leggere un file:
    PHP file_get_contents()
    PHP fopen()
    PHP fread()

    Invece per i JSON:

    PHP json_decode()
    PHP json_encode()

    Ti spiego come potresti procedere:
    crea il file "pseudo-database"(non scriverci dentro niente ancora)
    quando un file viene caricato crei un array nel quale metti tutte le informazioni del file caricato(filename, locazione(perchè immagino che tu i file li metterai da qualche parte di accessibile solo lato server ed il vero filename criptato, vero?), ID sopratutto(per il primo file magari metti un if-else per evitare che ti generi un'eccezione per gli ID mancanti), estensione, dimensione, etc...)e questi dati poi li scrivi/aggiungi nello "pseudo-database"
    Quando hai bisogno di scaricare il file fai il processo contrario
    sempre dallo stesso file "pseudo-database" leggi i dati dall'ID che ti servono usando json_decode()
    Cerca di metterci più sicurezza possibile(metti controlli captcha, usa file criptati), perchè un metodo del genere può rivelarsi anche pericoloso. Immaginati se per errore cancelli il file.

    Comunque, altro piccolo consiglio: per evitare che ad un certo punto, caricati un numero elevato di files, lo "pseudo-database" diventi troppo pesante da caricare, cerca di metterci un metodo che "splitti" il database, aggiungendone uno ogni volta che l'ID ha superato un certo numero di record.

    Spero di esserti stato d'aiuto

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 © 2026 vBulletin Solutions, Inc. All rights reserved.