Autor | Zpráva | ||
---|---|---|---|
Ben Profil * |
Ahoj,
mám script na nahrávání flv souborů přes webform a zasekl jsem se na ověřování, zda se jedná skutečně o flv soubor. Mám tento script: <?php //pripojeni k mysql require_once("../config.php"); //nastaveni promenych $nadpis = mysql_real_escape_string($_POST["nadpis"]); $soubor = $_POST["rok"]."-".date("Y-m-d_H-i-s")."-".$_FILES["video"]["name"]; $soubor = trim($soubor); $soubor = mysql_real_escape_string($soubor); $popis = mysql_real_escape_string($_POST["popis"]); $rok = mysql_real_escape_string($_POST["rok"]); $sql = 'INSERT INTO videa ( `id`, `rok`, `nadpis`, `odkaz`, `popis`) VALUES ( NULL, \''.$rok.'\', \''.$nadpis.'\', \''.$soubor.'\', \''.$popis.'\'); '; //zpracovani po odeslani set_time_limit(7200); if($_POST["ok"]){ if($_POST["nadpis"] && $_FILES["video"] && $_POST["popis"] && $_POST["rok"]){ if($_FILES["video"]["type"] == "video/x-flv"){ $chyba = ""; if (!$_FILES || $_FILES["video"]["error"] == UPLOAD_ERR_INI_SIZE) { $chyba = "<p class=\"error\">Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".</p>\n"; } elseif ($_FILES["video"]["error"] == UPLOAD_ERR_NO_FILE) { $chyba = "<p class=\"error\">Nevybrali jste soubor, který chcete nahrát.</p>\n"; } elseif ($_FILES["video"]["error"]) { $chyba = "<p class=\"error\">Soubor se nepodařilo nahrát!</p>\n"; } else{ //ulozit na server if(move_uploaded_file($_FILES["video"]["tmp_name"], "../video/$soubor")){ echo"<p>Video bylo úspěšně uloženo</p>"; $send = true; //ulozit data do MySQL if(mysql_query($sql)){ echo"<p>Data byla úspěšně uložena!</p>"; echo"<p><a href=\"insert_to_videos.php\">Nahrát další video do Galerie</a>"; $send = true; } else{ echo "<p class=\"error\"><strong>Uložení dat do databáze selhalo!</strong>Zkus to znovu.</p>"; } } else{ echo "<p class=\"error\"><strong>Uložení videa selhalo!</strong>Zkus to znovu.</p>"; } } } else{ echo"<p class=\"error\"><strong>Vybraný soubor není ve formátu *.flv</strong></p>"; echo "Tip videa je: " . $_FILES["video"]["type"] . "<br />"; } } else{ echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>"; } } //zobrazeni formulare else{//zobrazeni formulare } ?> A pokaždé, když chci nahrát flv soubor, tak mi script zkončí na chybové hlášce: Vybraný soubor není ve formátu *.flv Tip videa je: application/octet-stream. A nechápu, proč mi to háže, že tip souboru je octet-stream. U jiných tipů souborů mi to vypisuje správný tip. Máte někdo nějaké nápady? Moderátor Alphard: Tipujeme výsledky zápasu, ale u souborů ověřujeme typy.
|
||
Louka Profil |
#2 · Zasláno: 20. 4. 2011, 19:14:57
Být tebou ověřuju spíš příponu, nebo to se pro tvé účely nehodí?
Pozn: jak přípona, tak hlavička jdou snadno přepsat, takže je to v podstatě jedno. |
||
Ben Profil * |
#3 · Zasláno: 20. 4. 2011, 19:29:32
Zkusím ještě přidat to ověřování přípony. Díky za radu! :)
|
||
Keeehi Profil |
#4 · Zasláno: 20. 4. 2011, 20:28:38
Ben:
Co je v $_FILES["video"]["type"] záleží na prohlížeči. Tento údaj "vyplňuje" prohlížeč. (takže se to mimo jiné dá velmi lehce podvrhnout)
|
||
__construct Profil |
#5 · Zasláno: 20. 4. 2011, 22:25:19
Ben:
Cez PHP to môžeš kontrolovať funkciou finfo_file() / metódou finfo::file - pokiaľ máš PHP 5.3 a PECL. Ak máš staršiu verziu PHP tak použi funkciu mime_content_type
|
||
Časová prodleva: 13 let
|
0