phpbar.de logo

Mailinglisten-Archive

[php] Dateiordner mit PHP anlegen

[php] Dateiordner mit PHP anlegen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Feb 28 12:08:47 CET 2006


Hallo Holger,

Holger Zengerle schrieb:
> -----------
>> anstatt <?php $PHP_SELF; ?> muß da stehen:
>>
>> 	<?php echo($_SERVER['PHP_SELF']); ?>
> -----------
> Warum ist die andere Variante? Ich habe das obere überall. Wäre es besser
> alles auf Deine Variante umzubauen?

grundsätzlich war hier falsch, daß das echo() fehlte, also die Ausgabe der
Variablen. ;-) Anstatt <?php echo($_SERVER['PHP_SELF']); ?> hättest Du
auch <?= $_SERVER['PHP_SELF'] ?> schreiben können, allerdings sind die an
ASP angelegten Kurzformen (Short Tags) verpönt. Ihre Funktionsfähigkeit
hängt auch davon ab, daß sie in der PHP-Konfiguration vom Administrator
überhaupt erlaubt werden.

Punkt 2: $PHP_SELF ist eine veraltete Schreibweise. Heute stecken diese
ganzen Informationen zum Server aus Sicherheitsgründen in $_SERVER. Daher
jetzt die Schreibweise $_SERVER['PHP_SELF']. Zu den Hintergründen dieser
Änderung siehe:

     http://www.php.net/manual/de/language.variables.predefined.php
     http://www.php.net/manual/de/security.globals.php


> -----------
>> 	if (isset($_POST['ordnername']) &&
>> !empty($_POST['ordnername'])) {
> -----------
> Was ist an dieser Abfragevariante besser als an meiner, wenn ich nur eine
> normale if-Abfrage mache: "if ($ordnername) {...}"?

Du möchtest ja einen Ordner anlegen. Dazu verwendest Du ein Formular, wo
man den Verzeichnisnamen frei eintragen kann. Um den Ordner anlegen zu
können, ist entscheidend, daß ein Ordnername eingetragen und abgeschickt
wurde. Und wenn Du einen Ordnernamen übergeben bekommen hast, weißt Du
automatisch, daß das Formular abgeschickt wurde.

Du hast nur darauf abgefragt, ob das Formular abgeschickt wurde. Damit
weißt Du aber noch nicht, ob Du auch einen verwertbaren Ordnernamen
übergeben bekommen hast. :-) Daher ist die von mir vorgeschlagene
Abfragevariante besser.


> Und vorallem, warum das "$_POST['ordnername']" und nicht nur die Variable
> $ordnername?

Mit $_POST['ordnername'] und $ordnername verhält es sich so, wie mit
$_SERVER['PHP_SELF'] und $PHP_SELF, d.h. siehe obige Links. :-) Die neue
Schreibweise schließt eine Sicherheitslücke (wenn register_globals auf OFF
steht).


> Jetzt können wir die validierung einbauen.

Genau. Du mußt nämlich sicherstellen, daß keine ungültigen Zeichen und
sonstiger illegaler Kram in der Variable $_POST['ordnername'] übergeben
wird.


> Allerdings hab ich nun folgendes Problem, dass zwar der Ordner angelest
> wird, aber nicht mit den Schreibrechten 0777 versehen wird sondern nur mit
> 0755. Wenn ich das aber mit dem FTP-Programm noch ändere, werden diese
> aber
> nicht übernommen. Der Hostingsupport sagte mir irgendwas davon, dass beim
> Anlegen des Ordners die Zugriffsrechte des root-serves oder so übernommen
> werden, und dafür habe ich keine Rechte.
> Kann das so sein? Kann ich da im Script was machen oder muss der Hoster da
> was ändern?

Du solltest das Verzeichnis nur mit den nötigen Rechten versehen. Wenn
0755 ausreicht, dann belasse es dabei. :-) Der Eigentümer des
Verzeichnisses hat ja volle Rechte. Der Rest der Welt kann immerhin lesend
zugreifen. Das sollte doch ausreichen. :-)


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive