Archive for Mai, 2012
Kryptische Fehlermeldungen in PHP
Mit den Jahren der Programmierung stößt man unwiderruflich auch auf komische Fehlermeldungen in PHP, die auch nach dem 3. Mal lesen unverständlich sind und die Fehlerquelle unklar bleibt. Hier möchte ich einige Fehlermeldungen auflisten an die ich mich erinnern kann, und auch kurz notieren wann und wieso sie auftreten.
Ich nehme mich da selbst nicht aus, in meinen Applikationen sind die Fehlermeldungen auch nicht immer sehr aussagekräftig, vor allem wenn sie sehr selten oder „nie“ auftreten sollten, von daher wird hier niemand an den Pranger gestellt, es soll nur helfen einige interessante Meldungen zu verstehen:
Weiterlesen »
Linkpool Nummer 30
Hier einige Links die ich in den letzten 3 Wochen aufgeschnappt habe:
Einblicke hinter die Kulissen bei Draw Something, der am schnellsten wachsenden App:
Verbesserung der Disk-IO in Smarty:
Google HTML/CSS Style Guide:
Weiterlesen »
Sicherheitsupdate für PHP bei CGI-Verwendung
Gestern wurden neue Versionen für PHP 5.4 und 5.3 released, namendlich: 5.4.2 und 5.3.12. Grund für diese neuen Versionen ist eine gravierende Sicherheitslücke bei der Verwendung von PHP im CGI-Modus.
Aber erstmal Entwarnung: Wahrscheinlich nutzt ihr kein CGI mehr sondern FastCGI oder mod_php, dann seid ihr nicht gefährdet. Wer aber noch auf die alte CGI-Schnittstelle setzt sollte sich schleunigst informieren und updaten um schlimmeres zu vermeiden, denn dank dieser leicht auszunutzenden Lücke ist es jedermann möglich, die Quelltexte euer PHP-Dateien im Document-Root anzuschauen oder auch beliebigen eingeschleusten PHP-Code auszuführen.
Wer seine alte Installation nicht anfassen darf oder kann, für den gibt es Hilfe in Form einer Rewrite-Regel:
Unbekannte und nützliche MySQL-Funktionen
Auf der Suche nach einer schnelleren Möglichkeit Daten aus einer MySQL Tabelle auszulesen bin ich auf die MySQL-Funktion GROUP_CONCAT() gestossen. Wenn man beispielsweise eine kommaseparierte Liste aller Usernamen benötigt würde man normalerweise folgendes tun:
$usernames = array(); $result = mysql_query('SELECT Username FROM users ORDER BY UserId'); while ($row = mysql_fetch_assoc($result)) { $usernames[] = $row["Username"]; } echo join(',', $usernames);
Mit GROUP_CONCAT() kann man sich die Schleife sparen und erhält direkt einen kommaseparierten String (der Trenner kann natürlich geändert werden, siehe übernächstes Beispiel):