PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


PHPStorm 60% günstiger! Bis zum 30.04.2011

with 51 comments

Als Ostergeschenk gibt JetBrains 50% Rabatt auf PHPStorm ab heute bis zum 30.04.2011. Zusammen mit meinem Gutschein über 20% ergibt das insgesamt 60% Rabatt! Statt 99€ nur noch 39€!

Die neuesten Features, die in 2.1 kommen werden, sind übrigens:

Außerdem ist ein Jira-Connector in Planung. PHPStorm rockt!

Written by Michael Kliewe

April 20th, 2011 at 2:56 pm

Posted in PHP

Tagged with ,

Ein eigener Zend_Auth_Adapter gegen einen IMAP Server

with 3 comments

Mit Hilfe von Zend_Auth kann man wunderbar Authentifizierungen durchführen, und dem Zend Framework liegen auch bereits einige Adapter bei, wie zum Beispiel DbTable, Digest, Http, InfoCard, Ldap und OpenId. In einem meiner Projekte wollte ich gegen einen IMAP-Server authentifizieren, jeder der einen IMAP-Account hat soll sich auf der Webseite einloggen können. Dazu habe ich einen kleinen Auth-Adapter geschrieben, den man so benutzt:

// authenticate against imap
$imapAdapter = new App_Auth_Adapter_Imap($this->_applicationIni->imap->host);

$imapAdapter->setIdentity($formData['LoginName'])
    ->setCredential($formData['LoginPassword']);

$result = $imapAdapter->authenticate();

if (!$result->isValid()) {
    // Authentication failed
} else {
    // Authentication successful
}

Der genutzte Adapter sieht so aus:

Weiterlesen »

Written by Michael Kliewe

April 19th, 2011 at 10:26 am

Posted in PHP

Tagged with , , ,

PHP 5.3 Feature: Late static binding (LSB)

with 9 comments

PHP 5.3 brachte unter anderem auch Late-Static-Binding (LSB). Ich würde tippen, dass einige von euch wissen was das ist, aber nur sehr wenige von euch dieses Feature bisher benötigt und eingesetzt haben. Ich möchte hier zwei kleine Beispiele zeigen, an dem klarer wird, wofür LSB benötigt wird:

class ClassA {
    public static function getName() {
        return self::name();
    }

    public static function getNameLSB() {
        return static::name();
    }

    public static function name() {
        return 'ClassA';
    }
}

class ClassB extends ClassA {
    public static function name() {
        return 'ClassB';
    }
}

echo ClassB::getName();       // ClassA
echo ClassB::getNameLSB();    // ClassB

Je nachdem ob self:: oder static:: genutzt wird, wird einmal die Elternmethode und einmal die Kindmethode aufgerufen. self:: bindet sich früh (beim Kompilieren) an seine Klasse, static:: erst bei der Ausführung (dann an die Kindklasse).

Weiterlesen »

Written by Michael Kliewe

April 17th, 2011 at 2:44 pm

Posted in PHP

Tagged with , , , ,

Passwortrichtlinien, was tun und was nicht?

with 54 comments

Vor kurzem bin ich wieder auf das leidige Problem „Passwortrichtlinien“ gekommen.

Erster Punkt: Xing
Das Minimum für das Passwort bei Xing beträgt 4 Zeichen. Von einer Pflicht, doch mindestens eine Zahl oder ein Sonderzeichen oder Großbuchstaben zu verwenden weit entfernt. Ist das nicht eine Einladung für Hacker/Cracker?

Zweiter Punkt: NGZ
Bei NGZ habe ich einen Account, um den Rootserver eines Bekannten zu administrieren. Immerhin können dort zusätzliche Accounts eingerichtet werden, und der Besitzer muss nicht seinen Login weitergeben. Allerdings wurde mir bei Benutzung der „Passwort vergessen“ Funktion mein Original Passwort per Email zugesandt! Sprich, Passwörter stehen dort im Klartext in der Datenbank, und sie werden in unverschlüsselten E-Mails durch das Internet geschickt und wohlmöglich von einigen per unverschlüsseltem WLAN abgeholt. Dann nützt auch https nichts für die Webseite.

Dritter Punkt: Sparkasse
Ich weiß ja nicht wie es bei euch ist, aber bei meiner Sparkasse muss man ein exakt 5-stelliges Passwort angeben. Das schränkt die Möglichkeiten sehr stark ein und ein wirklich sicheres Passwort ist damit nicht möglich. Selbst die Sonderzeichen sind auf öäüÖÄÜß beschränkt, warum nicht die anderen Sonderzeichen wie ()$%#+ usw? Warum zum Teufel tut das eine Bank?

Wie lauten eure Passwortrichtlinien, privat oder beruflich? Welche Schranken haltet ihr für zu niedrig und welche sind evtl. auch zu hoch? Wie speichert ihr Passwörter in der Datenbank, im Klartext, MD5/SHA1 gehasht, mit Salt oder ohne, oder sogar mehrfach gehasht? Welche „Passwort-vergessen“ Funktionalität haltet ihr für sinnig und welche für sinnlos bzw. sogar gefährlich?

Written by Michael Kliewe

April 15th, 2011 at 10:30 am

Ein paar Zend_Mail Tricks

with 12 comments

Wer Mails verschickt, nutzt bei sehr einfachen (Admin) E-Mails meistens die eingebaute mail() Funktion. Sobald es aber darum geht komplexere E-Mails zu versenden wird man wahrscheinlich eine Klasse benutzten, die es einem einfacher macht, Anhänge anzuhängen, einen text/plain und einen text/html Teil mitzusenden, zusätzliche Empfänger zu definieren oder inline-Bilder gleich mit in die Email zu packen.

Es gibt dutzende gute Mail-Klassen und Libraries da draußen (ezcMail, htmlMimeMail5), ich benutze häufig Zend_Mail. Mit den verschiedenen Zend_Mail_Transport_* Klassen ist es möglich, die Mails über sendmail (sprich über mail()) zu versenden, oder aber beispielsweise mit Hilfe des SMTP-Protokolls an einen SMTP-Server zu übergeben. Seit wenigen Monaten neu ist Zend_Mail_Transport_File, womit die E-Mail nicht versendet wird, sondern „nur“ in eine Datei geschrieben wird. Ich habe mir früher einen solchen Adapter selbst geschrieben, nun ist er im Zend Framework enthalten.

Mit diesem Adapter ist es sehr einfach möglich, beispielsweise in der Entwicklungsumgebung keine E-Mails zu versenden, damit nicht aus Versehen beim Testen des Abschickens eines Formulars wirkliche E-Mails versendet werden, sondern nur zu Debuggingzwecken in eine Datei geschrieben wird. Beispielsweise so:

Weiterlesen »

Written by Michael Kliewe

April 5th, 2011 at 9:18 am

Posted in PHP

Tagged with ,