2011-01-29 4 views
0

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

Вам нужно будет указать код. –

+0

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

ответ

1

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

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

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

$image_caption = mysql_real_escape_string($_POST['image_caption']); 
0

не должен быть ваш образ ЦСИ:

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

СРК должен быть относительно того, где сценарий.

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