Verzeichnis auslesen - nur gif und jpg ausgeben.

Es werden mir immer noch alle dateien und verzeichnisse angezeigt.. net nur gifs und jpg. =(

PHP:
<?php 


include("bild.inc.php"); 


$anzahlBilder= 0; 
$liste = array();
$verzeichnis = opendir($bild_verzeichnis);
	while($dateiname = readdir($verzeichnis)){
	 $liste[] = $dateiname;
	}

	if (is_dir($bild_verzeichnis)) {
		$liste = scandir($bild_verzeichnis);
	}

	for ($i=0; $i<count($liste); $i++) {
		if (!is_dir($bild_verzeichnis . $dateiname[$i])) {
			$letzterPunkt = strrpos($dateiname[$i],".");
		$endung = substr($dateiname[$i],$letzterPunkt);
		$allowedTypes = array(".gif",".jpg");
		if ( in_array($endung,$allowedTypes) ) {
				$anzahlBilder++;
			}

	}
}
closedir($verzeichnis);
?>

<html>
<head>
<title>Bildliste</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<h1>Bilder auflisten</h1>
<table border="1" cellpadding="5">

<?php
for($i=0;$i<count($liste);$i++){
	$dateiname = $liste[$i];

	echo '<tr>';
	echo '<td>'.($i+1).'</td>';
	echo '<td>'.$dateiname.'</td>';
	echo '</tr>';

}
?>

</table>

<br>
<br>
<a href="info.php">Formatanalyse</a>
</body>
</html>



bild.inc.php
PHP:
<?php

$bild_verzeichnis = "images/";

?>
 
is nur ne beispiel funktion...
anwendung -> "r_dir('pfad/zu/images');"
die func gibt dann alle dateien in dem ordner und allen unterordnern aus.
wenn du nur die dateien aus dem verzeichnis willst entferne:
PHP:
else
{
r_dir($path . "/" . $file);
}

PHP:
function r_dir($path)
{
    $dir=opendir ($path);
    while ($file=readdir($dir))
    {
        if ($file != "." && $file != "..")
        {
            if (!is_dir($path . "/" . $file))
            {
				$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(gif|jpg|jpeg|png)$/ix';
				if (!preg_match($p, $file))
				{
					echo 'kein bild: ';
				}
				echo($path . "/" . $file)."<br>";
			}
			else
			{
				r_dir($path . "/" . $file);
			}
        }
    }
    closedir($dir);
}

jedoch bin ich mir grade nich 100% sicher ob das pregmatch auch 100% geht ^^
 
wie wär's mit ...
while($file=readdir($handle))
{
if (!is_dir($file) && (strpos($file,".jpg") || strpos($file,".gif"))
echo $file . "\n";
}

Du prüfst ja mit ...

if ( in_array($endung,$allowedTypes) ) {
$anzahlBilder++;

nur die Endung und inkrementierst die Anzahl der Bilder. Da fehlt in der if-schleife allerdings das speichern des zutreffenden filenames.
 
Hab nun noch was dazu getan aber auch das tut nicht...
es sollen 10 bilder angezeigt werden. bzw. Die Namen dazu.
und dann per weiter soll man auf die zweite Seite kommen.

Aber auch das tut nicht.

Und mein erstes Prob hab ich auch noch net wirklich gelöst.. =(

Aktueller Stand ist:
PHP:
<?php include("bild.inc.php"); 

$liste = array();
$anzahlDateien = 0;
$anzahlBilder = 0;
$verzeichnis = opendir($bild_verzeichnis);
while($dateiname = readdir($verzeichnis)){
	 $liste[] = $dateiname;
	
	 		for ($i=0; $i<count($liste); $i++) {
				if (!is_dir($bild_verzeichnis . $liste[$i])) {
				$anzahlDateien++;
			
				$letzterPunkt = strrpos($liste[$i],".");
				$dateiname = substr($liste[$i],0,$letzterPunkt);
				$endung = substr($liste[$i],$letzterPunkt);
				$allowedTypes = array(".gif",".jpg");
		
		
		if ( in_array($endung,$allowedTypes) ) {
			$anzahlBilder++;
			$bilder[] = $bild_verzeichnis . $liste[$i];
					}
	}
}

}



closedir($verzeichnis);
?>

<html>
<head>
<title>Bildliste</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<h1>Bilder auflisten</h1>
<table border="1" cellpadding="5">

<?php
for($i=0;$i<count($liste);$i++){
	$dateiname = $liste[$i];

	echo '<tr>';
	echo '<td>'.($i+1).'</td>';
	echo '<td>'.$dateiname.'</td>';
	echo '</tr>';

}
?>

</table>
<?php 

$minWert = 32;
$maxWert = 127;
$laenge = 10;

$start = isset($_GET['start']) ? $_GET['start'] : $minWert;

$start = max($start,$minWert);

$start = min($start,$maxWert);

$ende = $start + $laenge;
$ende = min($ende,$maxWert);

$linkVor = $_SERVER['PHP_SELF'] . "?start=" . $ende;
$linkZurueck = $_SERVER['PHP_SELF'] . "?start=" . ($start - $laenge);


	if ( $start > $minWert ) { 
		echo '<a href="' . $linkZurueck . '">zurück</a>';
	} 
	if ( ($start > $minWert) && ($ende < $maxWert) ) {
		echo " | ";
	}
	if ( $ende < $maxWert ) { 
		echo '<a href="' . $linkVor . '">weiter</a>';
	}
?>

<br>
<br>

<a href="info.php">Formatanalyse</a>
</body>
</html>
 
Mmh, schau dir mal die glob()-Funktion an, mit der bekommst du das ohne viel Gewurstel auf dem Dateisystem mit einer Handvoll Codezeilen hin.
 
Das tolle bei der Sache ist dass der Dozent auch ein Verzeichnis mit nem Namen
"verzeichnis.jpg" in das Verzeichnis zu den Bildern hat.

Nach ner endung .jpg zu suchen macht so ziemlich gar keinen Sinn.. *krise krieg*
 
Code:
while($dateiname = readdir($verzeichnis)){
     $liste[] = $dateiname;
    
             for ($i=0; $i<count($liste); $i++) {

Warum die for-schleife innerhalb der while? Das macht keinen Sinn. Außerdem speicherst du in $liste immer noch ALLE DATEINAMEN!!! (oben schon erwähnt) :rolleyes:

Nach ner endung .jpg zu suchen macht so ziemlich gar keinen Sinn.. *krise krieg*

Doch macht schon Sinn, nur muss man eben prüfen, ob es sich um ein Verzeichnis handelt oder nicht.
 
mh...
mich persönlich würde jetz noch was recht interessantes interessieren... oO
wie kann man eigentlich eine datei (hier: bild) auf seine echtheit überprüfen?
wir haben ja hier eifach nur dateien mit der !endung! gif/jpg geholt...
wie kann man denn prüfen ob es sich wirklich um eine bilddatei handelt?

in der programmierung muss man ja immer vom größten DAU ausgehen, somit bestände ja auch die möglichkeit das ein benutzer eine datei "textinhalt.gif" nennt obwohl text drin ist (auch wenns jetz unwahrscheinlich klingt ^^).

wie kann man also die "echtheit" einer datei überprüfen?
 
Original von bLaCk-DrAg0n
mh...
mich persönlich würde jetz noch was recht interessantes interessieren... oO
wie kann man eigentlich eine datei (hier: bild) auf seine echtheit überprüfen?
wir haben ja hier eifach nur dateien mit der !endung! gif/jpg geholt...
wie kann man denn prüfen ob es sich wirklich um eine bilddatei handelt?

in der programmierung muss man ja immer vom größten DAU ausgehen, somit bestände ja auch die möglichkeit das ein benutzer eine datei "textinhalt.gif" nennt obwohl text drin ist (auch wenns jetz unwahrscheinlich klingt ^^).

wie kann man also die "echtheit" einer datei überprüfen?

ähm am file header?
 
Zurück
Oben