Загрузить картинку с проблемами php? - PullRequest
0 голосов
/ 29 января 2011

так что я только изучаю PHP и пытаюсь сделать так, чтобы вы могли загрузить картинку.При попытке сделать это на локальном хосте все, что я получаю, - это изображение листа бумаги, разорванного пополам (это должна быть какая-то ошибка / картина замены).Каталог для изображения правильный, просто он не отображается должным образом.спасибо

код:

<?php
//connect to the database
$link = mysql_connect("localhost", "root", "root")
  or die("Could not connect: " . mysql_error());
mysql_select_db("images", $link)
  or die (mysql_error());

//make variables available
$image_caption = $_POST['image_caption'];
$image_username = $_POST['image_username'];
$image_tempname = $_FILES['image_filename']['name'];
$today = date("Y-m-d");

//upload image and check for image type
//make sure to change your path to match your images directory
$ImageDir ="/Users/JohnSmith/Desktop/images/";
$ImageName = $ImageDir . $image_tempname;

if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
                   $ImageName)) {

  //get info about the image being uploaded
  list($width, $height, $type, $attr) = getimagesize($ImageName);

      switch ($type) {
    case 1:
      $ext = ".gif";
      break;
    case 2:
      $ext = ".jpg";
      break;
    case 3:
      $ext = ".png";
      break;
    default:
      echo "Sorry, but the file you uploaded was not a GIF, JPG, or " .
           "PNG file.<br>";
      echo "Please hit your browser's 'back' button and try again.";
  }

   //insert info into image table

  $insert = "INSERT INTO images
            (image_caption, image_username, image_date)
            VALUES
            ('$image_caption', '$image_username', '$today')";
  $insertresults = mysql_query($insert)
    or die(mysql_error());

  $lastpicid = mysql_insert_id();

  $newfilename = $ImageDir . $lastpicid . $ext;

  rename($ImageName, $newfilename);

}

?>

<html>
<head>
<title>Here is your pic!</title>
</head>
<body>

<p>Here is the picture you just uploaded to our servers:</p>
<img src="Users/AdamAshwal/Desktop/images/<?php echo $lastpicid . $ext; ?>" align="left">
<strong><?php echo $image_name; ?></strong><br>
This image is a <?php echo $ext; ?> image.<br>
It is <?php echo $width; ?> pixels wide
and <?php echo $height; ?> pixels high.<br>
It was uploaded on <?php echo $today; ?>.
</body>
</html>

Ответы [ 2 ]

1 голос
/ 29 января 2011

Изображение не отображается, потому что ваш рабочий стол не является общедоступным рутом. Создайте каталог в своем приложении, чтобы хранить загруженные изображения и отображать их оттуда.

Ответ JMC Creative тоже правильный - теги ваших изображений, кажется, не ищут нужное место для загруженных изображений.

Кстати, у вас есть очень очевидная уязвимость SQL-инъекций в предоставленном вами примере кода. Все пользовательские данные, которые хранятся в базе данных, должны быть обработаны с помощью mysql_real_escape_string. См. этот комикс XKCD для юмористического объяснения. Вот пример:

$image_caption = mysql_real_escape_string($_POST['image_caption']);
0 голосов
/ 29 января 2011

Не должно ли быть ваше изображение:

<img src="/Users/JohnSmith/Desktop/images/<?php echo $lastpicid . $ext; ?>">

Src должен быть относительно того, где находится скрипт.

И не используйте align="left" в теге html, вместо этого используйте css.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...