Verzeichnis erstellen
sevi
- php
Hallo zusammen
ich möchte, dass auf meiner Homepage Verzeichnisser erstellt werden können. Und zwar möchte ich, dass man über ein Formular den Verzeichnisnamen bestimmen kann.
Ich habe es mal so weit geschafft, dass ich ein Verzeichnis erstellen kann, dessen Name ich nicht über ein Formular eingebe. Sieht so aus:
<?
mkdir ("verzeichnis" , 0777);
?>
Nun möchte ich, da bei verzeichnis der Wert aus dem Formular steht. Also man soll über ein Formular den Namen des Verzeichnis bestimmen können. Kann mir jemand helfen?
Danke schon im Voraus
Grüsse, Sevi
Huhu Sevi
ich möchte, dass auf meiner Homepage Verzeichnisser erstellt werden können. Und zwar möchte ich, dass man über ein Formular den Verzeichnisnamen bestimmen kann.
ich rate mal, dass Du als nächstes möchtest, dass der Besucher auch Dateien in das neu erstellte Verzeichnis hochladen kann.
Nun möchte ich, da bei verzeichnis der Wert aus dem Formular steht. Also man soll über ein Formular den Namen des Verzeichnis bestimmen können. Kann mir jemand helfen?
aus dem hier folgere ich, dass Du Dich erst seit relativ kurzer Zeit mit der Materie beschäftigst.
Dann schau Dir erstmal folgendes an
http://php-faq.de/
Es ist sehr gefährlich, wenn man den Usern ermöglicht beliebige
Dateien auf den Server zu laden, vor allem wenn man noch keinen guten Überblick hat was alles möglich ist.
Such z.B. mal im Archiv nach PHP-Tester.
Viele Grüße
lulu
Es war nicht die Frage, ob es sicher ist oder nicht. Ich habe den vollen Überblick. Wahrscheinlich weisst du die Lösung nicht, und möchtest die Leute auf dich aufmerksam machen, weil du häufig ins forum schreibst, aber hast du auch wirklich Ahnung davon? Wenn du Ahnung davon hättest, dann hättest du mir mein Problem lösen können
hi sevi
nanana nich gleich so forsch :)
aber bisschen hat lulu schon recht. Das ist nämlich keine schwierige Sache und wenn man "den vollen Überblick hätte" dann kommt man da sehr schnell drauf. Wie dem auch sei. bevor ich dich auch verärgere hier die Kurzform der Lösung:
Kern der datei (html) die das Formular enthält:
<form name="test" action="dir.php" method="post">
<input type="text" name="folder"><input type="submit" name="submit" value="OK">
</form>
Kern der "dir.php":
<?php
mkdir ( "$folder", 777);
?>
Abwandlungen und Änderungen sind natürlich möglich.
Zur Erklärung: das Inputtextfeld "folder" mit dessen Inhalt stellt auch gleicheitig die Variable für die Aufgerufene Funktion dar
MFG
Ralf Heumann
Hoi,
Zur Erklärung: das Inputtextfeld "folder" mit dessen Inhalt stellt auch gleicheitig die Variable für die Aufgerufene Funktion dar
Hmmm, wäre es da nicht besser das ganze in einen lokalen Scope zu übergeben, also:
if( isset($_POST["folder"]) ) $folder = $_POST["folder"];
else $folder = "";
Meiner Meinung nach eigentlich schon, vorallem weil Deine Lösung angeschaltete register_globals() voraussetzt, das sollte man aber lieber lassen ;-)
MfG AndreD
Meiner Meinung nach eigentlich schon, vorallem weil Deine Lösung angeschaltete register_globals() voraussetzt, das sollte man aber lieber lassen ;-)
Du hast schon Recht AndreD, hier im Geschäft arbeiten wir jedoch schon seit Jahren mit angeschalteten register_globals() und sahen bisher keine Nachteile. Das wird sich jedoch Ändern wenn die ersten Nachteile auftauchen. ;)
Grundsätzlich sind die Globals auch bei den meisten Webprovidern angeschalten. Außerdem ging es mir nur um die Kuzrzerklärung die zum Ziel führt. Die Gefahr liegt immernoch bei sevi (?) und auch die Verantwortung dafür :)
MFG
Ralf Heumann
Hi Ralf,
Du hast schon Recht AndreD, hier im Geschäft arbeiten wir jedoch schon seit Jahren mit angeschalteten register_globals() und sahen bisher keine Nachteile. Das wird sich jedoch Ändern wenn die ersten Nachteile auftauchen. ;)
*staun* 8-/
Grundsätzlich sind die Globals auch bei den meisten Webprovidern angeschalten. Außerdem ging es mir nur um die Kuzrzerklärung die zum Ziel führt. Die Gefahr liegt immernoch bei sevi (?) und auch die Verantwortung dafür :)
Ja, ich dachte nur das es gut ist sevi (?) gerade bei solchen Operationen explizit auf mögliche Gefahren hinzuweisen. Viele (da schliess ich mich mal nicht aus) machen sich leider viel zu spät Gedanken über die Sicherheit Ihrer Scripte. IMHO erkennt man die Qualität eines Scripts in erster Linie an der Behandlung von potentiellen Sicherheitslücken und dem Abfangen von Fehlern.
Grüssle aus dem kalten aber
sonnigen Süden :-)
AndreD
Hello,
Es war nicht die Frage, ob es sicher ist oder nicht. Ich habe den vollen Überblick. Wahrscheinlich weisst du die Lösung nicht, und möchtest die Leute auf dich aufmerksam machen, weil du häufig ins forum schreibst, aber hast du auch wirklich Ahnung davon? Wenn du Ahnung davon hättest, dann hättest du mir mein Problem lösen können
Vorsicht: Das ist bestimmt ein Clon von Benji oder dem anderen 12-jährigen und da höre ich schon wieder das unangenehme Geräusch, dass so gar nix mit Weihnachten zu tun hat ...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Sevi,
ich möchte, dass auf meiner Homepage Verzeichnisser erstellt werden können. Und zwar möchte ich, dass man über ein Formular den Verzeichnisnamen bestimmen kann.
Vertraue niemals einer Eingabe die über ein Formular kommt!
Deshalb ist Deine Idee ist grundsätzlich eine heisse Kiste, da Du auf jeden Fall sicherstellen musst das der User auch wirklich nur ein Verzeichnis anlegt und nicht andere boese Sachen anstellt.
Aus Deinem Posting schliesse ich mal frech wie ich bin :-) das Du noch nicht lange mit PHP zu tun hast, ziehe bei Bedarf ein guten Programmierer Deines Vertrauens hinzu wenn Du den Code online stellst!
Nun möchte ich, da bei verzeichnis der Wert aus dem Formular steht. Also man soll über ein Formular den Namen des Verzeichnis bestimmen können. Kann mir jemand helfen?
1. Stelle sicher das register_globals in der php.ini auf off stehen.
2. Nutze die Methode POST und übernehme den Verzeichnisnamen aus $_POST["feldname"] in eine lokale, eigene Variable. Diese nimmst Du dann für Deine eigentlichen Operationen im Code.
3. Nutze basename() und realpath() um wirklich nur den Verzeichnisnamen zu erhalten den der User eingegeben hat.
4. In einem guten Buch (Programmieren mit PHP, O'Reilly) hab ich mal gelesen das man per umask() erst die unnötigen Zugriffsrechte abschalten soll und dann die Datei erzeugen soll. Der Tipp galt für Dateien, kann bei Verzeichnissen anders sein, da man die chmod bei der Erstellung angibt.
5. Ich würde meine Zugriffsrechte für eine Datei/Verzeichnis eigentlich nie auf 0777 setzen, überlege wer welche Rechte für Operationen benötigt. Also soll ein User im Verzeichnis jederzeit Files lesen/schreiben/ausführen können?
6. Lass an Ende nochmal einen erfahrenen Programmierer Deines Vertrauens drüberschauen wenn Du wirklich sicher gehen willst dass das ganze relativ sicher ist!
Mehr Infos dazu (solltest Du auf jeden Fall lesen):
http://www.dclp-faq.de/ch/ch-security.html
Gruss und viel Glück!
AndreD
Nun möchte ich, da bei verzeichnis der Wert aus dem Formular steht. Also man soll über ein Formular den Namen des Verzeichnis bestimmen können. Kann mir jemand helfen?
- Stelle sicher das register_globals in der php.ini auf off stehen.
[..]
n.) Stelle fest, daß das mit PHP in der Regel nicht funktioniert, da bei jedem halbwegs intelligenten Serverbetreiber der PHP-Sicherheitsmodus eingeschaltet ist, der Zugriffe auf Objekte fremder Benutzer verhindert. Da PHP meistens im Webserver (das Programm) selbst sitzt, werden Dateien und Verzeichnisse auch im Namen des Webservers erstellt - und das ist nunmal jemand anderes als der Skriptbesitzer.
Gruß,
soenk.e