Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Aiuto per PHP - Far aprire la finestra "Salva con nome&
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 16:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 07 Ott 2011 17:18    Oggetto: Aiuto per PHP - Far aprire la finestra "Salva con nome& Rispondi citando

Ciao a tutti!

Mi rifaccio vivo ogni tanto in preda al bisogno di aiuto... Sto lavorando ad un sito e vorrei creare un link a un file di immagine (png o jpeg) che facesse aprire la finestra "Salva con nome" sui 4 browser principali, invece che aprire l'immagine nel browser.

Ho creato un file download.php, che chiamo passandogli il paramentro pid (picture id). Ecco il codice del file:

Codice:

   <?php
        //ROBACCIA PER INTEGRARE IL MIO FILE NELLO SCRIPT CHE STO USANDO
   define('IN_COPPERMINE', true);
   define('DISPLAYIMAGE_PHP', true);
   define('SMILIES_PHP', true);
   define('INDEX_PHP', true);
   require('include/init.inc.php');
   //PRELIEVO DEL PID E QUERY PER TROVARE IL PATH DEL FILE CHE VOGLIO SCARICARE
        $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');
        //INVIO DELL'HEADER - CI SONO ANCHE ALCUNI PEZZI COMMENTATI PERCHE' HO FATTO UN BOTTO DI TENTATIVI, TUTTI FALLITI
        header('Content-type: application/octet-stream');
   header('Content-Disposition: attachment; filename="test.png"');
        /*header("Content-Type: application/force-download");
   header("Content-Type: application/octet-stream");
   header("Content-Type: application/download");
        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/png");*/
        readfile($pic_url);
   ?>   


