• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[PHP] Diese Sache mit mkdir…?!

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Hallo ihr lieben!

Ich arbeite gerade an einem PHP Script.
Dieses soll an einer Stelle einen Ordner mittels mkdir(); erstellen.

Das funktioniert allerdings leider nicht.
Ich bekomme keine Fehlermeldung und nichts!
Außer bei der Funktion danach, welche sich auf den zu erstellenden Ordner bezieht.

Das ganze läuft auf einem Apache auf meinem MacBook Pro.
Ich habe schon die config eingesehen. Kein Safemode und die Rechte aller Ordner und Scripte sind auch korrekt.

Kenn ihr vielleicht eine Alternative zum Thema Ordner erstellen?
Oder einen Geheimtipp, wie ich das in Gang bekomme?


Vielen Danke und liebe Grüße
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Wüsste spontan nicht woran's liegen könnte... Poste doch mal bitte das Script, dass den Ordner erstellen soll.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Inzwischen, nach ein bisschen Gebastel habe ich es immerhin schon mal geschafft, dass ich von mkdir eine Fehlermeldung bekomme.
Ich weiß nicht wirklich, ob das wirklich besser, oder doch schlechter ist :))

Hier mal die Meldung:
Code:
Warning: mkdir() [function.mkdir]: File exists in /Library/WebServer/Documents/bier/adduser.php on line 17

Ich lege auch mehrere Dateien in diesem Ordner an.
Allerdings werden diese jetzt alle da hin geworfen, wo der Ordner landen sollte.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Da hat also in der Zwischenzeit schon jemand geantwortet :)
Hier also mal das gewünschte Script (so viel falsch machen kann man in den 33 Zeichen nicht machen, oder?!

Code:
mkdir(('./'.$username.''), 0777);
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Sieht erstmal richtig aus.
Wie wird denn $username angelegt? Ist die Variable ganz sicher nicht leer?
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Um Gottes willen!
Anstelle von name habe ich nur id benutzt!
Was für'n blöder Scheiß… Echt ey :)

Danke —*Richtig dickes Danke.
Also es ist manchmal unglaublich, wie man manchmal auf'm Schlauch stehen kann!
Krass.

Aber es bleibt komisch, dass es mit id="password" funktioniert hat :)


Grüße
 
Zuletzt bearbeitet:

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
wie sieht denn die Eingabeform aus? Dann muss eig da der Fehler liegen ;) (name-Attribut)
 
  • Like
Reaktionen: Mini-Leopard

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Okay.
Ich sehe gerade, ich mache das per id-Attribut.
Funktioniert aber auch. Jedenfalls mit dem Passwort. Mit Nutzername gehts einfach nicht!
Und ja —*Ich bin mir auch sicher, dass ich das Formular komplett ausgefüllt hab ;)

Code:
<form action="adduser.php" method="post">
    <input type="text" id="username" />
    <br />
    <input type="text" id="password" />
    <br />
    <input type="submit" value="Neuen User anlegen" onclick="addUser();" />
</form>
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Irgendwie nimmer AT mein Editing des Beitrags nicht an :(

Also.
Danke — dickes Danke!
Ich habe es jetzt mal mit name probiert und siehe da…
Echt krass, wie man manchmal auf dem Schlauch steht!

Trotzdem bleibt noch das Mysterium, wieso id="password" übergeben wurde…


Grüße
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Kein Problem ;)
Liegt wahrscheinlich in der Funktion Javascript-Funktion addUser(). Ich würd' aber (fast) immer ein name-Attribut setzen… ist 'sicherer', da der Browser das auch automatisch übermittelt und man normalerweise keinen onClick-Handler braucht (ausser man will die Form direkt im JavaScript überprüfen oder so) :p
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Du ruftst ja auch per onClick eine JavaScript-Funktion auf. Vielleicht übergibt die ja die Passwort-Variable.

Kleiner Tipp am Rande: Alles, was per Formular oder sonstigen userseitigen Requests (z.B. Query-String) übergeben wird, erst mal im Skript prüfen lassen (enthält Daten, richtiger Datentyp, richtiges Format usw.). So kann man frühzeitig Fehler erkennen. Zudem sind ungeprüfte Userdaten eine Sicherheitslücke.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
@ timmy38233:

Nicht mal!
Die Funktion addUser(); existiert ja nicht mal mehr!
Eigentlich mache ich auch immer name. Aber in letzter Zeit habe ich wegen Dashcode sehr viel JavaScript gemacht. Und da eben nur mit id. Scheint irgendwie in den Fingern geblieben zu sein :)
Ich wollte nämlich ursprünglich auch mit JavaScript Dateien erstellen, weil schön dynamisch.
Da ist mir aber die Geschichte mit Client-/Serverseitiger Programmiersprache wieder eingefallen :))

Also ich bin der Meinung, da spinnt was.
Aber gut… Geht ja jetzt.

Und das ursprüngliche Problem mit mkdir(); ist damit also auch behoben — klasse!
Danke noch mal :)
 
Zuletzt bearbeitet:

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
@ Bananenbieger:

Das ist nur ein lokal laufendes Verwaltungssystem für Getränke.
Also nichts besonders empfindliches :)

Aber danke für den Tipp.
Mach ich auch zum Teil —> ä, ü & ö z.B. werden ausgetauscht… (ae, ue, oe)
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Hm Komisch mit der ID. Aber jetzt läuft's ja :p
Wenn die Funktion addUser() nicht existiert, würde ich dann auch den gesamten onClick-Handler aus dem Submit-Button nehmen… Der sorgt nur für unnötige (zwar nicht sichtbare, aber dennoch aufgerufene) Fehler ;)
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
@ Bananenbieger:

Das ist nur ein lokal laufendes Verwaltungssystem für Getränke.
Also nichts besonders empfindliches :)

Aber danke für den Tipp.
Mach ich auch zum Teil —> ä, ü & ö z.B. werden ausgetauscht… (ae, ue, oe)

äöü austauschen brauchst du nicht, wenn du alles als utf-8 kennzeichnest, selbst MySQL 5.1+ kann damit richtig gut umgehen. Überprüfen solltest du lieber, dass eingaben wie: karl'; DROP TABLE `user`; INSERT... nichts bringen.
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Ich würde ja einfach flourish (www.flourishlib.com) empfehlen. Wenn man die entsprechenden Klassen nutzt, kann man eigentlich nichts schief machen. Gut dokumentiert ist die Library auch.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Hm Komisch mit der ID. Aber jetzt läuft's ja :p
Wenn die Funktion addUser() nicht existiert, würde ich dann auch den gesamten onClick-Handler aus dem Submit-Button nehmen… Der sorgt nur für unnötige (zwar nicht sichtbare, aber dennoch aufgerufene) Fehler ;)

Hab ich dann auch gleich gelöscht, als ich das gesehen hab…


äöü austauschen brauchst du nicht, wenn du alles als utf-8 kennzeichnest, selbst MySQL 5.1+ kann damit richtig gut umgehen. Überprüfen solltest du lieber, dass eingaben wie: karl'; DROP TABLE `user`; INSERT... nichts bringen.

Also mein strpos hat mit den Umlauten nicht funktioniert. Ja, im Head ist auch UTF-8 deklariert.
Das ist nicht so gefährlich. Das ist nur für unsere große WG. Wir haben eine zentrale Getränkeversorgung und wollen nicht mehr auf Papier Strichliste führen. Geht einfach nur darum, dass der betreffenden Person die richtige Liste angezeigt wird… Also kein Sicherheitsrisiko.


Ich würde ja einfach flourish (www.flourishlib.com) empfehlen. Wenn man die entsprechenden Klassen nutzt, kann man eigentlich nichts schief machen. Gut dokumentiert ist die Library auch.

Wozu soll ich jetzt Flourfish benutzen? Also jetzt funktionierts ja reibungslos.
Aber was kann das denn?


Vielen Dank noch mal an alle!
Liebe Grüße
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
flourish ist dazu da, dass keiner schädlichen Code einschleusen kann. Und warum verwendest du strpos? Wenn du String vergleichen möchtest, kannst du diese in PHP auch mit == vergleichen. Also für mich persönlich macht strpos in einer Getränkeverwaltung ziemlich wenig Sinn. Allgemein in OOP Projekten sollte man sehr schnell Abstand von den ganzen C Angewohnheiten nehmen. Und diese sind in PHP wirklich nicht notwendig.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
[…] Und warum verwendest du strpos? Wenn du String vergleichen möchtest, kannst du diese in PHP auch mit == vergleichen. Also für mich persönlich macht strpos in einer Getränkeverwaltung ziemlich wenig Sinn. […]

Mit strpos hab ich eine art "if contains" gbastelt.
Da hab ich auf die Schnelle keine Vernünftige Alternative gefunden. Und es funktioniert ja wunderbar!

Ich hätte natürlich auch die mehrzeilige Variable in ein Array einlesen können, dann dieses in eine Schleife jagen, um dann erst mal das Zeilenende zu entfernen und zu prüfen, ob der gesuchte Name darin auftaucht.

Aber jetzt frag ich mich, was mehr Zeilen Code braucht…