Ich habe eine PHP-Bildergalerie erstellt, die alle Unterverzeichnisse des "pics" -Ordners auflistet und nach dem Klicken das erste Bild im Ordner mit einem Link zum vorherigen anzeigt und nächste Fotos. Wenn es die Unterverzeichnisse des Ordners "Bilder" in Zeile 20 auflistet, wird nichts zurückgegeben. Außerdem zeigen die nächsten und vorherigen Links immer die Links zur Albums-Seite anstelle des nächsten Bildes an.PHP opendir() öffnet kein Unterverzeichnis
Was habe ich falsch gemacht? Irgendwelche Kritiken meines Codes würden auch geschätzt werden.
<?
//Return the contents of a folder which are images as an array
function dirContents($folder){
if ($handle = opendir($folder)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && !is_dir($file) && (pathinfo($file,PATHINFO_EXTENSION) == 'jpg')) {
$contents[] = $file;
echo "$file</br>";
}
}
closedir($handle);
}
return $contents;
}
if (!isset($_GET['album'])){
//List all the albums from the pics folder
echo '<div class="subhead">Albums</div>';
echo '<ul>';
if ($handle = opendir("./pics")) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && is_dir($file)) {
echo '<li><a href="?page=gallery&album='.$file.'&i=0">'. $file. '</a></li>';
}
}
echo '</ul>';
closedir($handle);
}
}
else{
// Include some input validation here to see if $album is actually a subfolder of pics
$album = $_GET['album'];
if (!isset($_GET['i']))
$i = 0;
else
$i = $_GET['i'];
$ip = $i-1;
$in = $i+1;
$images = dirContents($album);
$len = count($images);
echo "<div class=\"subhead\">$album, Num photos = $len</div>";
echo '<div class="viewer">';
if ($ip < 0)
echo '<a href="?page=gallery">Albums</a>';
else
echo "<a href=\"?page=gallery&album=$album&$ip\">Albums</a>";
echo "<img src=\"$album\\$images[$i]\" />";
if ($in >= count($album))
echo '<a href="?page=gallery">Albums</a>';
else
echo "<a href=\"?page=gallery&album=$album&$in\">Next</a>";
echo '</div>';
}
echo 'All images appear here with the given consent of those persons that appear within them';
?>
Sie können, indem Sie 'dirname (__ FILE __)' (oder '__DIR__', wenn Sie mit 5.3+), um das Verzeichnis der aktuellen Datei erhalten –
Wenn ich PATH_SEPARATOR verwenden, ist es ein Semikolon gibt ';'. So bekomme ich die Warnung: 'Warnung: opendir (C: \ php; Bilder, C: \ php; Bilder): Das System kann die angegebene Datei nicht finden. (Code: 2) in C: \ php \ gallery.php in Zeile 21 ' –
@Jonno_FTW Sorry, ich habe meine Antwort aktualisiert. –