Я храню рекламные баннеры в таблице mysql, или я должен сказать только имя файла, например, «imagename.jpg» или «banner3.gif».
Очевидно, я хочу отслеживать, когда эти баннеры загружаются, поэтому я думаю создать php-файл с именем img.php и назвать его так:
<img src="/img/img.php?imageID=3" />
И это вытащит изображение с идентификатором 3 вместе с обновлением моей таблицы совпадений и т. Д.
Я знаю, как обновить таблицу совпадений ... но я пытаюсь понять, как кодировать файл img.php, чтобы он просто извлекал имя файла и выводил его на экран, чтобы он работал как обычное изображение.
Пока у меня есть ...
<?php
header("Content-Type: image/jpeg");
// insert my db connect file
// update the hits table etc
$sql = 'SELECT * FROM ads WHERE id="' . $_GET['imageID'] . '" ';
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$image = '/img/' . $row['file'];
imagejpeg($image);
// and this is where I'm at...
?>
У меня есть некоторые проблемы с приведенным выше кодом, который я извлек из разных мест, чтобы попасть сюда. Изображения могут быть png / gif / jpg, в то время как тип содержимого заголовка, кажется, имеет место только для одного типа.
Есть ли способ, чтобы этот один файл работал нормально для нескольких типов изображений? Я думаю, что я должен сначала запросить таблицу, определить расширение файла, а затем вставить функцию заголовка на основе этого.
Но что я на самом деле делаю, когда у меня есть это право и я хочу, чтобы изображение тогда просто появлялось?
благодаря вашей помощи вот окончательный рабочий файл
<?php
// make sure we're only getting a number for the query b4 doing stuff
if(is_numeric($_GET['imid'])) {
include('thedbfile.php');
$types['jpg'] = 'image/jpeg';
$types['png'] = 'image/png';
$types['gif'] = 'image/gif';
$sql = 'SELECT file FROM ads WHERE id="' . $_GET['imid'] . '" ';
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$image = 'img/banners/' . $row['file'];
$extension = end(explode('.', $row['file']));
header('Content-Type: ' . $types[$extension]);
echo file_get_contents($image);
}
?>