Autor Zpráva
SINUZ
Profil
Zdravím, potřebuju nějakým způsobem zajistit nahrání flash banneru do databáze. Běžný jpg/gif již mám vyřešený (není problém se to na netu dočíst), ale o swf nikde není ani slovo, tady je kus polofunkčního kódu co jsem vyplodil...

tady je ořezanej formulář:

	
<form action="vlozenibanneruswf.php" method="post" enctype="multipart/form-data">
<input name="banner" type="file" accept="application/x-shockwave-flash">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
<input type="submit" value="vložit">
</form>			


příjde mi že ten atribut accept je k ničemu, chová se to stejně s ním i bez něj...

tady je skript vlozenibanneruswf.php

	$typ=strrchr($HTTP_POST_FILES['banner']['name'], ".");// ze jména souboru zjistím jeho příponu

	if(trim($HTTP_POST_FILES['banner']['name'])==""):
		$chyba="Nebyl vybrán žádný flash";
	elseif($HTTP_POST_FILES['banner']['size']==0):
		$chyba="Vybraný soubor má nulovou velikost";
	elseif($HTTP_POST_FILES['banner']['size']>54000):
		$chyba="Soubor je příliš velký - maxim. velikost nesmí překročit 50 kB";
	elseif(!is_uploaded_file($HTTP_POST_FILES['banner']['tmp_name'])):
		$chyba="Přístup odepřen";
	elseif($HTTP_POST_FILES['banner']['type']!="application/x-shockwave-f lash"):
	  $chyba="Soubor není platný objekt typu x-shockwave-flash";  //TADY TA PODMÍNKA MI NEFAKÁ, SEŽERE TO COKOLIV (treba jpg) S PŘÍPONOU SWF!!!!!!!
        elseif($typ!=StrToLower(".swf")):
          $chyba="Vkládat lze pouze bannery ve formátu SWF.";
	else:

		     // --------------------------ZAPIS-SOUBORU-------------------------

	endif;

// výpis chybové hlášky
echo $chyba;


Pokud tam vidíte nějakou blbost tak jedině dobře, jde mi o to jak ošetrit aby šel nahrát opravdu jen flash, díky.

btw: navíc vsechny soubory v databázi v BLOBu maj jen 28 bajtů, ale to uz je jen detail... ;-)
pitomec
Profil
ta podminka se mi zda ok..zkus si to odzkouset ale mas tam zbytecne posilanou tu MAX_FILE_SIZE

myslim ze existuje funkce ktera ti vypise mime typ urcityho souboru, uz ale nevim jak se jmenuje...tak si ji najdi a zkus si vypsat mime typ nejaky swf
SINUZ
Profil
zkoušel jsem tohle... ale cteni skriptu se na tom jakoby zasekne a dál nepokračuje a ani nevyhodí žádnou chybu a to jak při finfo tak i při mime_content_type

if(class_exists($finfo)):
   $finfo = new finfo();
   echo $finfo->file($_FILES["banner"]["tmp_name"]);
else:
   echo mime_content_type($_FILES["banner"]["tmp_name"]);
endif;


Jediný co fakčí je tohle, ale nepříjde mi to zrovna dvakrát bezpečný... i když jelikož bude moct vkládat bannery jen admin, tak neočekávám nějakej megahack :)

$bann=str_replace(";", "", $HTTP_POST_FILES['banner']['tmp_name']); //po tomhle nevim jestli to swf neznehodnoti... teda... jeste nebyl cas odzkouset
$obrazek = addslashes(fread(fopen($bann, "r"), filesize($bann)));// soubor načtu jako binární text
if(substr($obrazek, 0, 3)!="FWS"):
    $chyba="Soubor není platný objekt typu x-shockwave-flash";
endif;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0