2017-03-04 3 views
0

現在、ユーザーがファイル(myfile.htmlなど)をアップロードできるウェブサイトで作業しています。 アップロードディレクトリに移動する前に、アップロードスクリプトがこのファイルの複数の文字列(配列から)を検索するようにします。配列から文字列を検索するファイル

初めてファイルの配列から文字列が見つかるとすぐに、検索を続けるべきではなく、これについてユーザーに通知してファイルを保存してください(もちろんアクセス不可能なので)。それが "偽陽性"であれば、手で自由にしてください。

$forbidden = array('thisisnotallowed', 'thisisntaswell', 'alsonotallowed'); 
$uploaded_file = file($_FILES['fileupload']['name']); 
$deleted = str_ireplace($forbidden, "", $uploaded_file); 
foreach($deleted as $line) { 
    echo($line.'<br>'); 
} 

をので、明らかにこれはちょうど何に置き換え、それらを使用して新しいファイルをファイル出力内のすべての禁じられた文字列を置き換えます:

これは私がこれまで持っているものです。

しかし、私はそれがこのような何かをしたいと思います:

if(find_string($uploaded_file, $forbidden)) { 
    echo('found a forbidden string in your file'); 
    $new_filename = $filename.'.lookinto'; 
} 

私はあなたが私が何を意味するか理解し、私を助けることを願って?

注::アップロードされたファイルには、明らかに1行に1つの文字列が含まれているだけではありません。彼らはこのように見えるかもしれません:<p>thisisnotallowed</p>または何か。

+0

これは、XYの問題のように聞こえるの文字列を検索する文字列

$uploaded_file = file_get_content($_FILES['fileupload']['name']); 

使用strpos()にファイルを読み込みます。あなたの前提には欠陥があるかもしれません:これは、ユーザーがアップロードしたHTMLファイルの内容をフィルタリングする安全な方法ではありません。 –

+0

@ジョンV.より安全な方法を知っていますか? – Twisterado

+0

それは、あなたがHTMLで何をしたいのですか? –

答えて

0

使用file_get_content()は、別の文字列

foreach($forbidden as $one) { 
    $pos = strpos($uploaded_file, $one); 
    if ($pos !== false) { 
     echo('found a forbidden string in your file'); 
     $new_filename = $filename.'.lookinto'; 
    } 
} 
関連する問題