0

ユーザーが画像をディレクトリにアップロードできるページを作成しようとしています。ページのアップロード セグメントは次のようになります。

<form action="resources/includes/uploaded.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file">
    <input type="text" name="description">
    <button class="newimage" type="submit">Upload</button>
</form>

私のPHP関数は次のようになります:

    $_SESSION['random'] = substr(number_format(time() * rand(),0,'',''),0,15);
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 200000000)
    && in_array($extension, $allowedExts))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        }
      else
        {

        if (file_exists("../../uploads/" . $_SESSION['random']))
          {
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "../../uploads/" . $_SESSION['random']);

          }
        }
      }
    else
      {
      echo "Invalid file";
      }

      ...DATABASE QUERIES ETC.

上記により、設定した制限内の画像をアップロードすると、「無効な画像」が印刷されます。ファイルがそこにあるため、問題が何であるかはわかりません。関数で正しく名前が付けられ、参照されています-何かアイデアはありますか?

4

3 に答える 3

2

これをコメントとして書くつもりでしたが、長すぎました:

デバッグ ステップ 1

最初に、すべての条件を個別の if ステートメントに分割して、それらの条件に合格しているか失敗しているかを返すようにしてください。したがって、A から E までif ( ( A || B || C ) && D && E)**if (A) { echo "A is true" } else { "A is false" }を書き込んでから、真理値が期待どおりかどうかを確認してください。それらはあるべきです。

値が期待どおりでない場合は、条件が間違っています。

あなたの価値観があなたが期待するものであるなら、あなたの論理は間違っています。

どちらが該当するかお知らせください。より効果的にお手伝いいたします:)

**また、A から E までを書き出す代わりにif (A) { echo "A is true" } else { "A is false" }、次のように使用することもできます。

function check($letter, $condition)
{
    $retval = ($condition) ? "True" : "False";
    echo $letter." is ".$retval;
}

check( ($_FILES["file"]["type"] == "image/gif") );
.
.
.
于 2013-08-14T19:08:15.370 に答える
0

これを試して

HTML

<input type="file"  name="img" />

PHP

$_width = 125;
$_height = 150;
$imageData = @getimagesize($_FILES["img"]["tmp_name"]);

if((($_FILES["img"]["type"] != "image/jpeg")&& ($_FILES["img"]["type"] != "image/png")&& ($_FILES["img"]["type"] != "image/jpg") && ($_FILES["img"]["size"] > 50000) && (($imageData[0] != $_width) && ($imageData[1] != $_height) )   ){
echo "validation not met";
}
于 2013-08-14T19:26:35.810 に答える