Php download function

Hous

Registered
Интересно ми е примерно ако искам да "кажа" на браузерът да свали а не да покаже картинката как става с php ?
Примерно при кликане на бутон "Download" вместо да преправща към asdasd.com/pic1.jpg да ссе сваля (като ако може кода да е универсален за всички браузъри ,ако това е проблем де)
Благодаря.
 
А ,ако искам да свалям картинки от всякакъв тип (jpg/jpeg/gif/png)как точно ще стане,иначе и аз можех да си го намеря в нета форс доунлоад.
 
PHP:
if(isset($_GET['file'])){
    $file = 'images/kartinkata.jpg';

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
}
 
Не разбрах как проверава if isset При положение,че аз искам да е на бутон примерно името на картинката е в променливата $pic = "asd.jpg" и искам да го форсне да свали картинката при кликане на бутон... как би изглеждал такъв код?До тук нищо не успях да скалъпя. :lol:
 
оф човек, за пръв път ли пипаш ПХП код

сложи си ако искаш if POST ако искаш въобще без if все тая, само ти показах нагледно как ще стане...
 
Като се разрових в нета и се оказа ,че по този начин мога да сваля който искам файл от сървърът ми стига да го постна в url-то... няма ли някакъв готов скрипт за сваляне САМО на картинки за да е защитен остатъка от сайта/сървъра?
:)
 
dgeorgiev ти показа другия начин, просто сменяш хедъра да отговаря за съответната картинка.
 
Освен това не си прав. Не може да се свали какъвто и да е файл, особенно с кода дето аз ти дадех. Може да си направиш да се свалят картники само от дадената директория images Примерно, която съдържа само картинки :

PHP:
 $file = 'images/' . $_GET['pic'];

И си готов.
 
то може но аз ако знаех как нямаше да пускам тема.Идеята ми е като имам една картинка в новината примерно novina_2.jpg И като кликна на бутона да сваля тая картинка пък аз до тука нищо не успях да направя...
пак казвам ако знаех как нямаше да питам тук.Благодаря за отделеното време. :?:
 
Добре де, кое не успяваш да направиш? Целия код съм ти го дал, от тебе се иска само да го копираш в твоя? Ето пример:

PHP:
if(isset($_GET['pic'])){
    $file = 'images/' . $_GET['pic'];

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
}else {
echo '<img src="images/kartinka.jpg" />
<a href="?pic=kartinka.jpg">Свали</a>';
}

:)
 
опитах се и от адерса при кликане novina.php?id=23&pic=pickamnovina2.jpg
и просто ми изписа разни символи вътре във браузерът
ÿØÿàJFIF,,ÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 2!!22222222222222222222222222222222222222222222222222ÿÀ^"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ?ÈŸW’hþ͐25Zw×…Ãmuæ¶5šhÈ^Xa¸éUM¢Çql9¸ã¡®TË{âÖÛÊÝ%¼gœcÈŸbé³cýÜê]vùU±kˆ°¸-»8qV"ˆ2˜¤U~2H<[ØÄË“Ã:C°/b˜}è¥ÚøÔRø7G:¥Ê“ƹ­¤¶„„*IùIlŒÂ¥J¨T©#?1ä{{Óq<–§)?‚tÒ9šå@=~VÕY|HÂ+ù2;ÿ íÚ¥ˆ°œ÷©†4*ăÉvç"—*è «{žqªøVkkF˜Ýy‰Í´’ ­DðÅ–ÈŠ^ß$’Ƥ´o+oX‰åÓ˜ \äW6‰?‘ŽY1Ͻg?t֘ʾ]_JÕ'·U»h“O™É°ë:ò)Q»Ç¡!‡å]°3±’EË2Œ³rMO„Ìr\Ò–§LTm©Í/ˆõàq%É+êð+dÔãÄZ 4VÏÿ]-±ŸÊº ʧ!Pç®E#è„”9öRæcit9çñ<¨qq¥X8<ãË+šañ6žy“ÖL§²HV¶ßDÜ#ê9¬Û wàÅÈëMIÈHª´º’­rŸöd2àF³0Òâ7ÿ ˆQ-xœ`ƯüJþ°—£ÎätÁÎ*#à•OõW÷¾xR¹þTtoéøtJgÓ(ÀAJô gΏB¹òP4Š('åE…öã_ ‰¯¦»In\Î~ì×­Jg’Õ£{d xf-“]0¿&‡[{MN kú²F®Éjã­¶@?ZyñËÿ­ÒôçúÆÀ×si§[¥ªÂð¡ŸZWд÷äÚ(÷Íbá#ioÂAY4K|FcŸiýkñΣi©ZéÖ‰bÖ«ö îòO½@ÓÞ½Žo iNë~ æ¹½gÁ:EݱŽHœž£‘M&Ô¢Ï:ž÷HžÚÞr£ËP1äUC’ü}ºÝãÅ\Ô>$ò¨‘ž˜®f×ÁµŒ’È#¼°=gR¢ZÈè„[^é¶4m6b65±Ï÷_ákB~Tb?Øn)ðôÆI†þåzµø3V?æ-QóŒ?àç‚ÅÒèËös$>U9ÏLô æšt¸~xu„#ŒŠ­&âKnN£ÈðqRˆ¼ah¥ã÷ƒ¥W·§ÜŸg2qi®G&ñ«3“ÆSKxŽ)—,xÈÆj°Ö|Q6É)È.içÄÚÔk™trː Ùš×Ú¦eì—bØÔ|E Ã3iðK¸‚êœgôø¼Gjò 4Y<·9eVêj‰ñ–£H¬{…"œž5°ù–o“œSæ%Ó];[[³Û*ö+IT™äûzVlúí‡Ëä´è2pd\0_J<[£I?ÌÊ_â«Vðü§Q“Ô•sºgÃÿxKÒ¦Š÷RŽiÙ‚°9Ák¯øwÉy"Õmå$>lf¼›o‡¦97¤î¼ÒÿehO—íÎ}% ?*Òúhfé]ž·mâ[i¬-¤?I&µ—Pa2º˜Ã(G\דéšE´:\ú|É ŠV’b. è+»MOS11í¥@7#ÆÀŠû²]#i5[ÁH¹ E^1•˜C@=+š¶×­¤•¢»±¶Id•ïPË©é׆;´“¨!Y“…K­Ô^È讬ä4?>\uÍRºh|3¢^]‡lG`¸Î `I}}ßkäøäyp²çþúÅgx·ÆltÆÓΑ~“d L?ze~¼ÐªB]Jä’Øåy7 bñÞüÎ݃þµ*[“štÉŸ˜˜HêýUŸ¾Õí&²œDcb¹ õªsâK'X˜¤ÑOå_naþ5VCM’]Dnm@ ¨N09À®[]Ó"Yæ$È0@Åt_Û¶>lWÈé+|²‡cÖ«ê2ÚJ¦+iÖT”î?ƒÿ×EÐÓfÏÃ[™ÔC'2YÊ‘ÝkÕ®71Ì##íŠò³ë«†F?çp¯dHÃÙÀN·QUÈŸÄgK«Á؉½³
.........................
 
PHP:
<?php
$file_extension = strtolower(substr(strrchr($filename,"."),1));
$path_down = "./images/";
if(isSet($_GET['image'])) {
	$filename = "{$path_down}{$_GET['image']}";
} else {
	$filename = "";
}
if(ini_get('zlib.output_compression')) {ini_set('zlib.output_compression', 'Off'); }
if(empty($filename)) {
	header("HTTP/1.0 404 Not Found");
}  elseif(!is_file($filename)) {
	die("This is not a file!");
} elseif (!file_exists($filename)) {
	header("HTTP/1.0 404 Not Found");
} else {
	$size = @getimagesize($filename);
	$fp = @fopen($filename, "rb");
	if ($size && $fp) {
		switch($file_extension) {
			case "gif": $ctype="image/gif"; break;
			case "png": $ctype="image/png"; break;
			case "jpeg":
			case "jpg": $ctype="image/jpg"; break;
			default: $ctype="application/force-download";
		}
		header("Pragma: public");
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private", false);
		header("Content-Type: {$ctype}");
		header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".filesize($filename));
		readfile("$filename");
		exit();
	}
}
?>

Дързай!

http://saita.com/faila.php?image=blabla.png

Промени само папката в променливата: $path_down = "./images/";

В тая директория дето искаш да са ти файлове, които да можеш да сваляш. Иначе няма да имаш успех.

Защитено е. :)

/сега го писах, ако има нещо не ясно питай./
 
Скрипта си работи перфектно, току що го тествах. Провери си дали си копирал всичко правилно както съм ти го дал с всички хедъри, а също така и пътят до картинката.
 
Перфектно,но трябва да призная,че не мислих и направо копи пейст и после се усетих ,че file.php е файла с кода а не директно в моя novina.php , но нищо ,всичко е перфектно а и щом е защитено няма какво повече да искам!
Благодаря!
+1 @Ticketa
и благодаря за времето все пак на Rado
 

Back
Горе