La query deve essere giusta perch ottengo il file che voglio. Per, lo ottengo aperto come se fosse un file testuale nel browser. In altre parole ottengo questo:
Citazione:
PNG  IHDR>a IDATx}$q/]^.IERXP@}(p)GrM/P0lRV8JdK4 $AJ @{c}tweCƯw㭂̍stMwueV̪&U4W2!2 4 }03$VՆaAر(09h[f7Mf]~Dc T"8nEQZ8Q%.!ʲ4`!UE6F4}$~J?1S ;S:Z""gfy6n'?Oۉ@Շ@ݱSgT:NKj蝵s#JD"x58/U`V\pe>>{ )t @>8>OD'(jGQ(l6EQie yeYV4L"q g9{Z2U]U՗TEU!gyd\̌,?Aeя~^"}݇8a9Q4vy&n߾N_|/_ӧwƘ*l5 |VU "IXk>9")'џi]h?{ Dk-znܸQ[[[Ȳ ~YAD "PUDQ <(D__<ǩS*|nZ/cii >,n#ccVIvoq9SN\9co~(!"+G59 JSW/ZW_}wK/?1C(׺Ot`w3Z ~7 ,,, lV %m777'DD@X\\}݇/l]xqWWW!X۸4OM?`WϞ={&cٟկڵkq#I038lVvwʲEQ ˲] dYVDpX]o 24Wk_8ɓ'q%ʯ ͛7PU>l@4t?pRwܹ3nz gΜAFilsU1yZ[<AD(ry8VEQTFe >Nu#!@eYƍ}|_?yiJk>r#D{Vf9)AT.Zm4 "}Yp6x @EQ<o ooo7p8deh40 nwj}z2frօ, (b="" m*#"ssbppqh'n?iok%ܼy r-f="">T.<2LH}|$C:y{xq | /x套+`uuT5^GE"jzJuollTmv 0ƘJDTA,KDQ+W͛t:h6p"x"w^DI+W^k349 &4`Mw쁘7ois[r?? (,@իWqܺu7onݺu7ހyΝ;믣hZv]@qE\|W^Ek*("Z%t]4 wE\xDq U­۷O淾{N>!i rx,a Uy^B/ 6nFxz׻l6gkk eYbuu_Qc~ kQL{׃{Nb}}Y̙3XXX@t:Hi+z&6713O#dp<FT;$JBeȆ%z4[NSSOøyo6xUVf@d @J& F'V׮_Ci4Mt@ pd=t( !u"O xk7 (vؙoO?4~7~GGSO"(K bnnnԩS߁ ##bAdil*w&gK Q@Qx;'+D.U@IA' 3&ifvIя~Z}ze 9J)2,E3 *=՟Hl!D Op8h |Wh +\  -gAѨ>'INV@ kl4m/}7yGpw8vm9'(@ Xx0ͥ D řV3s $ATan!=̺ LlȩMHB;A4=C;죋zve% ]3M(9FQso&>8?`V;!f5>uCiJh,jćsk%©d7fs9{i:>oK %փ άsle7C *,[PPQrgiU8v:_Pw;[AkENLCf*rB|7];" gBGBCAܧmpnm\Iw 8V *Tܒmxk8T@]/<p'D5rF0Y!T8CD1aƀTumU1fX & #0 ?LV8ӈ<f|8 l@v "Ü|W8`cVL7UCѵ0fSDS1~f 7#cp3ޒd$<„BT< Hag.ZU cՑ`Z;E!HdƮwM}3ҽYj,We޹vr9G  .m?2͑`TӞ){j 1PDG&Cv4tG==#!QAnDhZ>9ݱkj` Uv jC 6~=9р FQ[imwTPla!b ԽP@ E!5HV]$خ1#Bf'g@n\O>cf[K aQp=N۵.~b0æj~W@!3BV*2J|6P';'3#dFv˻P>pT:Qqz<*_1K[[al XE#'97&s2L :/  PGBi\<rɀ%SB80*T-5 RnTZgvuSAxo'_?¢P6𳙼lnnffXWEL`Hө.K>8tD0IwE( 8C87ʞ@nɓ?+3yx B- {Rlst {Q+/>tɓY@qZfz tu c+L2h0n yᧃU8y$bit XConfused$!hdQUR®\jP̚n)Z9 ! χXG>v03(aeĄcBQjفHu2DQ;H,cPA ƋfbvzN"A_ k ̆ $(/ap!U5.7M;SL(qUزğ؇_VE.a)=;qd06cwBO"p|1X:>iB=K NϜ2hT@ _~=͡uMY<@ VUZySI%"ro&S:8 pҍ8;aEvL F_ *^Ssc߅!u| l̉Ft\&&@2Z@#aaQX:2Z 2*aiQ1UR_{YvvGׅ;UQݔ?.xHxH9xӶ^|t-pPp *7 F=ZO5  >쯙#tw]TjìUs `"a?o&Aذ|0jcpN 8b Ze$3)d]ޟp쟷{l]Ns±YA^E]$~@ ͭ r@[faK >Very Happy$p~ƴ8sO 0V9YTV|z1BR;t`9^f<' ١` @I֣m4h#";4@ޙ N cgC>? 0ecTլ#e#hZшwVCfIƵ@ρ 錁Q/3pr?Va>*p* P__ 뻚FDpXן+\<ƙ &VZHmU_t0 zS%mUU{"kmX38x?^چVřCC?HԀaf@ u*jim:Ϲ֎sljQYۛA!,~s^Fǎ=P1RM0&x~%?5β͘(8JnMfaeaaZ*̹{. DneBg-W?{,`o_c[qiG2um}HOhև=3\>@M `X՜8B[p_h\GX@Gq;=y<G08AP[ˊ cGl0:Jz`?@@MXO~jp)v  $M yT&p"PA 0G,Z͆GQ:  jUr m@>U=<61@qC))~.ށ{DA0 (Jȼq3n Y6~.! "vȳV~A۬82*b);h'귰yfg ykqGLR)!pfacP0b6`6_fJFG#a2YeX`vh@6WVu^GrUN<,f="" w3ܪ0_wh1g5<w5xvf="" cy$r1;sk9ށ@9sy}t@eh4="" l="{C!qe߶..OrUeY`8(.2<eO㷀wG" �1z�[sꗈ="" 9flyfap�jce4e\zae6pl~ѹxe="" 0="" ="Xy*" q"-r$_e3wu#[gpvi:?@="">>CQ7 $A@?KSa6t{}U_accy>=iwAFm!  F+O, WUfeuO%sy$).>?c}?78=߷C?FCk< #S Cġ a ~ C%.{ _$E@&h6[G;pC gqg}`pB p=U|]@  cX id㣉Ft-c {͛y|g=f6&8h<x͸=>'4% ԻWŜfM#nB"ť}1Zۦ}C2Z8{׾i45<QqHhдSB8p6c4M,.-[;bG =㯾]lnn a8=yDTG:~ƜA >YẀhNiVN3ӻ :b{8xH#>Zo~w0dj%N 0&PTvyܤ VWQġ#pD( Ulj|$L59O>O|ÇֳxDZ<ǴΛ?×Q ŊNK4v8$$xlSF d~ /}KSSҟ}A T{eQ=M4dO1_f]/MSmS`G|L+`F@=>f&9tLQi6 4T:><,67>>5lrJAni( l|9v^_Yxc[lѺw<LwLiL1:gu? `lN|ϘC"0T+{F6FCA^B>`vwiRSȏѴe(AMy&l̋%ZUr;S_9LZ@D%]AN*xiW \H&홈O$3}ְp/CI:6{ q}=|8@24T0A(0CǞfBꌏwN?C  $D( 3G#7N-ZbN =k2eW L0L&T{dUw{xĭֵNnbF/2o0bn_ZuBfùȿ>aD> 4g0&^ D:Cb В- 12$-[^/حñ1Hq@rj݌f6CI'p,0P2?W!\_pcW0Iˉpq`G!؍j1>cvxMSÀ#@1*\8CD An|sMpTZ>`攙#I1Mmk:]Z@ j@( ~2Q%& 72`c}k-Y18vi $(D֦ܰRcLSUڰֶ1mcq!Qx a@4!Dq3QLDLDv=řeY|24Z`?N`| n4EQb8N1MkmӰvT _@cA@5ahe~zp$8B"gh4BcDUDZc,1F~;|ElnnFYqj,cƘTD8wTkm',Mӽ`eGCB_Vi]0!o/IDATڻ> oYZZ%I@<)ڒ,HDJt…W^ᵵ  ?#I|27MvlOT T !"1Yy_O|q4Me9s?pٯG bQ@E&ȋ]"hwOU bη/~snYnAD 1D$lE$2ز,?<_z23aW3 ʲ^{ <}0 j UմJ 33Ï=v [V}0 Lk ȸ T*`zCFO%|xGϭ41C1&!R8?VՂEQf.[3|^1vz.\SO=n4MIEQUx3Hdf""ٳgqG>|,o#O {z@zp j%j).h$I` ֭U<3HMǯhO|KrDQcb"J9`Ȕedvv.]z/^|_G&qCDj9UFE3|,(2.]B+O~/ #sg!TT} }c TBRi !E^@{֜OOgmU_(R{/"V|KX_ĝv3㈢(Zf;E'I~fFQPUt]ܺu _#`ccc'xϟGcss">"bCU,2sm-_~yia?gNso;Dcn^ #ܟ ,.C-"pSQГ/U .'3#fF'M+^}uӕkװ8y}Vyeii9M4H8&BU-aqGөxhxqy< 3c}}|;a`0 vU_NU|{f˲"kmYE>kwgy?/tI{{􍧞ѿ?_}=}CrB;68FSk D&dH^3EHJ i 2aL'dH?&^cl 5Zsg }ooqVp߅ SX^>}^yE܅ %V$IEQi)4ƨVFfFCa}}}Ǥ\(yx: hV«V4Ɣ3@,"km\EeYX_x嗾r֭w<𶷝;{,=^N?<o>xwQ;5Z;ӴlR^PR "Z*TIUa-3s5D޻vJW22hEB 4M 3v*‹߽+WHΜяcrNl۫//-4͍fK$Kd`C"E$'Z[c#Y1F MSyW9d … x̗(,Y)3De{dgd1:l9ʲ z^tgmG?z_{Ϝ9yY:w,Y؍ަyǯK/l/pb-D++. ԩ{(I"(8qF!DjE֖42/#KKK fELl)$WXEɏ<i׳7okoꕫtuvOG~{略[#^7umF?뽞D{ϟNǶZ4M4GQEр3"ʌ1Ckm <RUKF!X^^^F . [x{ރ,DDԩS⑩2"$Il3IU(BveYkW_~ʉ{9KK{>\(3z:^}5}[oGկѝuE)݅6qSeЅZݣGYU" ҵ5DZd!|HAF[k(Ktb=wFyܹstjqkuXoƝ;Hoi Z l 4 3EQ/-"j4}j."C"HADEyYeٔӧO ٳgT+fSt_w;w hp8,9F0zq1eY37ʲleв6E1[ᰝy7t0aD~a$IZN,--v:hZnȖ*Z- udYƷֈTUUI( jjneBRQ yiy8ŅYY\K+K8q}ZZT``॥%*iJԸw H4kHi^EADCkZHӴWe(~Q<<ϛ'EQa2'_lv'nQӥEt;f FI:uI`T.ÎrbS:񰚓Ha 2۴7nܐ5lllCUƘl拋6<ϵ,k\hr~,35a0`uu?ڵkt:nxss"�q\eqٌ~$ibdiy="" clte*"-�)<[fyi[y^$"eʲ,-2֦ށ4eq,|8(,47="" l4mhlqehzp@45fequ"uvhd,u8*"="" eykec?n ld$*(8 eq="" 4-8b2^$e$}c;|qd(s"j 22iذnwtu{nmmə3g;;xyyf93<="" ey3g-v]#%iite月"clqe<#i4u�iq$iidyh4uʲl6vl5zeeɪeq %="" 7|g[kz"bchu,w03t6od="" qە="">NEc1F13YjɈ(7I$IQiq<0oy67D4Pji l69Fv[HHݮv]e UuXkeʲ(\Ы*ᐂPafVU"eY1&R!3ǑK]EQLT5J41DeYƪDQTsQQF*[ceI"bDTD$N'{FC]Grr]UaCA `f!"zQl_>7Ƙ\T<<0 Zk1@RD-YI=ZdYs1L!,pUz=4ͨ( $I,9c*CT=bUMF$"''eYFϑ6EηZ# gԺNc O(cf%"9݈g~cf(1$I34XUͽvEclE%վZj%Tʢ($" y81 l|/gjmb{`;<Өv׏gPei|ɓafi썬.h` ( &0g65N=t{=!Prk UUDZ E5Xfo䖙Ko*J1bb^k)3{LݫӅ ~lR ꟃec1w`1l%f,eY㘬=\JJL1#g1ưu(.=%TU"" z!D""7\grSqO2{ Liɔ1!1!AdYFDI ,K&E#oHr<%KKkY\-w'%0* |]T4xP"RtOMDV8MfY$I29}=Ak_cRKWn7k:&EG>~*?S O8OuIENDB` <o>

Mi scuso per la domanda, probabilmente banale, e per il crossposting con altri siti.

Grazie in anticipo a chiunque mi voglia aiutare.

Buona giornata!

Davide
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 16:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 07 Ott 2011 23:12    Oggetto: Rispondi citando

Piccolo aggiornamento. In seguito a discussione con un altro utente, sono arrivato ad uno stadio successivo:

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);
?>

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:

Citazione:

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"! Sad

Grazie di nuovo a tutti![/quote]
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Ott 2011 10:53    Oggetto: Rispondi citando

avevo fatto una cosa simile anni fa, e avevo postato su questo forum una volta rispondendo alla tua domanda:

http://forum.zeusnews.com/viewtopic.php?p=84371#84371

in breve, prova con

Codice:
header('Content-type: application/*');
header('Content-Disposition: attachment; filename = '.$filename);


se non va con alcuni browser (IE) proviamo a specializzare...
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 16:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 21 Ott 2011 21:58    Oggetto: Rispondi citando

Grazie per l'aiuto e scusa il lunghissimo ritardo!

Il problema risolto, esattamente nel modo che tu suggerisci. La mia sintassi lascia a desiderare Smile

Inoltre, lo script cos come sopra rende il sito vulnerabile (si pu far girare readurl su un indirizzo arbitrario, scoprendo tutti i miei dati personali di amministrazione del sito).

Ho corretto inserendo un controllo di estensione e limitando l'url ad una sottocartella dove ci sono le immagini.

Buona serata e grazie!
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 24 Ott 2011 09:57    Oggetto: Rispondi

ZapoTeX ha scritto:
[...]lo script cos come sopra rende il sito vulnerabile (si pu far girare readurl su un indirizzo arbitrario, scoprendo tutti i miei dati personali di amministrazione del sito[...]


s, non si deve mai utilizzare direttamente l'input dell'utente senza le dovute precauzioni... si rischiano SQL injection, code injection, attacchi XSS, file contents disclosure e altre amenit del genere Smile

Ti stupiresti comunque di vedere quanti siti web in giro soffrono di problemi di questo tipo.
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi