Ordnerinhalt einlesen aber nur Ordner anzeigen

real-insanity

Erfahrenes Mitglied
Moinsn,
also ich habe folgendes Skipt mal geschrieben.. will das nu aber umstrukturieren d.h. das Skript an sich soll bleiben nur davor sowas wie ne auflistung der ordner, wenn man dort dann drauf klickt dann soll das folgende Skript ausgeführt werden:
Und wie bekomme ich die filesize am besten in die erste IF-Scheife ? vllt mit nem versteckten Formulareintrag?

also ich meine das so:

Man geht auf Picz inner link liste und man bekommt die ordner angezeigt:

- Delta Duisburg
- Delta Essen
etc...

klickt man auf einen Ordner drauf
soll der das script oben abarbeiten.

Also ich habe einen Ordner (Images) wo meherer Unteordner sind (der soll als erstes ausgelesen werden nur ordner) die dann mit PHP beim Link Picz anzeigen und sobald man auf einen ordner klickt soll er das skirpt halt von oben abarbeiten....

ich hoffe das war verständlich genug xD

PHP:
<?php
$dir="images/ich/";



if (isset($_REQUEST['img'])){
	echo "<div class='tdueberschrift'>".$_REQUEST['img']." | ".round($filesize,2)." kB</div>";
	echo "<br><input type='text' class='input' width='320' maxlength='320' value='".$_SERVER['SERVER_NAME']."/".$dir.$_REQUEST['img']."'><br>";
	echo "<img src='".$dir.$_REQUEST['img']."' width='320' height='240px' alt='".$_REQUEST['img']."'>";
	
	echo "<br><a href='?section=Picz'>&laquo; Zurück</a>";}
else{
	echo '<table border="0" width="100%">';
	if (is_dir($dir)) {
	   if ($dh = opendir($dir)) {
	       while (($file = readdir($dh)) !== false) {
			if (($file!=".") and ($file!="..") and ($file!=".DS_Store")) { 
				$ausgabe=stat($dir.$file);
				$filesize=(filesize($dir.$file))/1024;
		 		echo '<tr class="hover">';
				echo '<td align="center" width="36"><img src="images/icons/picture.ico"></td>';
				echo '<td width="20%">'.$file.'</td>';
				echo '<td align="center" width="30%">'.date("d.m.Y - H:i",$ausgabe[8]).'</td>';
				echo '<td align="center" width="30%">'.round($filesize,2).' kB</td>';
				echo '<td align="right" width="*"><a href="index.php?section=Picz&img='.$file.'"> Ansehen </td>';
				echo "</tr>\n";
			}
	       }
	       closedir($dh);
	   }
   }
   echo '</table>';
}
//}

?>

wäre cool wenn ihr mir vllt. nen paar denk anstöße oder vllt auch lösunghilfen anbieten könntet
 
Du liest das Root Verzeichnis ein und gibst nur aus, wenn [phpf]is_dir[/phpf] true zurückgibt.
Die gibst du als Links an, und gehst dann entsprechend in die Subverzeichnisse, wo du dann ganz gewohnt auslesen kannst.
 
Wenn das dein Rootordner deiner Bilder ist, dann ja ;)

Also ich dachte das so:

Pics
--Rootdir wird ausgelesen
----Subdirs werden angezeigt
------Subdir wird ausgelesen und Bilder angezeigt
 
pkay habe das jetzt auf folgendem Wege gelöst:
PHP:
<?php
$dir="images/pics/";


if (isset($_REQUEST['img']) AND isset($_REQUEST['img'])){
	echo "<div class='tdueberschrift'>".$_REQUEST['img']." | ".$_POST['kb']." kB</div>";
	echo "<br><form><input type='text' class='input' size='51' maxlength='320' value='".$_SERVER['SERVER_NAME']."/".$dir.$_REQUEST['dir']."/".$_REQUEST['img']."'></form><br>";
	echo "<img src='".$dir.$_REQUEST['dir']."/".$_REQUEST['img']."' width='320' height='240px' alt='".$_REQUEST['img']."'>";
	
	echo "<br><a href='?section=Picz'>&laquo; Zurück</a>";
}
elseif(isset($_REQUEST['dir'])){
	echo '<table border="0" width="100%">';
	if (is_dir($dir.$_REQUEST['dir'])) {		
	   if ($dh = opendir($dir.$_REQUEST['dir'])) {
	       while (($file = readdir($dh)) !== false) {
			if (($file!=".") and ($file!="..") and ($file!=".DS_Store")) { 
				$ausgabe=stat($dir.$_REQUEST['dir']."/".$file);
				$filesize=(filesize($dir.$_REQUEST['dir']."/".$file))/1024;
		 		echo '<tr class="hover">';
				echo '<td align="center" width="36"><img src="images/icons/picture.ico"></td>';
				echo '<td width="20%">'.$file.'</td>';
				echo '<td align="center" width="30%">'.date("d.m.Y - H:i",$ausgabe[8]).'</td>';
				echo '<td align="center" width="30%">'.round($filesize,2).' kB</td>';
				echo '<td align="right" width="*"><a href="index.php?section=Picz&dir='.$_REQUEST['dir'].'&img='.$file.'"> Ansehen </td>';
				echo '</tr><form action="index.php?section=Picz&dir='.$_REQUEST['dir'].'&img='.$file.'" method="post" class="formular">';
				echo '<input type="hidden" value="'.round($filesize,2).'" name="kb"></form>';
				
			}
	       }
	       closedir($dh);
	   }
   }
   echo '</table>';
}
else{
echo '<table border="0" width="100%">';
	if (is_dir($dir)) {		
	   if ($dh = opendir($dir)) {
	       while (($file = readdir($dh)) !== false) {
			if (($file!=".") and ($file!="..") and ($file!=".DS_Store")) {
				if(is_dir($dir.$file)){ 
					$ausgabe=stat($dir.$file);
					$filesize=(filesize($dir.$file))/1024;
			 		echo '<tr class="hover">';
					echo '<td align="center" width="36"><img width=16 height=16 src="images/icons/dir.ico"></td>';
					echo '<td width="20%">'.$file.'</td>';
					echo '<td align="center" width="30%">'.date("d.m.Y - H:i",$ausgabe[8]).'</td>';
					echo '<td align="right" width="*"><a href="index.php?section=Picz&dir='.$file.'"> Ansehen </td>';
					echo '</tr><form action="index.php?section=Picz&dir='.$file.'" method="post" class="formular">';
				}
			}
	        }
	       closedir($dh);
	   	}
   	echo '</table>';
	}
}

?>

gibts da vllt noch die möglichkeit Wasserzeichen einzufügen?! also in die Bilder?!
 
Ja kannst du.

Hier ist ja das Script aus dem Tutorial:
PHP:
<?php
// Header setzten
header('Content-type: image/jpeg');
// Bilder laden
$imgsrc = imagecreatefromjpeg('natur.jpg');
$imgzeichen = imagecreatefromjpeg('wasserzeichen.jpg');
// Bild Infos
$width = imagesx($imgsrc);
$height = imagesy($imgsrc);
// Bilder erzeugen
$img = imagecreatetruecolor($width, $height);
// Bild einfügen
imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
// Wasserzeichen einfügen
imagecopy($img, $imgzeichen, 0, 0, 0, 0, 150, 30);
// Bild anzeigen
imagejpeg($img);
// Speicher freigeben
imagedestroy($img);
?>

Interessant ist für dich in diesem Falle nur die Stelle, wo das Wasserzeichen eingefügt wird:
PHP:
// Wasserzeichen einfügen
imagecopy($img, $imgzeichen, 0, 0, 0, 0, 150, 30);
Die [phpf]imagecopy[/phpf] Funktion hat einige Parameter zum übergeben, uns interessiert jetzt nur der 3. und 4.
dst_x

x-coordinate of destination point
dst_y

y-coordinate of destination point

Da es momentan auf 0, 0 gesetzt ist, befindet er sich also links oben. Wir wollen ihn nun rechts unten haben. Die Breite und Höhe des Bildes haben wir ja, also benutzen wir nun diese.
PHP:
// Wasserzeichen einfügen
imagecopy($img, $imgzeichen, $width, $height, 0, 0, 150, 30);
Nun wäre das Bilder allerdings nicht mehr zu sehen, da es erst in der rechten unteren Ecke anfängt. Die Lösung ist simpel, wir ziehen einfach die Bildgröße des Wasserzeichens von dem Bild ab.
PHP:
// Wasserzeichen einfügen
imagecopy($img, $imgzeichen, $width - 150, $height - 30, 0, 0, 150, 30);

Und so sollte das ganze funktionieren ;)
 
Hey cool danke klappt sogar (:

sry wenn ich vllt nerve, aber da ist ja ne Bildergallerie ist, kann ich das ja net immer auf ein Bild machen lassen, kann man das dynamisch auch machen?! ^^ich habs mal versucht klappt aber i-wie nicht so ganz.

wt.php:
PHP:
<?php
$dir="/images/pics/";
echo "<img src='watermark.php?dir=".$dir.$_REQUEST['dir']."&img=".$_REQUEST['img']."'>";
?>

watermark.php:
PHP:
<?php
header('Content-type: images/jpeg');

$dir="/images/pics/";
$imgsrc = imagecreatefromjpeg('../".$dir.$_REQUEST['dir']."/".$_REQUEST['img']."');
$imgzeichen = imagecreatefrompng('../images/wasserzeichen.png');

$width = imagesx($imgsrc);
$height = imagesy($imgsrc);

$img = imagecreatetruecolor($width, $height);

imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);

// alt: imagecopy($img, $imgzeichen, 295, 315, 0, 0, 150, 30);
imagecopy($img,$imgzeichen,$width-150,$height-25,0,0,150,30);
imagejpeg($img);
imagedestroy($img);
?>

vllt hab ich auch einfach nrun denkfehler :D
 
Zuletzt bearbeitet:
Zurück