| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Erfahrener Benutzer Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
Der Beitrag wurde verschoben, wegen... ... Postings im falschen Forum. Bemerkung: Die gestellte Frage entspricht nicht dem Wissensstand eines Profis. Dazu: http://www.phpfriend.de/ftopic21431.html | |
| |
| | |
| Gast
Beiträge: n/a
| schau dir dashier mal an wenn nicht schon getan: Bit-Operatoren genauer... (schreib ich nacher muss erst zum essen^^) |
| | |
| Gast
Beiträge: n/a
| Ok ich versuchs mal zu erklären: Du kennst hoffentlich Bits sprich binärsystem (BIN) mit dem alles in 0 oder 1 dargestellt wird. Gibt ja noch anderen wir Dezimal (DEC - unser Zehnersystem), Hexadezimal (wie die HTML-Farben #FFFFFF) und Oktal (also hier gibts 1-8) Wenn du dir nun ansiehst wie das gespeichert wird fällt wohl ein aus nem FTP Programm mit z.B. den drei Zahlen "754". Die erste Zahl ist Owner das zweite die Rechte für die Gruppe und das Dritte für alle (nennt sich in dem Script $world). Die jewiligen Rechte addieren sich also Lesen = 4, Schreiben = 2, Ausführen = 1 ---> Alles = 7. Vor diesen drei Zahlen aber sind noch 2 Stellen die den Typ beschreiben, das wusst ich bis dato auch nicht. Das ganze kann/muss man ins Binärsystem umwandeln damit man alles versteht. Um das umzuwandeln muss man wissen dass es im Oktalsystem ist. (habs ausprobiert) Code: Im Beispiel als Typ ein Ordner, ich wusste das auch nicht welcher Bitcode ein Ordner ist hab ich aus dem Script. Oktal (nicht dezimal!): |Typ|Owner|Group|World| | 4| 7| 5| 4| Binär: |Typ |Owner|Group|World| |100000| 111| 101| 100| hier erkennt man nun in den Bits die Berechtigungen. Also z.b. bei Group: 101 bedeutet dann: Lesen ja, Schreiben nein, Ausführen ja. Nun der Teil der entscheidet ob es sich um einen Ordner handelt: else if( $mode & 0x4000 ) Der Bitoperator & vergleicht einfach die Bits von $a und $b. "Bits, die in $a und $b gesetzt sind werden gesetzt." Also aus (100 & 111) würde 100 werden weil nur der erste Bit bei beiden gesetzt ist. Also die zwei Zahlen erstmal in Binärsystem umwandeln und vergleichen: 100000111111111(BIN) = 16895(DEC) -> die Ausgabe von fileperms() Das 0x4000 ist hexadezimalschreibweise. Das kannst alles im einfachen Windoof-Taschenrechner umrechnen. 100000000000000(BIN) = 0x4000(HEX) Das ganze verglichen: 100000111111111 100000000000000 =============== 100000000000000 (weil nur an dieser Stelle das Bit gleich ist) Nun bekommen wir also: elseif(100000000000000){...} - Ich hab einfach ausprobiert was if-Befehl da macht bei Kombinationen aus 1 und 0: Code: echo (00)?"true ":"false "; // false echo (01)?"true ":"false "; // true echo (10)?"true ":"false "; // true echo (11)?"true ":"false "; //true Ich erklär mal wie man raus bekommt ob Owner lesen darf alles andere ist ja gleich. Mein Ordner: (DEC) 16895 (OCT) 40777 (man könnte auch mit der Oktalzahl einfach rausbekommen ob man lesen darf) (BIN) 100000111111111 Wie der Bitoperator funktioniert ist ja klar und welches Bit wir überprüfen müssen hoffentlich auch (das an der 7. Stelle). Nun kann man selber den Bitcode festlegen: 000000100000000 (=100000000). Wenn man das jetzt aber in der If-Schleife schreiben würde - if($mode & 100000000) - funktioniert das nicht. Hier bin ich mir aber nicht sicher. Ich glaube herausgefunden zu haben: ($mode & "1") -> 1 als Dezimalzahl ($mode & 1) -> 1 als Oktalzahl ($mode & 0x1) -> 1 als Hexadezimalzah für binär hab ich keine möglichkeit gefunden. Wenn man dann also dieses 100000000 in Oktal umwandelt kommt man auf 400 und genau das steht auch da. Hoffe man kann es verstehen hatte die letzte halbe Stunde grade Zeit muss bei meinen Eltern im Geschäft gammeln :-) btw: Naja auf Grund der Komplexheit könnte es doch ins Fortgeschrittenen Forum. *vor-ben-weglauf* Denn ein Fortgeschrittener murr nicht unbedingt binäre Operatoren kennen denn die braucht man selten. Aber nun ist es hier lasst es besser hier bevor sich alle schlagen! |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| JS: Einführung - Javascript im Schichtenmodell | nikosch | Tutorials | 4 | 11.04.2009 17:06 |
| Rekursive Funktion bricht ab... | duras666 | PHP Tipps 2008 | 9 | 28.04.2008 11:36 |
| gpc_quotes funktion: verbesserungsvorschläge? | Promaetheus | PHP Tipps 2007 | 10 | 12.08.2007 19:29 |
| Komplexe Funktion: +Übersichtlichkeit, -Performance | Jacks Rache | PHP Tipps 2006 | 3 | 07.06.2006 14:22 |
| PHP-GTK Tutorial | Beitragsarchiv | 9 | 02.11.2005 21:07 | |
| Rückgabewert einer rekrusiven Funktion | PHP-Fortgeschrittene | 7 | 06.10.2005 18:44 | |
| (schnellere) Funktion zum Zusammenfassen von CSS | PHP-Fortgeschrittene | 21 | 08.08.2005 16:47 | |
| In einer Funktion auf eine Funktion der Klasse zugreifen | phpbeginner | PHP Tipps 2005-2 | 2 | 28.07.2005 00:30 |
| Funktion in einer Funktion aufrufen? | PHP Tipps 2005-2 | 11 | 14.06.2005 15:14 | |
| [Erledigt] Array-Übergabe in Funktion | PHP Tipps 2005 | 1 | 08.05.2005 21:05 | |
| [Erledigt] Variablen in eine Funktion übernehmen | PHP Tipps 2005 | 1 | 26.02.2005 17:19 | |
| [Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben | PHP Tipps 2005 | 11 | 25.01.2005 10:44 | |
| [Erledigt] Funktion in funktion nicht möglich? | PHP-Fortgeschrittene | 4 | 28.11.2004 00:14 | |
| [Erledigt] sql syntax error in funktion, kann aber nix finden :( | PHP Tipps 2004 | 10 | 20.07.2004 19:19 | |
| [Erledigt] Referenz auf Funktion übergeben | PHP-Fortgeschrittene | 7 | 20.07.2004 09:51 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| 0x6000 als binär, symbolic link hex 0xa000, php bitweise berechtigungen prüfen script owner, fileperms() liefert komisches wert zurück, 0xa000000 umrechnen, $group[\write\] = ($mode & 00020) ? \'w\' : \'-\';, umrechenen 0x4000, php fileperms umrechnen, fileperms umrechnen |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.