2013-11-11 3 views
0

Я нашел много сообщений, описывающих одну и ту же проблему, но все, что я пробовал, не удалось. Для страницы профиля Я заставляю людей загружать 4 фотографии. Когда изображение отсутствует, я хочу показать изображение по умолчанию. Мой полный код, как это сейчас:PHP-изображение не отображается при использовании <img>

$id = $_GET['ID']; 
$link = mysql_connect("xxx", "xxx", "xxx"); 
mysql_select_db("xxx"); 
$sql = "SELECT * FROM profielen WHERE ID = $id"; 
$result = mysql_query("$sql"); 
$row = mysql_fetch_assoc($result); 
mysql_close($link); 

header("Content-type: image/jpeg"); 

if ($row['Foto4'] == NULL){ 
    //echo '<img src="/img/noImage.jpg" />'; 
    echo $row['Foto5']; 
} 
else { 
    echo $row['Foto4']; 
} 

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

Я пробовал с двойными кавычками, а затем избежал двойных кавычек в теге img. Я также попытался назвать его переменной и без/img-path. А также просто попытался сказать echo «No image», но кажется, что если я делаю что-то еще, кроме echo $ row [x], это просто не работает. Когда я пытаюсь отобразить изображение в HTML, он отлично работает, поэтому имя файла верное.

У меня заканчиваются идеи, так что, может быть, кто-то может помочь?

+4

Расширение mysql лишено ... вы вообще не проверяете или не обрабатываете ошибки ... ваш код позволяет использовать SQL-инъекцию ... – arkascha

+0

Что содержат 'Foto5' и' Foto4'? – rninty

+1

Вы должны выводить двоичный код, а не HTML. – Flukey

ответ

1

Проблема с вашим кодом заключается в том, что вы отправляете HTML-код для вставки изображения обратно, когда действительно вы должны отправлять данные изображения обратно. Вы можете решить эту проблему путем перенаправления пользователя на «noImage.jpg», таким образом, пользователь получит изображение обратно из запроса, и все будет хорошо :)

Код для этого может выглядеть следующим образом:

if ($row['Foto4'] == NULL){ 
    header('Location: /image/noImage.jpg'); 
} else { 
    echo $row['Foto4']; 
} 
+0

Уол, это было глупо от меня, я уже использовал это на другой странице, поэтому я должен был это знать. Большое спасибо! Я был настолько сосредоточен на изображении, что я этого не видел. Вы сэкономили мне много часов поиска :-) – sqlbabe

0

Если вы используете тип контента image/jpeg, браузер ожидает необработанные двоичные данные изображения. Вместо этого вы даете ему HTML-код.

Вместо этого вы можете использовать Location -header, который сообщает браузеру открыть другой адрес.

header("Location: /img/noImage.jpg"); 

Помните, что вы не можете выводить какие-либо другие данные или писать какие-либо другие заголовки, если используете этот метод.

+0

Почему на земле это получилось? –

+0

Я случайно написал 'Redirect:' вместо 'Location:', исправил эту ужасную ошибку. – Atle

+0

А, это слишком плохо. Было бы гораздо полезнее, если бы тайник-downvoter прокомментировал или предложил изменить. :) –

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