PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In Unbekanntes Verzeichnis springen?



n00kie
07.06.2009, 21:41
Wenn ich jetzt mit PHP in das Verzeichnis "mozilla/firefox/profiles/" wechsel, hab ich dort noch ein angelegtes Nutzerprofil, doch dieses hat ja immer einen unterschiedlichen Namen. Wie wechsel ich nun in dieses Verzeichnis?

VeN0m
07.06.2009, 21:49
Mh... Ich habe gerade wenig Zeit, um das zu prüfen. Wenn ich nicht irre liegen da noch mehr Standardordner, oder? Diese lädst Du in ein Array:



$folders = array("Ordner1","Ordner2");


Nun öffnest Du das Verzeichnis per



$handle = opendir($dir);


$dir erhält natürlich vorher den Wert von dem Verzeichnis, was Du öffnen möchtest (mozilla/firefox/profiles). Und zwar den genauen Pfad.
Dann liest Du das Verzeichnis in einer Schleife aus:



while($file = readdir($dir)) {

if($file != "." AND $file != ".." AND !in_array($file,$folders) AND is_dir($file)) {

$new = $file;

}

}


Die If-Abfrage prüft, ob es sich bei $file um "." oder ".." handelt, was ja die Verzeichnisverweise sind. Außerdem wird geprüft, ob es ein Verzeichnis ist und, ob der Name dieses Verzeichnises _nicht_ in dem Array mit den anderen Ordnernamen vorkommt. Wenn alles zutrifft ist es das Verzeichnis, was Du suchst. Dann das alte Verzeichnis schließen und das neue öffnen:



closedir($handle);
unset($handle);
$handle = opendir($new);


War das das, was Du wolltest?

EDIT: Ach... Wenn ich nicht irre heißt das Verzeichnis immer, wie der angemeldete Nutzer.
Dann geht es auch so. Ich glaube, das geht jedoch entweder nur bei Windows oder nur bei Linux... Bin ich gerade nicht sicher:



$dir = "blabla/mozilla/firefox/profiles/".get_current_user();
$handle = opendir($dir);


Funktion: get_current_user() im PHP-Manual *klick* (http://de2.php.net/manual/de/function.get-current-user.php).

EDIT 2: Du könntest auch per


$win = strtolower(substr(PSP_OS,0,3));

prüfen, ob Win oder Linux installiert ist. Im ersten Fall wäre $win = win. Einfach beide Codes in einer IF-Abfrage je nach OS ausführen... Der Verzeichnispfad wird auch je nach OS durch das Laufwerk erweitert.

n00kie
08.06.2009, 05:16
Oh, sehr hilfreich. Danke.

EDIT: Achja, du täuschst dich. Dieses Verzeichnis hat einen Random Namen und nicht den Namen des angemeldeten Benutzers.

blackberry
08.06.2009, 10:33
In PHP5 gibt es auch die Funktion scandir.
http://de3.php.net/scandir

VeN0m
08.06.2009, 12:40
Naja ScanDir schön und gut. Finde da nur erstmal das Verzeichnis, was Du suchst. Geht genauso gut, mit Readdir und den Bedingungen, die ich genannt habe.
Aber mit Scandir würde es vielleicht einfacher. So in etwa:



<?php

$dir = "/mozilla/firefox/profiles";
$folders = array("Soll nicht vorkommen","auch nicht","eben so wenig");
$files = scandir($dir);

foreach($files AS $datei) {

if($datei != "." AND $datei != ".." AND !in_array($datei,$folders) AND is_dir($file)) {

$found = $datei;

}

}

print "The name of the folder you looked for is&nbsp;".$found."!";

?>


Ob das nun komfortabler ist oder eher nicht wäre so eine Frage. Ich würde aber wohl die zweite Methode bevorzugen. Danke BlackBerry, die Funktion kannte ich noch nicht :).

n00kie
08.06.2009, 12:57
Okay, werde ich heute mal ausprobieren. (:

wacked
08.06.2009, 13:13
der name ist iwo in der registry und in der profiles.ini

n00kie
08.06.2009, 13:43
Joa, steht in der profiles.ini:


[Profile0]
Name=default
IsRelative=1
Path=Profiles/xxxx.default


In der registry hab ich bisher nichts gefunden.