2012-07-04 4 views
1

Я прочитал много тем, рассматривающих этот вопрос, но у меня все еще есть одна и та же проблема. Я не могу понять логику, но я думаю.Отображение изображения в браузере (html/php)

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

до сих пор я нашел коды: echo '';

и они прекрасно работают для других людей, но не для меня

мой код выглядит следующим образом:

<?php 
$con = mysql_connect("localhost","root",""); 

if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("photoshare", $con); 



$Title = $_POST['Title']; 
$Creator = $_POST['Creator']; 



$result = mysql_query("SELECT path FROM images WHERE Title = '$Title' OR Creator = '$Creator'"); 



echo '<img src="' . $result . '" />'; 


//some code 
mysql_close($con); 
?> 

поэтому проблема заключается в том, что изображение не является beign displayed.on другой стороны, отображается значок сломанного изображения. , если я правильно понял ошибку, потому что я не помещаю то, что должен видеть мой HTTP, или что-то в этом роде. Я действительно не знаю его еще.

любая помощь будет оценена :)

Спасибо вам обоим, но то же самое происходит:/ мой загрузить файл имеет следующий вид, я надеюсь, что это помогает:

<?php 
$con = mysql_connect("localhost","root",""); 

if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("photoshare", $con); 


$Image_Title = $_POST['Image_Title']; 
$Image_Creator = $_POST['Image_Creator']; 
$Image_Date = $_POST['Image_Date']; 
$Image_Genre = $_POST['Image_Genre']; 



if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 50000000)) 
    { 
    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("../photo_album/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../photo_album/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "../photo_album/" . $_FILES["file"]["name"]; 
     $path = "photo_album/" . $_FILES["file"]["name"]; 
     $query = "INSERT INTO images (title, creator, date, genre, path) 
     VALUES ('$Image_Title', '$Image_Creator', '$Image_Date', '$Image_Genre', '$path')";  
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 

if (!mysql_query($query, $con)) { 
    die("Error " . mysql_error()); 
} 

?> 
+0

вы можете просто проверить элемент и проверить, если путь является правильным. также вы можете вставить путь, который вы храните в базе данных? –

+0

[SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection) alert! Пожалуйста, прочитайте [этот вопрос] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php) о том, как его исправить, прежде чем идти дальше. – PeeHaa

+0

[mysql_query] (http://php.net/manual/en/function.mysql-query.php) возвращает ** ресурс ** для выбора запроса, из которого вам нужно извлечь результат, используя методы, такие как 'mysql_fetch_assoc() 'или' mysql_fetch_array() ', рассмотрите использование таких методов, как' print_r() 'и' var_dump() ', если вы начинаете с PHP для отладки, а также используйте такие инструменты, как firebug, чтобы облегчить вашу работу, связанную с интерфейсом. – optimusprime619

ответ

6

Вы выполняете запрос, но вы также должны получить результат как массив или как объект.

<?php 
mysql_select_db("photoshare", $con); 

// Use mysql_real_escape_string to protect yourself from SQL injection 
$Title = mysql_real_escape_string($_POST['Title']); 
$Creator = mysql_real_escape_string($_POST['Creator']); 

$result = mysql_query("SELECT path FROM images WHERE Title = '$Title' OR Creator = '$Creator'"); 

$row = mysql_fetch_assoc($result); 

echo '<img src="' . $row['path'] . '" />'; 

Кроме того, вы не избегаете ввода, что открывает вам уязвимости CRITICAL. Используйте mysql_real_escape_string() для любого входящего в поставку пользователя, чтобы этого избежать.

И, наконец, расширение mysql устарело, и вам следует избегать его использования (документы PHP.net перечисляют его как устаревшие). Пожалуйста, подумайте об использовании PDO. Вот ваш код переписан с использованием PDO:

<?php 
$con = new PDO('mysql:host=localhost;dbname=photoshare', 'root', ''); 

if (! $con) { 
    die('Could not connect to the database'); 
} 

$stmt = $con->prepare("SELECT path FROM images WHERE Title = :title OR Creator = :creator"); 
$stmt->bindParam(':title', $_POST['Title']); 
$stmt->bindParam(':creator', $_POST['Creator']); 
$stmt->execute(); 

// Do this to output all found images 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    echo '<img src="' . htmlentities($row['path']) . '" />'; 
} 

// OR do this to output only one image 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
echo '<img src="' . htmlentities($row['path']) . '" />'; 
+0

-1 '$ results ['path']' должен быть '$ row ['path'] ' –

+1

@Random Вы не используете нисходящее число людей для того, чтобы сделать простую ошибку, отредактируйте публикацию или сделайте комментарий. Я предполагаю, что нисходящий союз был таким, чтобы ваш ответ поднялся выше, что крайне плохое отношение. –

+0

Я удалил downvote, но это была не простая ошибка, поскольку OP был отклоняющим ответом –

1
<?php 
    $con = mysql_connect("localhost","root",""); 

    if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("photoshare", $con); 


    $Title = mysql_real_escape_string($_POST['Title']); 
$Creator = mysql_real_escape_string($_POST['Creator']); 



    $result = mysql_query("SELECT path FROM images WHERE Title = '$Title' OR Creator = '$Creator'"); 
    $row=mysql_fetch_assoc($result); 


    echo '<img src="' . $row['path'] . '" />'; 


    //some code 
    mysql_close($con); 
    ?> 
+0

спасибо за ваш ответ :) – user1501764

Смежные вопросы