2012-01-21 2 views
0

を解析し、私は「www.example.com/directory-of-の形で、Uploadify scriptを使用してサーバーにファイルをアップロードして、ウェブサイト上でPHPを使用してそれらを表示しようとしていますアップロード/ file.mp3 "。私は、カンマ、引用符などそして、PHPのコードの区切りとして文字を含むファイルをアップロードするまでアップロードファイルおよびそれらに

それは、正常に動作します。例えば

、私はフラッシュプレーヤーのパラメータとしてファイルのURLを解析しようとすると、それは次のようになります。

<param name="flashvars" value="soundFile=http://localhost/public_html/content/plugins/post_audio/uploadi‌​fy-local/uploads/song,+one.dad'a;[email protected]&amp;titles=song,+one.dad'a;[email protected]&amp;playerID=audioplayer_song,+one.dad'a;[email protected]">

と、ファイルが再生できません。私はそれがこれらの文字に何か持っていると思います(カンマ、引用符を...)

私はこの問題を修正する必要がありますどのように? reg exは唯一の解決策ですか?

ありがとうございます。

+1

「ブレーク」のような何かをしたい、あなたはいけない たいキャラを削除するプリプレグ、交換使用することができますか?コードを表示し、エラーを表示し、観察された動作などを説明してください。 – David

+1

私は100%確実ではありません(これを行ってからしばらくしていますが、今すぐテストする便利な方法はありません)しかし、私はそれがUrlEncodedまたはHtmlEncodedまたはその効果があるべきであると思います。 (http://php.net/manual/en/function.urlencode.php)正しくエンコーディングしていない場合、アプリケーションはSQLインジェクションまたはXSS攻撃の影響を受けます。 – David

+0

たとえば、Wordpressは無効な文字列からアップロードされたファイルをクリーニングするためにこれを使用します: 'preg_replace( '/\.[^.]+$/'、 'basename($ file))' – Eray

答えて

2
$fArr=explode('.',$_FILES['fname']['name']); 
$fname=clean(implode('',array_slice($fArr,0,-1,false))); 
$ex=clean(implode('',array_slice($fArr,-1,1))); 
$file_name=$fname.".".$ex; 

function clean($str) { 
    $strArr=array(); 
    $strArr=explode(' ',$str); 
    foreach ($strArr as $key=>$val) { 
     if (strlen($strArr[$key])==0) { 
     unset($strArr[$key]); 
     } 
    } 
    $strArr=array_map('strtolower',$strArr); 
    $str=implode(' ',$strArr); 
    $str=preg_replace("/\W+/i","",$str); 

    return $str; 
} 
関連する問題