Razorhawk
Webdesigner und MSP
Ich habe nen kleine Problemchen (naja klein ist gut)
Ich habe mir eine Funktion in einer Klasse geschrieben welche mir alle Verzeichnisse und deren dateien in einem Array speichert! nun hier erstmal die Funktion, denn die werdet ihr brauchen um mein eigentliches problem vielleicht zu verstehen.
So und nun habe ich mit gebruachen dieser Funktion mir einen Code geschrieben, welche mir wie der explorer die Pfade ausgubt und deren Dateien, welche auf dem Server sind.
Wenn man auf einen Pfad klickt, dann kommt auf die darunterliegenden.
zurück kommt man indem man auf den link " ../ " klickt. Dies ist mit einer einfachen history.back() routine gelöst, da ich es einfach nicht als normalen Link hinbekomme.
Es wird wohl daran liegen, dass ich Sessions benutze indem ich die history der pfade benutze. Denn speichere ich sie nicht, dann komme ich nicht wieder zurück, da das script ja nun nicht weiß bzw. merken kann welches der vorher gehende Pfad war!
Mir missfällt meine Lösung mit Sessions.
Wenn sich jemand dies mal angucken würde und es versteht, dann wäre ich dankbar für einen besseren Lösungsansatz. Der hier kommt mir nicht sehr universell vor (ich glaub ich hab zu kompliziert gedacht)
Und ein ganz großes Problem.. auf meine Heim-PHP-Server zeigt er mir unterpfad an wenn ich anklicke, aber hier zeigt er sie mir nicht an (also online)
website zum testen (auf "Gallerie" und dann "Browser" gehen)
So hier der Code:
Ich habe mir eine Funktion in einer Klasse geschrieben welche mir alle Verzeichnisse und deren dateien in einem Array speichert! nun hier erstmal die Funktion, denn die werdet ihr brauchen um mein eigentliches problem vielleicht zu verstehen.
PHP:
class dir_tasks{
function listdir($base,$subfolders=1) {
if($subfolders==1){
// with subfolders
static $filelist = array();
static $fileonlylist = array();
static $dirlist = array();
static $cutdirlist = array();
}else{
// without subfolders
$filelist = array();
$fileonlylist = array();
$dirlist = array();
$cutdirlist = array();
}
if(is_dir($base)) {
$dh = opendir($base);
while (false !== ($dir = readdir($dh))) {
if (is_dir($base ."/". $dir) && $dir !== '.' && $dir !== '..') {
$subbase = $base ."/". $dir."/";
$subbase = str_replace("//","/",$subbase);
$cutdirlist[] = $dir."/";
$dirlist[] = $subbase;
$subdirlist = $this->listdir($subbase,$subfolders);
} elseif(is_file($base ."/". $dir) && $dir !== '.' && $dir !== '..') {
$filelist[] = $base ."/". $dir;
$fileonlylist[] = $dir;
}
}
closedir($dh);
}
$array['dirs'] = $dirlist;
$array['cutbasedirs'] = $cutdirlist;
$array['files'] = $filelist;
$array['filesonly'] = $fileonlylist;
return $array;
}
}
So und nun habe ich mit gebruachen dieser Funktion mir einen Code geschrieben, welche mir wie der explorer die Pfade ausgubt und deren Dateien, welche auf dem Server sind.
Wenn man auf einen Pfad klickt, dann kommt auf die darunterliegenden.
zurück kommt man indem man auf den link " ../ " klickt. Dies ist mit einer einfachen history.back() routine gelöst, da ich es einfach nicht als normalen Link hinbekomme.
Es wird wohl daran liegen, dass ich Sessions benutze indem ich die history der pfade benutze. Denn speichere ich sie nicht, dann komme ich nicht wieder zurück, da das script ja nun nicht weiß bzw. merken kann welches der vorher gehende Pfad war!
Mir missfällt meine Lösung mit Sessions.
Wenn sich jemand dies mal angucken würde und es versteht, dann wäre ich dankbar für einen besseren Lösungsansatz. Der hier kommt mir nicht sehr universell vor (ich glaub ich hab zu kompliziert gedacht)
Und ein ganz großes Problem.. auf meine Heim-PHP-Server zeigt er mir unterpfad an wenn ich anklicke, aber hier zeigt er sie mir nicht an (also online)
website zum testen (auf "Gallerie" und dann "Browser" gehen)
So hier der Code:
PHP:
echo "<div style='top: 55%;'>";
if($plane){echo "<a href='javascript:history.back();'>../</a><br>";}
// für den obersten pfad, da noch nichts in den sessions gespeichert ist
if($subdir==""){
$folders = $dirtasks->listdir($uploadimagedir,0);
$_SESSION['historydir'.$plane][$subdir] = $uploadimagedir;
// wird benutzt wenn Inhalt in Sessions vorhanden
}else{
$folders = $dirtasks->listdir($uploadimagedir,0);
// zusammensetzen des pfades für die darauf folgende eben
for($i=1;$i<=($plane);$i++){
$folders = $dirtasks->listdir($_SESSION['historydir'.$plane][$subdir],0);
}
}
$i=0;
$plane++;
if(!$action){
foreach ($folders['cutbasedirs'] as $folder){
echo "<a href='".$PHP_SELF."?subdir=$i&plane=$plane'>$folder</a> <a href='".$PHP_SELF."?subdir=$i&plane=$plane&action=delete'>Verzeichnis löschen</a><br>";
// pfade werden gespeichert in eine "Session-Array" abhängig von Pfadnummer ($subdir bzw. $i) in der Pfadebene ($plane)
$_SESSION['historydir'.$plane][$i]= $folders['dirs'][$i];
$_SESSION['whichdir'.$plane][$i]= $i;
$i++;
}
}
echo "</div>";