Archive for the 'PHP' Category

Webseiten Performanz

Bei Yahoo gibts 14 Best-Practices for Speeding Up Your Web Site.

Prädikat Lesenswert.

PHP5.2 bringt inkonsistente include_path Fehler

Es sieht ganz so aus als ob PHP5.2.x einen komischen Bug in Verbindung mit Apache VHosts und dort gesetzten include_paths hat.

Sobald man in einem VHost den include_path ändert funktioniert ini_set in allen Vhosts nicht mehr. Um das ganze noch ein wenig spannender zu machen tritt der Bug nicht immer auf, d.h. er ist extrem schwer zu debuggen.

Toll.

Update: Die Lösung war keine Include_Paths in den Vhosts zu setzen, da das PHP5 Modul damit Probleme hat.

Email Adresse in PHP validieren

if(!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i”,$email)) { return true; }

Quelle: How to find or validate Email AdressĀ 

Scaffoldr 2.0

Wer bei PHP/MySQL Projekten die CRUD Seiten fürs Backend nicht dauernd von Hand bauen will und keine Lust hat sich in ein riesiges Framework einzuarbeiten der sollte sich mal meinen CRUD Code Generator Scaffoldr anschauen.

Das ist ein Template basiertes PHP Script das die CRUD Seiten für eine komplette Datenbank innerhalb weniger Sekunden erstellt. Inkl. differenzierter Behandlung der einzelnen Feld-Datentypen, sortierbaren Spalten sowie “Pageination”.

Ich benutze das oft als Basis für das Administrationsbackend von Webprojekten. Für ein Benutzer-Frontend ist es dagegen weniger geeignet, da weitgehend auf Sicherheitsüberprüfungen verzichtet wird. Daher vorsicht vor SQL-Injection Attacken wenn man nicht vertrauenswürdige Benutzer ran lässt.

Eclipse RCP: CorruptedCodeException

Wenn man versucht eine RCP Application mit dem FlexiProvider und dem FhG Codec zu bauen laufen einem zuweilen schon sehr komische Fehler über den Weg.

Interessant wird es wenn die RCP-App. gar nicht mehr startet und CorruptedCodeExecptions schmeißt.

Es gibt ein paar Punkte auf die man achten sollte.

Continue reading ‘Eclipse RCP: CorruptedCodeException’

PHP/MySQL: Client does not support authentication protocol

Problem: PHP/MySQL kann sich nicht zu einem MySQL-Server verbinden und bricht mit der Fehlermeldung
Client does not support authentication protocol
ab.

Das passiert wenn die Version der MySQL Laufzeit Bibliothek inkompatibel mit der Version des MySQL-Servers ist, da irgendwann das Format der Passworte geändert wurde.

Wenn man sich dennoch mit einem “alten” Client zum Server verbinden will kann man für diese Benutzer das Passwort auf das alte Format zurücksetzen indem man folgenden Befehl ausführt
SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');.

Weitere Informationen gibts in der MySQL-Dokumentation.

Komplexe Datenstrukturen in PHP?

Nachdem ich mir Gedanken über eine Portierung des Spell Checkers von Java nach PHP gemacht habe, ist mir aufgefallen, dass es scheinbar gar keine komplexen Datenstrukturen in PHP gibt.

Natürlich kann man sich das alles selbst bauen, aber eine ordentliche Implementierung von Set, List, Tree & Co. wie in Java scheint es in PHP nicht zu geben.

Das Problem bei der PHP Umsetzung ist im Moment, dass ich ja keine ständig laufende Application sondern einzelne Request habe und daher nicht jedesmal den langwierigen Trainingsprozess durchlaufen kann. Als Alterantive scheint mir eine SQL-Datenbank geeignet, aber bevor das so funktioniert wie ich es mir vorstelle muss ich noch einen Weg finden die Daten dort effektiv abzulegen und aufzufinden. 90.000 SQL-Abfragen pro Suchanfrage sind einfach noch ein bischen zu viel ;)

No Spam!

Gestern bin ich durch eine Anzeige auf das Buch “No Spam! Besser vorbeugen als heilen” von Tobias Eggendorfer aufmerksam geworden.

In der Anzeige wurden unter andem die folgenden Punkt angeführt:

  • Woher haben Spammer die Adressen?
  • Grundlegende Vorsichtsmaßnahmen
  • eMail Adressen verstecken
  • Harvester blockieren
  • Absichern von Mailinglisten und Newslettern

Wenn ich das Inhaltsverzeichnis so lese, fage ich mich ernsthaft warum man dieses Thema auf ca. 160 Seiten aufblähen muss, und warum man dazu ein ganzes Buch verfasst. Die angesprochenen Punkt lassen sich eigentlich in ein paar Zeilen zusammenfassen, und genau das werde ich hier versuchen.

Was ist Spam?

Der Begriff Spam stammt aus einem Monty Python Sketch und ist die Umgangssprachliche Bezichnung für UCE/UCB was für “Unsolicited Commercial E-mail” bzw. “Unsolicited Commercial Bulk E-mail” steht. Gemeint sind damit unerwünschte Nachrichten die in großem Umfang an eine Vielzahl von Benutzern verschickt wird. Ein weiteres Merkmal von Spam ist, dass in der Regel keine (bewusste) Anmeldung/Einwilligung zum Empfang desselben erfolgte.

Woher haben Spammer die Adressen?

Wer eine möglichst große Anzahl an Personen im Internet erreichen will, kommt über kurz oder lang vielleicht auf die blöde Idee einfach Massenhaft Mails mit Werbung zu verschicken. Doch woher bekommt man die ganzen Adressen? Dafür gibt es ein paar Möglichkeiten. Der naivste Ansatz ist die Brute-Force Methode, d.h. einfach einen Mailserver kontaktieren und alle möglichen Kombinationen von zulässigen Zeichen als Emfänger auszuprobieren. Dies ist natürlich sehr Zeit- und Resourcen intensiv und führt wahrscheinlich bei den meisten Mailservern dazu, dass der sendende Host komplett ausgesperrt wird. Continue reading ‘No Spam!’

PHP: Cannot access empty property

Kurztipp: Probleme nach der Migration von PHP4 zu PHP5 (I)

Folgendes Problem tritt nach der Migration von PHP4 zu PHP5 auf:

Fatal error: Cannot access empty property in /www/xyz/abc.php on line xy

Bei mir ist dieses Problem aufgetreten weil sich da ein $ eingschmuggelt hatte wo es nichts zu suchen hatte.

Vorher
$this->free_result($this->$query_id);

Nacher
$this->free_result($this->query_id);

Wie man sieht genügt es das $-Zeichen zu entfernen.

SEO Toolkit mit AJAX und Widget

Das Do-it-Yourself SEO Toolkit “Xinu EXT” gibt es jetzt auch (wieder) mit einer schicken AJAX Oberfläche und einem Widget für die eigene Seite um den Besuchern alle wichtigen Kennzahlen direkt anzeigen zu können.

Alle wichtigen Links: Demo Seite, Projektseite, Download.