1

フォームが 1 つあり、PHPMailer を使用してそのフォームからメールにデータを送信しています。ユーザーは添付ファイルを送信することもできますが、問題が 1 つあります。PHPMailer で 2Mb を超える添付ファイルを拒否し、iamge 添付ファイルのみを許可する (他の種類のドキュメントは許可しない) ようにするにはどうすればよいですか?

これは、PHPMailer を使用して電子メールの添付ファイルを複数作成するために使用するコードです。

foreach(array_keys($_FILES['fileAttach']['name']) as $key) {

   $source = $_FILES['fileAttach']['tmp_name'][$key]; 
   $filename = $_FILES['fileAttach']['name'][$key]; 

   $mail->AddAttachment($source, $filename);

}
4

2 に答える 2

6

filesize()を使用してファイルサイズを確認し、 を使用してタイプを確認できますmime_content_type()

結果のコードは次のようになります。

$maxsize = 2 * 1024 * 1024; // 2 MB
$types = array('image/png', 'image/jpeg', 'image/gif'); // allowed mime-types

if(filesize($filename) < $maxsize && in_array(mime_content_type($filename),$types)){
  $mail->AddAttachment($source, $filename);
}

編集: PHPMailer には、これらのチャックの可能性が組み込まれていません。ソースからわかるように、添付ファイルを追加するときにファイルが存在するかどうかのみをチェックします。

if ( !@is_file($path) ) {
  throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE);
}
于 2012-06-08T10:37:57.200 に答える
0

ファイルサイズを確認するには、 filesize()を使用します。ファイルが画像かどうかを確認するには、getimagesize()を使用します。画像でない場合は false を返します。それ以外の場合は、mimetype を含む情報の配列を返します (特定の画像タイプを確認したくない場合)。

于 2012-06-08T12:56:20.960 に答える