0

スクリプトが特定の値を持つすべての画像を取得できるように、テーブル内の画像ごとにエントリを作成するギャラリー システムを作成しようとしています。現時点では、ファイル名とギャラリーIDをテーブルに入力していませんが、ファイルのアップロードを機能させることができました-行をまったく作成していません. 以下はコードです。どんな助けでも素晴らしいでしょう:)! ファイルのアップロードなどはあまり得意ではありませんが、いくつかいじりました。

<?php
require "common.php";
$con = mysql_connect("localhost","$username","$password");
mysql_select_db("$dbname", $con);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$id = $_GET['id'];
$query2 = mysql_query("SELECT id,title,date FROM galleries WHERE id = $id");
    if (!$query2) {
        echo 'Could not run query: ' . mysql_error();
        exit;
}
$row = mysql_fetch_row($query2);
$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"] < 2000000)
&& 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("../galleries/images/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../galleries/images/" . $_FILES["file"]["name"]);
      $file = '["file"]["name"]';
      $sql="INSERT INTO images (url, gallery)
        VALUES
  ('$_POST[$file]','$_POST[$id]')";
  header("Location: ../../../gallery.php?id=" . $row[0]); 
  die("Redirecting to: admin.php"); 
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
4

1 に答える 1

0

問題は、クエリを実行する前にスクリプトをリダイレクトして強制終了することです。

$sql="INSERT INTO images (url, gallery)
        VALUES
         ('$_POST[$file]','$_POST[$id]')";
header("Location: ../../../gallery.php?id=" . $row[0]); 
die("Redirecting to: admin.php");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nothing after this gets executed
if (!mysql_query($sql,$con))
     ^^^^^^^^^^^^^^^^^^^^^^ this query will never run
   ...

また、SQL インジェクションの問題を回避するために、PDO (または mysqli) と準備済みステートメントに切り替える必要があります。

于 2013-03-06T18:30:52.407 に答える