Herzlich willkommen bei Perfektes PHP! Ich bin seit 10 Jahren php-Entwickler, habe ein privates Blog und arbeite derzeit an TweetHip. Mit dieser Seite möchte ich php-Programmierern dabei helfen, besseren Code zu schreiben. Anfänger lernen, wie sie typische Fehler vermeiden können. Fortgeschrittenen wird aufgezeigt, wie sie ihre Fähigkeiten weiter verbessern können um die Sprache php optimal zu nutzen. Und selbst für Profis dürfte der ein oder andere Beitrag Neues enthalten, oder doch zumindest zum Nachdenken anregen. Weitere Infos | Fragen und Vorschläge

PHP Beyond the web

Nov 22nd, 2013

PHP Beyond the web

Rob Aley ist seit mehr als 10 Jahren php-Entwickler, wie auch ich. Im Gegensatz zu mir verwendet er php jedoch nicht nur bei der Entwicklung von Webseiten, sondern für alles: von Shell-Skripten über System-Daemons bis hin zu GUI-Anwendungen, php ist für ihn stets die Sprache der Wahl.

Nun hat er ein Buch geschrieben, php beyond the web, in dem er seine über die Jahre gesammelte Erfahrung präsentiert und dem Leser ansprechend zeigt, was mit php alles möglich ist (Spoiler: eine ganze Menge!).

Das Buch richtet sich an versierte php’ler, und bietet diesen eine geballte Menge an Informationen. Eine genaue Auflistung zeigt das Inhaltsverzeichnis, aber die Themenvielfalt wird schon alleine beim Kapitel über die Erstellung von GUIs/Grafischen Anwendungen, deutlich. Nicht nur ein oder zwei GUI-Toolkits werden besprochen, sondern gleich eine ganze Menge mehr: neben den bekannteren Toolkits wie GTK (php-gtk), Qt (PHP-Qt) und WX (wxPHP) werden auch Adboe Air und Titanium (bekannt für mobile Apps) besprochen.

Das Buch ist als DRM-freies Ebook über Leanpub zu kaufen. Der Auto hat als Mindestpreis 19,95$ festgelegt, aber meiner Meinung nach ist das Buch auch den vorgeschlagenen Preis von 29,95$ ohne Zweifel wert.

Wen dies neugierig gemacht hat, dem kann ich nur empfehlen sich das Buch bei Leanpub zu kaufen.

Tags:

Wie man sich vor Rainbow-Table-Attacken schützen kann

Nov 19th, 2012

Wie funktionieren Hash-Algorithmen? Warum benutzt man sie? Wie kann man sie “entschlüsseln”? Wie kann man sich davor schützen und MD5 sicherer machen?

Im vorherigen Beitrag habe ich gezeigt, wie man Rainbow-Tabellen benutzen kann, um MD5 zu entschlüsseln. In den ersten beiden Teilen habe ich klar gemacht, dass ein Entschlüsseln zwar nicht möglich, aber auch gar nicht nötig ist. In diesem Beitrag zeige ich nun abschließend was man tun muss, um Passwörter sicher zu speichern und sich vor Angriffen mit Rainbow-Tabellen und Ähnlichem zu schützen.

Weiterlesen…

Fatal error: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM

Mai 16th, 2012

Diese Fehlermeldung gehört wohl zu den unverständlichsten Fehlermeldungen überhaupt. Um sie zu verstehen muss man erst einmal wissen, was mit T_PAAMAYIM_NEKUDOTAYIM gemeint ist. Das T_ steht für Token, also eines der “Bausteine”, in das der php-Parser den Quellcode unterteilt bevor er ihn ausführt. Und “Paamayim Nekudotayim” ist hebräisch für Doppel-Doppelpunkt. Die Fehlermeldung weist also einfach darauf hin, dass ein :: unerwartet aufgetreten ist.

Was sind die Ursachen und die Lösungen dafür?

Weiterlesen…

Verschachtelten Code verbessern

Mrz 20th, 2012

Nichts ist schlimmer als Bandwurmsätze, die, innerhalb mehrerer Ebenen, die dann auch, um es noch störender zu machen, einfach, oder gar mehrfach, ineinander verschachtelt sind, den Lesefluss stören. Und auch mehrfach verschachtelter Quellcode stört den Lesefluss und verschleiert das, was eigentlich offensichtlich sein sollte.

Stellen wir uns beispielsweise eine Funktion vor die prüft, ob ein Benutzer eingeloggt ist:

Weiterlesen…

Passwörter mit MD5-Hash entschlüsseln

Mrz 14th, 2012

Wie funktionieren Hash-Algorithmen? Warum benutzt man sie? Wie kann man mit MD5 u.Ä. Hash-Verfahren verschlüsselte Passwörter wieder entschlüsseln? Wie kann man sich davor schützen?

Im ersten Teil habe ich erklärt, was Hash-Verfahren sind und wie sie funktionieren. Im zweiten Teil habe ich anhand eines Bankautomaten und eines elektronischen T:urschlosses gezeigt, welche Vorteile der Einsatz von gehashten Passwörtern bietet. In diesem Teil gehe ich darauf ein, wie man aus einem Hash auf die ursprüngliche Eingabe schließen kann, selbst bei unumkehrbaren Hash-Funktionen (siehe erster Teil).

Weiterlesen…

Wofür benutzt man Hash-Funktionen wie MD5

Mrz 14th, 2012

Wie funktionieren Hash-Algorithmen? Warum benutzt man Hash-Verfahren wie MD5 und SHA-1? Wie kann man damit verschlüsselte Passwörter wieder entschlüsseln? Wie kann man sich davor schützen?

In meiner Erklärung von Hash-Verfahren zeigte ich, wie diese grundlegend funktionieren, und dass ihre Funktionsweise nicht umkehrbar ist. Diese Nichteindeutigkeit der Berechnung ist genau das, was Hash-Algorithmen wie MD5 und SHA-1 so nützlich macht!

Ich möchte versuchen, dies an einem Beispiel aus dem Leben klar zu machen. (Crypto-Experten mögen mir bitte verzeihen, wenn meine Analogien nicht 100%ig korrekt sind und Dinge vereinfacht darstellen. Dies dient der besseren Verständlichkeit!)

Weiterlesen…

Erklärung für Hash-Verfahren wie MD5 und SHA-1

Mrz 14th, 2012

Wie funktionieren Hash-Algorithmen wie MD5 und SHA-1? Warum benutzt man diese? Wie kann man damit verschluesselte Passwörter wieder entschlüsseln? Und wie kann man sich davor schützen?

Zuerst einmal: MD5 und SHA-1 “verschlüsseln” nicht. Daher können sie auch nicht “entschlüsselt” werden. Es gibt Seiten im Internet die behaupten, dies tun zu können, und tatsächlich liefern sie in vielen Fällen Ergebnisse. Wie diese Tools funktionieren erkläre ich in Teil 3 dieser Serie. Teil 4 erklärt dann, mit welchen Methoden man sich davor schützen kann.

Im ersten Teil dieser Serie erkläre ich, was Hash-Funktionen sind, wie diese Funktionieren und welche besonderen Eigenschaften sie haben.

Weiterlesen…

Variablen und Funktionen richtig benennen

Mrz 1st, 2012

Alle aufzeigen, die ihre Variablen schonmal $tmp, $a oder $b, und Funktionen foo(), bar() usw. genannt haben. Okay, Hände wieder an den Rechner und weiterlesen :)

Das Benennen von Variablen und Funktionen ist eine Kunst für sich. Zum einen sollten sie weder zu kurz noch kryptisch sein (strpl()), zum anderen nicht so lang, dass man sich Fingerkraempfe beim Tippen holt (replace_substring_in_string()). Ihr habt sicher erkannt, welchen Mittelweg php gewählt hat: str_replace().

Schön und gut, das weiss ja schon jeder, doch trotzem kommt man immer wieder in Situationen, in denen einem nichts einfällt und man auf Namen wie $foo und bla() zurückkommt. Hier eine kurze Anleitung in Form von Fragestellungen, wie man kurze, aber trotzdem prägnante Variablen- und Funktionsnamen ersinnt.

Weiterlesen…

Code richtig kommentieren

Feb 29th, 2012

Wie man Quellcode kommentieren muss, daran scheiden sich die Programmier-Geister. Auch bei den php-Programmierern kann man zwischen zwei Extremen unterscheiden:

Extrem Nr. 1: der Nicht-Kommentierer

Was dieser Codeausschnitt tut wird nicht auf den ersten Blick klar. Und vermutlich auch auf den zweiten Blick nicht. Auf den dritten Blick? Vielleicht! Dies liegt daran, dass der Programmierer beim Schreiben des Codes natürlich wusste was er tut, dann aber zu faul war, sein Wissen in Form von Kommentaren in den Code einfließen zu lassen. Verschlimmert wird das ganze noch dadurch, dass er allgemeine ($tmp, $val, $key) und kryptische ($ts, $ofs) Variablennamen verwendet hat.

Doch es geht noch schlimmer!

Weiterlesen…