0

イメージの種類を検証するために getimagesize を使用していますが、複数のファイルのスクリプトを作成する方法がわかりません。基本的に、以下のような複数の画像ファイルをアップロードできるフォームがあります。

  <input type="file" name="photo[]" class="file" />
  <input type="file" name="photo[]" class="file" />
  <input type="file" name="photo[]" class="file" />

次に、これを使用して検証し、phpmailer 経由で送信します。

<?php
ob_start();
require("class.phpmailer.php");

$errors = array();

if ('POST' === $_SERVER['REQUEST_METHOD'])
{
    $firstname           = sanitize($_POST['firstname']);
    $lastname           = sanitize($_POST['lastname']);
    $email                 = sanitize($_POST['email']);

    if (empty($firstname))
    {
        $errors['firstname'] = "Please provide first name.";
    }
    if (empty($lastname))
    {
        $errors['lastname'] = "Please provide last name.";
    }
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
    {
        $errors['email'] = "Please provide a valid email address.";
    }

    if (count($errors) === 0)
    {


$imageinfo = array();
  $my_files = $_FILES['photo']['tmp_name'];
  foreach($my_files as $single_file) {
  if(!empty($single_file)) {
  $imageinfo[$single_file] = getimagesize($single_file);
  if ($single_file['mime'] != 'image/png' && $single_file['mime'] != 'image/jpeg')
  { echo "Invalid Image File";
  exit();
  }  }
  }


foreach($_FILES['photo']['tmp_name'] as $photo) 
if(!empty($photo)) {
$mail->AddAttachment($photo);


$message = 'some message';

$mail = new PHPMailer();

$mail->SetFrom($email);
$mail->AddAddress($from);

$mail->Subject  = "Submitted";
$mail->Body     = $message;
$mail->WordWrap = 50;
}

$mail->Send();

header("Location: thankyou.php");
exit();     
}}

function sanitize($value)
{
    return trim(strip_tags($value, $problem=''));
}
?>

警告のエラー メッセージが表示されます: getimagesize() は、パラメーター 1 が文字列、配列であることを期待しています 。フォームが配列を渡していることが原因であることがわかっている場合。複数のファイル/配列で機能するようにスクリプトを変更するにはどうすればよいですか? 助けてください。どうも。

4

1 に答える 1