Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36

    Aiuto per far aprire il dialogo "Salva con nome"...

    Buongiorno a tutti! Vi disturbo per avere aiuto riguardo ad un mio script php.

    Vorrei un link ad un'immagine png che fa aprire la finestra "Salva con nome" invece che far aprire l'immagine nel browser.

    Ho creato un file download.php

    che chiamo con:

    download.php?pid=2065 (per esempio)

    Ecco il codice di download:

    codice:
    $pid=$_GET['pid'];
    $sql = "SELECT filepath, filename, url_prefix, pwidth, pheight FROM {$CONFIG['TABLE_PICTURES']} AS p " . "WHERE pid='$pid' $FORBIDDEN_SET";
    $result = cpg_db_query($sql);
    $row = mysql_fetch_assoc($result);
    $pic_url = get_pic_url($row, 'fullsize');
    header('Content-type: application/png');
    header('Content-Disposition: attachment; filename="downloaded.png"');
    /*header("Content-Description: File Transfer");
    header("Content-Disposition: attachment"; filename=\"test\"");
    header("Content-type: application/octet-stream");*/
    readfile($pic_url);
    La parte della query deve essere giusta, perché mi si apre il file giusto... ma mi si apre sotto forma di simbolini visualizzati come se fosse un file di testo nel browser, invece che aprirsi la finestra che me lo fa salvare come allegato...

    Cosa ho sbagliato nell'header?

    Grazie mille in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36
    Chiedo scusa per la mia ignoranza, mi rendo conto che la mia domanda non è delle più interessanti, ma sono un principiante completo e mi manca solo questo script per completare il mio sito.

    Apprezzerei veramente se qualcuno mi desse una mano

    Grazie in anticipo!

    Davide

  3. #3
    Ti faccio alcune domande:
    1) questi file sono tutti .png?
    2) la funzione get_pic_url l'hai inclusa? Se sì cosa fà?
    3) sei sicuro che i parametri che passi a tale funzione diano corretti? (ad intuito credo di no)
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36
    Grazie mille della risposta!

    Allora:
    1) no, png e jpeg. Per il momento sto facendo un test con un png per vedere se funziona, già farlo andare su un file sarebbe un passo avanti. Se hai già un consiglio per farlo andare in generale parametrizzando l'estensione, tanto meglio!
    2) get_pic_url è una funzione di Coppermine Gallery (uno script PHP che permette di ospitare una galleria di immagini a cui diversi utenti possono contribuire), che preleva l'URL dell'immagine sul server. Sì, l'ho inclusa, ho tolto le dichiarazioni perché non mi sembravano rilevanti, ma mi sbagliavo. Eccole qui:
    codice:
    	<?php
    	define('IN_COPPERMINE', true);
    	define('DISPLAYIMAGE_PHP', true);
    	define('SMILIES_PHP', true);
    	define('INDEX_PHP', true);
    	require('include/init.inc.php');
    3) Abbastanza sicuro. Altre funzioni dentro coppermine la usano così. E' codice copiato e incollato. Il paramentro fullsize è per dirgli di non prendere l'url del thumbnail o delle cosiddette "immagini intermedie".

    Ecco il link, per vedere quello che ho:

    http://www.kubizo.com/galleries/download.php?pid=2065http://www.kubizo.com/galleries/download.php?pid=2065

    Grazie mille del tuo aiuto!

    Zapo

  5. #5
    Modifica il tuo codice come segue così possiamo meglio capire cosa nn và

    Codice PHP:
    <?php
    $pid
    =$_GET['pid'];
    $sql "SELECT filepath, filename, url_prefix, pwidth, pheight FROM {$CONFIG['TABLE_PICTURES']} AS p " "WHERE pid='$pid$FORBIDDEN_SET";
    $result cpg_db_query($sql);
    $row mysql_fetch_assoc($result);
    echo 
    'La variable $row contiene: <pre>';
    var_dump($row);
    exit;
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36
    Tremendamente interessante :-)
    Non immagini nemmeno quanto mi hai aiutato. Sono un principiante totale e suggerendomi di fare echo mi hai messo in grado di fare un elementare debugging del mio script. Grazie del suggerimento!

    Purtroppo però non ho ancora risolto. Ecco il mio codice attuale:

    codice:
    <?php
    $url=$_GET['url'];
    $filename=$_GET['filename'];
    /*echo 'La variable $url contiene: <pre>'; 
    var_dump($url);
    echo 'La variable $filename contiene: <pre>'; 
    var_dump($filename);
    exit;*/
    header('Content-disposition: attachment; filename='.$filename);
    header('Content-type: application/octet-stream');
    readfile($url);
    ?>
    Mi dà lo stesso risultato (ho corretto altri errori, la query come era prima mi rimandava al thumbnail, ora ho deciso di semplificare e, anche se non è elegante, passo direttamente come parametro l'URL e il filename del file principale, così mi risparmio anche una seconda query.

    Se scommento il pezzo echo/dump, mi trovo:

    La variable $url contiene:

    string(90) "albums/Converted/Book Covers/Agatha Christie/Secret_Adversary_First_Edition_Cover_1922.jpg"
    La variable $filename contiene:

    string(45) "Secret_Adversary_First_Edition_Cover_1922.jpg "
    Che è perfettamente corretto!

    Non so come mai non funzioni. Si ostina a darmi la pagina piena di simboletti invece di aprirmi la finestra di "Salva con nome"! :-(

    Grazie ancora del grande aiuto!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36
    Ho risolto!!!!!!!!!!!!! :-)

    La mia ignoranza nell'uso del php era l'origine del problema:

    codice:
    <?php
    $url=$_GET['url'];
    $filename=$_GET['filename'];
    header("Content-disposition: attachment; filename=$filename");
    header('Content-type: application/octet-stream');
    readfile($url);
    ?>
    Così funziona. Il problema era l'uso delle virgolette nell'header. Prima era:
    codice:
    header('Content-disposition: attachment; filename='.$filename);
    Evidentemente il php ha delle regole particolari con le virgolette, diverse dai linguaggi che conosco (VB e C). Oppure la funzione header richiede delle attenzioni speciali.

    Ciao e grazie a tutti!

    Davide

  8. #8
    CANCELLA IMMEDIATAMENTE QUESTO SCRIPT CHE E' PERICOLOSISSISMO!!!!
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    36
    Grazie del consiglio, ma non ho capito cosa e perché:

    1) Cancellalo dal sito perché crea una falla di sicurezza? O non è affidabile?
    2) Cancellalo dal forum perché porterà altri a sbagliare?

    Grazie mille! Se puoi, ti chiedo di spiegarmi di più!

    Zapo

  10. #10
    Originariamente inviato da ZapoTeX
    Grazie del consiglio, ma non ho capito cosa e perché:

    1) Cancellalo dal sito perché crea una falla di sicurezza? O non è affidabile?
    2) Cancellalo dal forum perché porterà altri a sbagliare?

    Grazie mille! Se puoi, ti chiedo di spiegarmi di più!

    Zapo
    La password per connettersi al tuo db mysql ha a che fare con le automobili.
    Ti sembra sufficiente come "falla di sicurezza"?
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

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.