0

重複の可能性:
Strict Standards php エラー

こんにちは、php のアップロード スクリプトに問題があります。画像のみを受け入れるようにしようとしていますが、エラーが発生し、修正方法がわかりません。唯一の画像部分を削除するとうまくいきます。誰かが私を助けてくれることを願っています:)

私が得るエラーコード:

厳格な基準: 3 行目の C:\xampp\htdocs\upload_file.php では、参照によって変数のみを渡す必要があります 無効なファイル

upload_file.php コード:

<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

前もって感謝します!

4

1 に答える 1

4

最初のパラメーターとして変数が必要なためend()、 の結果を呼び出すことはできません。explode()

ドキュメントごと:

配列。この配列は関数によって変更されるため、参照によって渡されます。これは、実際の変数のみが参照によって渡される可能性があるため、配列を返す関数ではなく、実際の変数を渡す必要があることを意味します。

次のようにします。

$foo = explode('.', $_FILES['file']['name']);
$extension = end($foo);

別のアプローチは、厳密なエラー チェックを無効にすることですが、エラーを削除することが望ましいと思います。

于 2013-01-26T09:05:42.007 に答える