• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

alle dateien eines verzeichnisses ausser *.sdm

Status
Für weitere Antworten geschlossen.

Fätzminator

Neues Mitglied
hallo zusammen

der titel sollte schon alles aussagen! diese dateiendung ist für ein programm, dass ich selber geschrieben habe, und darum soll er diese NICHT ausgeben. hier mein script bis jetzt:
[php:1:3ba7763e2c]<?php
$dir = opendir(".");

while ($datei = readdir($dir)) {
if(filetype($datei) != "dir") {
echo $datei . "
\n";
}
}

closedir($dir);
?>[/php:1:3ba7763e2c]
am besten wäre es, wenn sich die dateien sogar noch nach dem dateityp ordnen lassen würden!

mfg, fätzminator
 
Werbung:
moin faetzi, na alles klar? :)

wenn immer du in PHP sortieren willst, musste in nem array zwischenspeichern.

[php:1:73abd69c05]<?php
$vExtensions = array('sdm','xxx','yyy');

$dir = opendir(".");

while ($datei = readdir($dir)) {
if(@filetype($datei) != "dir") {
$ext = substr($datei,strrpos($datei,".")+1);
if (!in_array($ext,$vExtensions)) $sorterArray[$ext][] = $datei;
}
}
closedir($dir);


print_r($sorterArray); // schaun wa mal wie es aussieht, das array :)
ksort($sorterArray);
print_r($sorterArray); // nochmals ausgeben, damit wir den unterschied auch merken!


// und nu geben wir es aus
while (list($key,$val) = each($sorterArray)) {
echo "$key:
";
while (list(,$v) = each($val)) {
echo "$v
";
}
}
?>[/php:1:73abd69c05]

die print_r methoden dienen nur der veranschaulichung, musst natuerlich dann loeschen...
 
joo sieht nicht schlecht aus :wink:
aber warum hast du hier ein "@" gemacht:
[php:1:448039db31]if(@filetype($datei) != "dir") { [/php:1:448039db31]

mfg, fätzminator
 
Werbung:
erstma die theorie: @ unterbindet fehlermeldungen... ich nenn es das "halt-die-schnauze-@" :)

und nun zum konkreten fall: weil filetype($datei) versucht auf die datei zuzugreiffen. wenn du einen gut konfigurierten webserver hast, dann ist eine open_basedir restriction eingestellt. wuerdest du jetzt das hauptverzeichnis ausgeben, versucht PHP somit das verzeichnus unter dem hauptverzeichnis zu befragen, wenn es ".." prueft. somit kriegst du eine fehlermeldung (die du wiederum durch das @ unterbindest)

hoffe das war einigermassen klar? :)
 
ehrlich gesagt hab ich's nur reingehauen weil's bei mir ne fehlermeldung ausgespuckt hat :)
 
Werbung:
*lol* ich will eigentlich sowieso nur den "eigenen" ordner auslesen! ich versuche eben gerade einen kleinen editor für ein paar der php dateien zu machen! dann muss ich nur noch das mit dem einloggen anschauen :wink:

mfg, fätzminator
 
ja, dachte mir schon dass du da sowas auf die beine stellen willst... mom, hier ein vorschlag :)

[php:1:e63a2e5d3c]<?php
$vExtensions = array('sdm','xxx','yyy');

$dir = opendir(".");

while ($datei = readdir($dir)) {
if(@filetype($datei) != "dir") {
$ext = substr($datei,strrpos($datei,".")+1);
if (!in_array($ext,$vExtensions)) $sorterArray[$ext][] = $datei;
}
}
closedir($dir);

?>
<form name="fileChoser">
<input type="hidden" name="key" value="<?=$key;?>">
<select name="file" onChange="document.fileChoser.submit();">
<?
while (list($key,$val) = each($sorterArray)) {
echo "<OPTION value=''> -- $key -- </option>";
while (list(,$v) = each($val)) {
echo "<option value='$v'>$v</option>";
}
}
?>
</select>
</form>[/php:1:e63a2e5d3c]

weisst ja, was das mit dem $key auf sich hat.... :D
 
ich werde es warscheinlich eher so machen vom styl:
statt:
[php:1:9f248d0ba8]echo "$v
";[/php:1:9f248d0ba8]
so:
[php:1:9f248d0ba8]echo "<a href=\"home.php?seite=editor&datei=$v\" class=\"a\">$v</a>
";[/php:1:9f248d0ba8]

und dann eben in der anderen datei ein textfeld anzeigen lassen, und 3 buttons ("zurück","speichern", "wiederherstellen") machen
 
Werbung:
öhm wie meinst du das :roll: ?
oder kannst du mir folgendes helfen:
eben es listet die dateien auf und untendran kommt dieses textfeld? und wenn man auf einen dieser dateinamen klickt, wird der inhalt in diese box geladen?

mfg, fätzminator
 
ja im prinzip ist das doch das selbe wie deine links... hier der code der GENAU das selbe bewirkt wie deine links...

<?php
$vExtensions = array('sdm','xxx','yyy');

$dir = opendir(".");

while ($datei = readdir($dir)) {
if(@filetype($datei) != "dir") {
$ext = substr($datei,strrpos($datei,".")+1);
if (!in_array($ext,$vExtensions)) $sorterArray[$ext][] = $datei;
}
}
closedir($dir);

?>
<form name="fileChoser">
<input type="hidden" name="key" value="<?=$key;?>">
<input type="hidden" name="seite" value="editor">
<select name="datei" onChange="document.fileChoser.submit();">
<?
while (list($key,$val) = each($sorterArray)) {
echo "<OPTION value=''> -- $key -- </option>";
while (list(,$v) = each($val)) {
echo "<option value='$v'>$v</option>";
}
}
?>
</select>
</form>

jetzt ist, nachdem du ne datei ausgewaehlt hast, "seite" => "editor", "datei" => der dateiname zum editieren und "key" => der "key" eben :)

jetzt kannst du mit fopen() usw den inhalt der datei auslesen und in das textfeld eingeben... achtung, beim inhalt der datei vorher noch alle "<" mit "&lt;" ersetzen.
 
Werbung:
jetzt ist das kleinere problem das php....
ich muss jetzt nur noch schaffen, dass erst mal diese datei in dem textfeld angezeigt wird....

EDIT:
öhm noch eine frage.... für was ist das key= :oops: ?
 
Werbung:
klar! ist sicherer... sprich wenn dir jemand mal ueber die schultern schaut wird er ne schwierige zeit haben, sich den md5-hash zu merken :)
 
und vor allem mit brute force.... keine chance :wink:
weil das erste pw das ich dir gegeben habe war 11 zeichen lang und ich habe auch in echt 8-12 stellen! kannst ja mal ausrechnen wie lang man dafür braucht :mrgreen:
 
lange genug um es gar nicht erst probieren ;) mit PHP und ohne rechencluster, uebrigens... koennte mir auch rechenzeit bei nem cluster besorgen, dann hab ich das in 1-2h :)
 
Werbung:
*saeufz* ich bin an der uni, hier kriegen wir sowas gratis :)

**EDIT**: allerdings muesste ich die verantwortlichen von dem sinn des ganzen ueberzeugen :)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben