Я храню все свои изображения за рутом (до /var/www/
), что означает, что веб-сервер не может отправить заголовки кэша обратно для моих изображений. Что мне нужно добавить к этому, чтобы веб-кеш пользователя работал? В настоящее время этот браузер каждый раз сталкивается с этим.
Мой <img>
путь на моих страницах выглядит примерно так:
<img src="pic.php?u=1134&i=13513&s=0">
Редактировать: Может ли быть так, что "pic.php?u=1134&i=13513&s=0
" не является допустимым именем файла или чем-то еще?
// pic.php
<?php
// open the file in a binary mode
$user = $_GET['u'];
$id = $_GET['i'];
$s = $_GET['s'];
if (!isset($user) && !isset($s) && $isset($id))
{
// display a lock!
exit(0);
}
require_once("bootstrap_minimal.php"); //setup db connection, etc
// does this image_id belong to the user?
$stmt = $db->query('SELECT image_id, user_id, file_name, private FROM images WHERE image_id = ?', $id);
$obj = $stmt->fetchObject();
if (is_object($obj))
{
// is the picture is the users?
if ($obj->user_id != $_SESSION['user_id'])
{
// is this a private picture?
if ($obj->private == 1)
{
// check permissions...
// display a lock in needed!
}
}
}
else
{
// display a error pic?!
exit(0);
}
if ($s == 0)
{
$picture = $common->getImagePathThumb($obj->file_name);
}
else
{
$picture = $common->getImagePath($obj->file_name);
}
// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($picture));
$fp = fopen($picture, 'rb');
// dump the picture and stop the script
fpassthru($fp);
exit;
?>