2012-01-11 13 views
0

私のウェブサイトギタープロファイルをアップロードできるようにしたい。どうやら、これらのMIMEタイプは特定されていません(私はテストして、アプリケーション/オクテットストリームを与えました)。ファイルがギタープロファイルであることを確認して100%確かめる方法はありますか? おかげギタープロファイルのMIMEタイプ?

+0

確かに確認できる各ファイルには特定のヘッダーがありますか?それらの2つをヘキサエディタでチェックしてください。 – jValdron

+0

ヘッダー文字列を読み込み、一致するかどうかをテストします(ここでは正規表現が最適です)。合意したMIMEタイプがない場合は、それに対してテストすることはできません。 (アップロードには信頼できません)。便利なものでダウンロードを提供したい場合は、 'audio/x-guitar-pro'や何か、無駄な' application/* 'ではなく、タイプを設定してください。 – mario

答えて

1

は、アップロードされたファイルから最初のバイトを読みます。たとえば、これは、私が類似の機能を作成していたときにアップロードされたファイルをチェックするために使用した方法です。

$f = fopen($_FILES['tmp_name'], "rb"); 
fseek($f, 1); 
$in = fgets($f, 19); 
fclose($f); 

if ($in == 'FICHIER GUITAR PRO') { ... } 

したがって、1番目から19番目の文字を読み取ると、文字列 'FICHIER GUITAR PRO'が表示されます。このアプローチは、gp4ファイルのために私のために働いた。また、私はファイルの拡張子を確認するために使用されます。 しかし、この最初のバイトを偽装することはもちろん、拡張子もかなり簡単なので、悪質なアップロードをフィルタリングするために実行できる実際のチェックはありません。そのため、アップロードされたすべてのファイルを常に適時に管理する必要があります。

0

あなたはファイルを解析し、バージョン文字列が正しいかどうかを確認する必要があります

http://dguitar.sourceforge.net/GP4format.html 
+0

ありがとう、私はPHPにはかなり新しいです。 ?これはgp4ファイル用のものですが、他のバージョンでも同じことがありますか? – romainberger