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, 5056 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 ..
Ähnliche Inhalte
Windows Update
Move Microsoft WSUS Content (1)

Link von Mvinogradac zum Thema Windows Update ...

PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

Windows Update
gelöst WSUS Server: Content: Error:Forbidden (403) (2)

Frage von EDV-Oellerking zum Thema Windows Update ...

PHP
PHP 5.3 nach PHP 5.6 portieren (5)

Frage von nippon-tussi zum Thema PHP ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (26)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (16)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Exchange Server
Apple Mail mit Exchange 2010 verbinden (12)

Frage von DieAzubinne zum Thema Exchange Server ...