Någon som vet??
Hoppas ni förstår mitt problem.
Finns det något enkelt sätt??
Ska man ner på servernivå?
Isåfall hur??
MVH
9 svar · 342 visningar · startad av mhedda
Hej!
Jag undrar hur man säkerhetskollar en bild om man har fått tillgång till hela länken till bilden, tex http://www.bild.com/bilder/bild.jpg
Som det är nu så sätter jag en session vid inloggning så att man bara skall kunna se vissa sidor när man är inloggad.
Men man kan ju se bilder vid hela sökvägg.
Så hur kan man skydda bilderna med hjälp av min session.
MVH
Någon som vet??
Hoppas ni förstår mitt problem.
Finns det något enkelt sätt??
Ska man ner på servernivå?
Isåfall hur??
MVH
Kan man kanske använda session för att kolla om man har behörighet till bildmappen på något sätt kanske??
Någon som vet?
Någon som är händigare på detta än vad jag är :-)
MVH
Två lösningar jag kan komma på är följande:
Tackar för svaret!
Om man tänker sig svar 1.
----------------------------------------------------------------------------------
MVH
Jag har gjort så här
session_start();
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
if (!$_SESSION['forum_user_id'])
{
print "sorry!!!!";
exit;
}
$user_pic = "$spara_bilder/$picture";
$image_info = getimagesize ("$user_pic") or die ("$user_pic");
if ($image_info[2] == '2')
{
Header("Content-Type: image/jpeg");
$im = @imagecreatefromjpeg($user_pic);
ImageJPEG($im);
}
else
{
Header("Content-Type: image/gif");
$im = @imagecreatefromgif($user_pic);
ImageGIF($im);
}
och för att hämta en bild skriver jag <img src="http://www.doman.com/bild.php?picture=4">
Ovanstående hjälper ju inte om någon får reda på direktlänk till filerna av någon som är inloggad... dock borde ju sabbacus alternativ fungera.. dock så ska det vara segt att lägga in filer i db'n...
Så det är inte så lätt att skydda bilder.
Finns det inget smidigt sätt att använda befintlig session till att neka åtkomsten till bildmappen om inte session finns??
Jag tror nämligen inte det går att lägga in filerna i ms-sql som jag använder.
Någon som har en smidig lösning på detta problem.
MVH
Som sabbacus föreslår, lägg dina biler i en katalog utanför webbroten, eller om du inte har tillgång till det i en katalog med ett namn som är väldigt svårt att prova sig fram till.
Sedan sparar du bildnamn och mime-typ i databasen (det senare om inte alla är JPEG).
Sen bygger du upp länkar till bilderna typ
<img src="visabild.php?id=42">
I skriptet visabild.php lägger du först en inloggningskontroll och sedan kan du göra något på det här hållet
$path = 'sökväg_till_bilderna';
$sql = "SELECT bildnamn, mimetyp FROM tabell WHERE id=".intval($_GET['id']);
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_assoc($result);
header("Content-type: ".$row['mimetyp']);
header("Content-Disposition: inline; filename=".$row['bildnamn']);
$fp = fopen($path.'/'.$row['bildnamn'], "rb");
fpassthru($fp);
}
exit;
Tackar för svaren jag ska testa imorgon..
MVH