Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mehrere Bilder mit PHP in Content einfügen

Frage Entwicklung PHP

Mitglied: SamTrex

SamTrex (Level 1) - Jetzt verbinden

11.06.2010, aktualisiert 12.06.2010, 4977 Aufrufe, 4 Kommentare

Es geht darum Bilder in den Content einzubinden die NICHT direkt aus dem Netz erreichbar sind / wie der Download einer geschützren Datei z.B.

Hallo zusammen,
hier erstmal der Stand.

Auf dem Webserver läuft die Domain unter .../user/domain/www/ INHALT
Die Bilder die ich anzeigen möchte liegen unter .../user/domain/hide/ ... > Dieses Verzeichnis ist aus dem Web nicht erreichbar.

Nun das Problem:
Ich möchte gerne eine kleine Galerie haben - kein Akt. Aber es sollen nur angemeldete Benutzer diese Bilder sehen können!
Dachte mir der Weg sei der einfachste....
01.
header("content-type: image/jpeg"); //Mime Type setzen 
02.
$bilder = get_files_from_dir("../hide/fotos/test",true); //Pfade zu den Bildern ermitteln 
03.
foreach ($bilder as $file) { //Pfad für jedes einzelne Bild aufrufen 
04.
	echo '<img src="' . readfile($file) . '"><br><br>'; //Bilder einfach untereinanderausgeben .... 
05.
06.
 
07.
function get_files_from_dir() { //par1 = Pfad; par2 = recrusive (optional) >> Alle gefundenen Bilderpfade in ein Array schreiben 
08.
	$path = func_get_arg(0); 
09.
	$array = array(); 
10.
	$dir = opendir($path); 
11.
	while($content = readdir($dir)) { 
12.
		if($content!="." && $content!=".." && is_dir($path . "/" . $content)) { 
13.
			if(func_num_args()==2 && func_get_arg(1)==true) { 
14.
				$array = array_merge($array, get_files_from_dir($path . "/" . $content)); 
15.
16.
17.
		elseif($content!="." && $content!="..") { 
18.
			array_push($array,$path . "/" . $content); 
19.
20.
	}  
21.
	closedir($dir); 
22.
	return $array
23.
}
... leider kann ich so immer nur ein Bild anzeigen, es sollen aber alle sein!
Hab nun schon den ganzen Abend gegoogelt

Kennt hier wer eine Lösung?
Danke schonmal ...

MfG Sam
Mitglied: kopie0123
11.06.2010 um 23:47 Uhr
Guten Abend!

was kommen denn für Fehlermeldungen?
Arrayinhalte überall korrekt?

Gruß
Bitte warten ..
Mitglied: SamTrex
12.06.2010 um 00:30 Uhr
Hallo,
es kommen gar keine. Der Code funktioniert ja so wie er oben ist.
Allerdings stellt er nur ein einzelnes Bild auf einer Seite dar.

Ich möchte aber mehrere Bilder in einen bestehenden Content einbauen.
Einziger Haken ist halt das ich nicht direkt auf die Bilder zugreifen kann ala: <img scr="....."> sondern sie halt als Binärdaten in einer Variablen liegen.

MfG Sam
Bitte warten ..
Mitglied: dog
12.06.2010 um 03:55 Uhr
Du musst einen sehr netten Browser haben, wenn du tatsächlich ein Bild siehst

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

Hier sagst du, dass der Browser ein Bild erwarten soll.

echo '<img src="

Und hier fängst du dann auf einmal mit HTML an...

Aber gut, du hast zwei Möglichkeiten:

a) Die Bilder in HTML einbetten.
Von der Methode ist praktisch immer abzuraten, da du so eine riesige HTML-Datei bekommst und es nicht jeder Browser mitmacht

b) Erst eine HTML-Seite ausgeben, dann die Bilder laden:

01.
#===== images.php 
02.
<html><body> 
03.
<?php 
04.
 
05.
	function listFilesRecursiveCallback($startDir,$callBackFunction
06.
07.
		if(substr($startDir,-1) == '/'
08.
			$startDir = substr($startDir, 0, -1); 
09.
			 
10.
		$files = glob($startDir.'/*'); 
11.
		 
12.
		foreach ($files as $file) { 
13.
			if(!is_readable($file)) 
14.
				continue
15.
			if(is_dir($file)) 
16.
				listFilesRecursiveCallback($file,$callBackFunction); 
17.
			else 
18.
				$callBackFunction(substr($file, strlen($startDir))); 
19.
20.
21.
	 
22.
	listFilesRecursiveCallback(dirname(__FILE__).'/../images',function($filename) { 
23.
		echo '<img src="file.php?img='.urlencode($filename).'" alt="" /><br/>'
24.
	}); 
25.
 
26.
?> 
27.
</body></html> 
28.
#====== file.php 
29.
<?php 
30.
 
31.
	if(empty($_GET['img'])) { 
32.
		header('HTTP/1.1 400 Bad Request'); 
33.
		exit(0); 
34.
35.
	 
36.
	$filename = urldecode($_GET['img']); 
37.
	 
38.
	if(strpos($filename, "\x00") !== false) { 
39.
		header('HTTP/1.1 400 Bad Request'); 
40.
		exit(0); 
41.
42.
	 
43.
	if(strpos($filename, '..') !== false) { 
44.
		header('HTTP/1.1 400 Bad Request'); 
45.
		exit(0); 
46.
47.
	 
48.
	if($filename[0] == '/')?  
49.
		$filename = substr($filename, 1); 
50.
	 
51.
	$file = dirname(__FILE__).'/../images/'.$filename
52.
	 
53.
	if(!file_exists($file) || !is_readable($file)) { 
54.
		header('HTTP/1.1 404 Not Found'); 
55.
		exit(0); 
56.
57.
	 
58.
	header('Content-Type: image/jpeg'); 
59.
	readfile($file); 
60.
 
61.
?>
(PHP 5.3 Syntax, ungetestet und ausbaufähig)
Bitte warten ..
Mitglied: SamTrex
12.06.2010 um 12:17 Uhr
Hallo dog...

UPS > hast natürlich vollkommen recht > peinlich peinlich .... (Ich glaube es war FF oder Crome > Dieser Halunke)
Danke für den Code, habe es auf meinen abgestimmt und läuft prima! Wusste gar nicht das man das auch so machen kann....
Ich arbeite jetzt zwar schon ein kleines Weilchen mit PHP, aber es ist ja ein nicht wirklich kleines Thema.


DANKE!

MfG Sam
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...