Bilder so einbinden, dass URL nicht sichtbar ist

HeinerK

Erfahrenes Mitglied
Hallo,

ich suche nach eine guten Möglichkeit Bilder auf meiner Seite
so einzubinden, dass die Bild-URL nicht sichtbar ist.

Was bietet sich da an?

Heiner
 
[phpf]header[/phpf], [phpf]readfile[/phpf], eine Datenbank oder Textfile...
HTML:
<img src="bild.php?id=1" alt="" />
 
Naja, ganz unsichtbar wirst Du den URL nicht kriegen, aber immerhin kannst Du einen direkten Zugriff auf die Bilddatei verhindern indem Du ein Script als Bild angibst.
Mein Script dazu sieht so aus:
PHP:
<?php
require_once('config.php');
$sqldb=new multisql(DBHOSTNAME,DBDATABASE,DBUSERNAME,DBPASSWORD,DBTYPE);
if (!$sqldb->connected())
	{
		die('Database error');
	}
require_once('functions.php');
if ((!empty($_GET['id'])) && (is_numeric($_GET['id'])))
	{
		if (!empty($_GET['type']))
			{
				if (in_array($_GET['type'],array('image','thumb')))
					{
						$type=$_GET['type'];
					}
				else
					{
						$type='thumb';
					}
			}
		else
			{
				$type='image';
			}
		$sqldb->query("select * from `images` where `id`='".quote_string($_GET['id'])."' limit 1");
		if ($sqldb->num_rows()==1)
			{
				$image=$sqldb->fetch_assoc();
				$sqldb->query("select * from `galleries` where `id`='".$image['gallery']."' limit 1");
				if ($sqldb->num_rows()==1)
					{
						$gallery=$sqldb->fetch_assoc();
						header('Content-Type:image/jpeg');
						readfile($type.'s/'.$gallery['gallery'].'/'.$image['filename']);
					}
			}
	}
$sqldb->close();
unset($sqldb);
?>
Die Bilder sind dann aber immer noch direkt aufrufbar, und zwar ueber z.B. imagefile.php?id=4
 
Unsichtbar wirst du den URL nie bekommen, denn ohne URL weiß der Browser nicht, woher die Daten der Grafik zu holen sind.
 
Du könntest die Bilder precachen lassen per Ajax und sobald dies geschehen ist, ein Script loslassen, dass die Datei wieder umbenennt.
Dies wird jedoch bei mehreren Aufrufen gleichzeitig definitiv Probleme erzeugen...
 
[phpf]header[/phpf], [phpf]readfile[/phpf], eine Datenbank oder Textfile...
HTML:
<img src="bild.php?id=1" alt="" />

Hi!

Das habe ich nun schon öfters gehört - und frage mich schon immer, warum man seine Bilder in der Datenbank speichern sollte. Also, wirklich den "body" - nicht nur Infos. Bestimmt gibts da ganz triftige Gründe für, oder? :)

Grüße,
Steffen
 
In der Regel speichert man nur den Pfad des Bildes in die DB.
Die Url kann man nicht vertuschen da fast jeder User eine Rechte Maustaste hat :)
 
Hi!

Das habe ich nun schon öfters gehört - und frage mich schon immer, warum man seine Bilder in der Datenbank speichern sollte. Also, wirklich den "body" - nicht nur Infos. Bestimmt gibts da ganz triftige Gründe für, oder?

Grüße,
Steffen
Nein nein, nur den Pfad zum Bild in der Datenbank speichern, dann mit [phpf]readfile[/phpf] auslesen...


:offtopic:
Arme Mac-User... :D
 
Wenn ich mit einer bild.php die auf readfile(); und header(); basiert und eine bild_id erwartet arbeite ergibt sich aber ein ganz vernünftiges Performance Problem, oder?

Wenn schon, müsste ich ja auch die Thumbnails über dieses Script einbinden. Dann habe ich bei einer Bildergalerie mit beispielsweise 9 Bildern schon 9 Aufrufe der bild.php und damit einhergehend 9 Datenbankabfragen um den passenden Dateinamen zu ermitteln.

Hab ich nen Denkfehler?

Grüße,
Steffen
 
Zurück