Tag: PHP
Dezember 16th, 2009
Gerade habe ich ein intressantes Tool gefunden. Mit CodeMirror ist es möglich online, direkt im Browser PHP-Quellcode zu bearbeiten. Das funktioniert im Prinzip ähnlich wie bekannte WYSIWYG-Editoren für HTML, nur dass die Textarea um Syntax-Highlighting ergänzt wird.
Es gibt eine klasse Demo in der man die unterschiedlichen Möglichkeiten direkt testen kann.
November 20th, 2009
Seit ein paar Stunden sitzt mein Blog auf einem neuen Server. Nach einem Blick in das Admin-Interface, habe ich mich erstmal tierisch gefreut. Vorher hatte ich eine Speicher-Auslastung von ca. 30MB, jetzt sind es im Schnitt nur noch 22MB.
Der neue Server ist natürlich schneller, toller, besser, … aber vor allem nutzt er PHP 5.2.11 unter Debian 5 und nicht mehr 5.2.0 unter Debian 4. Da sonst die technische Basis gleich geblieben ist, gehe ich mal davon aus, dass WordPress unter PHP 5.2.11 weniger Speicher verbraucht als unter 5.2.0.
Hat noch irgendwer diese Erfahrung gemacht?
Oktober 14th, 2009
Gestern habe ich über Twitter und die Zend Devzone zufällig von nWire erfahren – und bin begeistert. Was genau nWire ist und wofür man das unbedingt braucht will ich euch hier kurz erklären.
Ich habe häufig das Problem, vorhanden PHP-Quälcode anzupassen, zu optimieren und, ganz wichtig, zu entschlacken. Das ist ne echt mühsame Arbeit. Man geht die Bibliotheken durch und schaut nach ob bestimmte Klassen und Funktionen auch tatsächlich im Projekt verwendet werden, ob Deklarationen doppelt vorhanden sind, und so weiter. nWire nimmt mir dabei ab sofort wahrsinnig viel Arbeit ab, denn es Analysiert den Quellcode im Vorhinein und zeigt mir all die Infos die ich sonst immer zu Fuß erkundet habe direkt unter der bearbeiteten Datei im Eclipse an.

Schaubild der Arbeitsweise von nWire
nWire hat mehrere Module, die perfekt Hand in Hand arbeiten. Im ersten Schritt untersucht der nWire Analyzer den kompletten Quellcode. Das ist ein Prozess der immer wieder im Hintergrund abläuft, auch bei größeren Projekten die Entwicklung also nicht stört. Diese dabei ermittelten Daten werden im nWire Repository gespeichert.
Jetzt gibt es zwei Komponenten mit denen man als Entwickler zu tun hat. Das wichtigste ist der nWire Navigator. Mit ihm kann man Dateien, Funktionen und Variablen untersuchen. Man findet heraus wo sie deklariert wurden, wo sie überall verwendet werden und welche Abhängigkeiten sie haben. Mit nWire Navigator Search kann man gezielt nach Elementen des Projektes suchen.
Mit dem nWire Visualizer sieht man in einem Netzdiagramm die vom Navigator dargestellten Abhängigkeiten und kann sich über das Netz das ganze Projekt anschauen. Hab ich jetzt noch nicht so benutzt und sehe auch nicht den größeren Sinn dahinter, aber der Navigator ist richtig super.
Ich werde nWire auf jeden Fall die 30 Tage, die man die Trialversion laufen lassen darf ausgiebig testen und dann eventuell ein paar Lizenzen für uns holen.
August 11th, 2009
Gerade eben gelesen (thx to Spreeblick): Lücke in WordPress ermöglicht Aussperren des Admins.
Also nichts wie los liebe WordPress-Admins, schnell die wp-login.php ändern.
Genaue Infos zum Bug gibt’s von Laurent Gaffié. Der Bug wird aber nicht als kritisch eingestuft, da es einem Angreifer keinen Vorteil verschafft, aber es führt zu ein bisschen Ärger beim Admin.
Der Bug ist übrigens ein sehr gutes Beispiel für unsaubere Programmierung. Ein Eingabeparameter wird lediglich mittels empty($key) überprüft. Sinnvoller als zu überprüfen wie ein Parameter nicht beschaffen sein soll, ist es immer zu überprüfen WIE genau der Inhalt der Variable aussehen muss.
Also zum Beispiel könnte man an dieser Stelle eine Stringconversion und nachträglich eine Überprüfung auf Mindestlänge und enthaltene Zeichen durchführen:
$key = (string) $key;
if (!preg_match("~[A-Za-z0-9]{20}~", $key) ) {
return new WP_Error('invalid_key', __('Invalid key'));
}
Das ganze jetzt so aus der Hand geschrieben, aber sollte so in etwa funktionieren. Unter der Bedingung, dass
$key
immer 20 Zeichen lang ist, was ich jetzt nicht weiß.
Eine Zeile weiter oben heißt es sogar schon:
$key = preg_replace('/[^a-z0-9]/i', '', $key);
Allerdings ohne vorher auf einen String oder die Länge zu überprüfen.
Achja, ist so ein ganz klarer “Mit Java wäre das nicht passiert”-Bug 
Update:
Inzwischen ist das Problem gefixt. Und zwar so:
190 |
if ( empty( $key ) || !is_string( $key ) ) |
191 |
return new WP_Error(‘invalid_key’, __(‘Invalid key’)); |
192 |
|
193 |
if ( empty($login) || !is_string($login) ) |
194 |
return new WP_Error(‘invalid_key’, __(‘Invalid key’)); |
195 |
|
196 |
$user = $wpdb->get_row($wpdb->prepare(“SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s”, $key, $login)); |
197 |
if ( empty( $user ) ) |
198 |
return new WP_Error(‘invalid_key’, __(‘Invalid key’)); |
Das ist auch ok. Überprüfung ob es ein String ist. Auf jeden Fall besser als zu überprüfen ob es kein Array ist.
April 26th, 2009

mediavalley.de, 04/2008
Das Buch bietet einen optimalen Einstieg in ein sehr professionelles Framework.
Pressestimmen
Empfehlung der Redaktion!
Alle
(more…)
April 20th, 2009
Gegen die Vergesslichkeit mal hier ein kurzer Artikel zum Thema pinetd und DNS-Server.
Pinetd/2 ist eine Bibliothek mit der verschiedene TCP-Dienste direkt über PHP erstellt werden können. Verschiedene Dienste sind bereits implementiert und können aus dem SVN gezogen werden.
Read the rest of this entry »
März 3rd, 2009
Ein kleines Baby von uns ist mal wieder auf dem Weg. Wir werden im Q2/2009 ein kostenfreies Subversion und Trac Hosting anbieten. Zusätzlich gibt es zahlreiche Optionen wie automatisches Deploy, Nutzung einer Datenbank+PHP5.
Später, je nachdem wie der Service angenommen wird, werden wir das Angebot auf diverse andere Scriptsprachen (python, ruby), Deployprozesse (build management, externer deploy per scp oder ftp), Datenbanken (eXist, Xindice, postgresql, weitere SQL und XML-Datenbanken) erweitern.
Dezember 12th, 2008
Wieder mal was aus der Kategorie gesucht und gefunden.
Ich habe ewig lange schon das optimale Pattern für die Ersetzung von URLs innerhalb eines Textes durch einen korrekten Link gesucht. Jetzt endlich glaube ich es gefunden zu haben. Read the rest of this entry »
November 4th, 2008
Es gibt ja im pma dieses kleine Icon in der linken Tabellenliste. Wenn man bisher da drauf geklickt hat, dann bekam man rechts sofort den Tabelleninhalt angezeigt. Mit Version 3.0 änderte sich dieses Verhalten standardmäßig. Es wurde (wenn man die config-Dateien beim Upgrade beibehalten hat) immer nur die Struktur angezeigt.
Die Lösung ist recht einfach: Das Icon und der Link sind jetzt über Konfigurationsvariablen einstellbar. Setzt man $cfg[‘LeftDefaultTabTable‘] = ‘sql.php'; (siehe phpMyAdminWiki), dann ist das Verhalten wieder wie in den bisherigen Versionen.
September 28th, 2007
Dr.Web gibt mal wieder gute Tipps. Diesmal über zwei gute zu Regular Expressions.
Die Regular Expression Library bietet ein recht umfangreiches Sammelsurium an fertigen Ausdrücken für jeden Anwendungsfall. Natürlich kann man seine eigenen Tüfteleien auch hinzufügen und damit der Allgemeinheit zur Verfügung stellen. Die Verfügbaren Regex werden in Kategorien wie Email, Uri, Numbers, Strings, Dates and Times und Misc eingeordnet und lassen sich darüber auch gut finden. Ein Bewertungssystem, welches falsche oder unbrauchbare Regex aussortiert komplettiert die Seite.
Der Regex-Tester bietet dagegen einen ständig verfügbaren Online-Tester, der die eigenen Patterns gezielt gegen Beispiel-Texte matcht.