0

悪意のある改ざんを阻止するために、アップロードされたファイル(画像であるはず)の内容を分析しようとしています。したがって、処理する前に、たとえばファイルに PHP コードが含まれているかどうかを検出したいと考えています。

$patern = "/<?php/" ;
                    $handle  = fopen ($_FILES['image']['tmp_name'], "r");
                    if ($handle) 
                    {
                        while (($buffer = fgets($handle, 4096)) !== false)
                        {                                   
                                if ( preg_match ( $patern , $buffer ) );
                                {
                                echo "PHP files are forbidden";                                 
                                }                               
                        }
                        if (!feof($handle))
                            {
                            echo "Error: fgets() failed\n";
                            }
                        fclose($handle);
                    }

画像を送信した後、「PHP ファイルは禁止されています」という結果が 180 回エコーされました。正常です。ループ内にありますが、mi pic には 1 つのphpパターンがありません ... 問題は何ですか? パターン?preg_match ? ハンドル?どうもありがとう。

4

1 に答える 1

0

ごめん、

間違いは:構文エラー:末尾のセミコロン:

 if ( preg_match ( $patern , $buffer ) );

それ以外の場合は正常に動作します

于 2013-01-31T07:20:56.970 に答える