Links automatisch erstellen

  • Themenstarter Themenstarter GreenThunder
  • Beginndatum Beginndatum
G

GreenThunder

Hallo,

ich hab mir im Internet einen Code gesucht, der bewirkt, dass ein Verzeichnis durchsucht wird und nur die sich darin befindenden Ordner ausgegeben werden.
Nun hätte ich gerne, dass sie gleich als Links ausgegeben werden, aber ich kriegs nicht hin.

PHP:
<?
$extension = "";
$i=0;
$handle=opendir ('.');
while (false !== ($file = readdir ($handle))) {
$expl = explode(".",$file);
if ($expl[1] == $extension) {
$i++;
$array[$i] = $file;
}
}
closedir($handle);

if ($i > 0) {
sort($array);
while (list ($key, $val) = each ($array)) {
$expl = explode(".",$val);
print "$expl[0]<br>";
}
} else {
print "Keine Ordner in diesem Verzeichniss";
}
?>

Danke für Hilfe.
 
Links auf was? Als Link zum Ordner-öffnen? Dann wirst du wohl in deinen Code eine Parameterabfrage -- am besten per GET -- einbauen müssen, damit dein Skript den jeweiligen Ordner öffnet. Der Link sieht dann z.B. so aus:
Code:
<a href="show.php?dir=blaundblub">blaundblub</a>
Allerdings musst du mit sowas aufpassen. Wenn du das schlecht programmierst, hast du sehr leicht Sicherheitslücken in deinem System.

-Gawayn
 
In den Ordnern sind HTML-Dateien, die dadurch geöffnet werden sollen.
Dachte man muss nur in folgender Zeile was einfügen:

PHP:
print "$expl[0]<br>";
 
Ja, in diese Zeile musst du den Link einbauen. Es ist nur die Frage, wie dann die Dateien geöffnet werden sollen. Wenn das ohne das Skript geschehen soll, muss nur diese Zeile geändert werden. Du hast gesagt, du kommst an dieser Stelle nicht weiter. Wo liegt das Problem?
 
Gawayn hat gesagt.:
Wo liegt das Problem?

Das Problem ist wohl, dass ich nicht wirklich Ahnung von PHP habe ;)
Ich habs ein bissl hinbekommen, aber noch nicht so wie ich es wollte *g*

Also ich hab eine index.php in die die "geöffneten" Ordner "included" werden sollen, aber irgendwie komme ich immer wieder zurück auf die Startseite.

In der index.php hab ich folgendes stehen:

PHP:
case '$expl[0]':  include('$expl[0]/galerie.php');break;

Als Link auf der einzubindenden Seite steht:
PHP:
print "<a href=\"index.php?link=$expl[0]\">$expl[0]</a><br>";

Aber irgendwie klappt es nicht!
 
Zuletzt bearbeitet von einem Moderator:
Das kann so nicht klappen, weil der HTML-Code an einer Stelle eingebunden wird, wo der Interpreter PHP-Code erwartet. Deine Idee könnte nur funktionieren, wenn da die PHP-Tags geschlossen werden, aber dann kann man natürlich keine include-Anweisung mehr hinschreiben. D.h.: Deine Idee kann nicht funktionieren.

Wieso nicht einfach die Datei lesen und ausgeben? Das geht am schnellsten mit der Funktion readfile(). Sie liest die Datei und schreibt sie sofort in den Ausgabepuffer.

-Gawayn
 
Am Besten ist wohl, wenn ich dir mal mein ganzes vorhaben schildere.
Also ich will eine Bildergalerie erstellen. Dazu nutze ich JAlbum. Die Bilder werden ganz einfach und unkompliziert eingebunden. Nun möchte ich aber die Verlinkung zu den verschiedenen Kategorien automatisch erstellen lassen indem die Ordner ausgelesen werden.
Jeder Ordner ist ein Kategorie.
 
Dann musst du das Skript den GET-Parameter auslesen lassen (z.B. $ordner = $_GET["link"]) und dann den entsprechenden Ordner öffnen und wiederum auslesen.
 
Ich meine damit: Dein Skript liest doch bereits jetzt einen Ordner, nämlich das aktuelle, wie in der folgenden Zeile ersichtlich:
Code:
$handle=opendir ('.');
Jetzt willst du aber, dass immer unterschiedliche Ordner gelesen werden. Also gibst du als Link immer etwas aus in dieser Art:
Code:
<a href="index.php?dir=XY>XY</a><br/>
Im Skript fügst du vor dem Lesen des Ordners diese Zeile hinzu:
Code:
$ordner = $_GET["dir"] ;
Damit wird die Variable dir, die ja als GET-Parameter vom Link übergeben wurde, in $ordner gelesen. Jetzt solltest du natürlich noch ein bisschen Error-Checking machen. Dann änderst du die opendir-Zeile so:
Code:
$handle = opendir( $ordner ) ;
Jetzt wird dieser Ordner gelesen und verarbeitet. Voraussetzung hierfür ist natürlich, dass $ordner einen legalen Ordnernamen enthält. Das musst du vorher sicherstellen beim Error-Checking.

-Gawayn
 
Zurück