Regexp für E-Mail Adressen

Was für eine RegExpression verwendet ihr zum checken einer E-Mail Adresse?
Meine letzte, ziemlich einfache:

<?php

return preg_match ('%^(.+)@(.{2,})\.(.{2,4})$%i', $email);

?>

Schnipsel

Eine Sammlung von schönen Codeschnipseln und weiteren, interessanten Arbeitshilfen (php::bar sollte man eigentlich kennen ;) ): http://phpbar.de/hilfen/faq/index.php?ch=snippets

Wie nutze ich die crypt()-Funktion

Nach dem Beitrag beim M-E-X Blog, und nachdem ich gemerkt habe, dass pastebin.com die Codes auch wieder löscht, poste ich hier nochmals den Beispielcode.

<?php

function random ($len)
{
  $times = ($len % 40) + 1;
  $random = '';
  for ($i = 0; $i < $times; $i++)
  {
    mt_srand((double)microtime()*1000000);
    $r = mt_rand();
    $random .= sha1(uniqid($r,TRUE));
  }
  return substr ($random, 0, $len);
}

// salt holen
if (CRYPT_BLOWFISH) {
  $salt = '$2$' . random (13);
} else if (CRYPT_MD5) {
  $salt = '$1$' . random (9);
} else if (CRYPT_EXT_DES) {
  $salt = random(9);
} else {
  $salt = random (2);
}
$pass = 'geheim';
$pass_zum_speichern_in_datenbank = crypt ($pass, $salt);

// die Überprüfung
$pass_eingegeben_von_benutzer = 'geheim';
$pass_geholt_aus_datenbank = $pass_zum_speichern_in_datenbank;
if ($pass_geholt_aus_datenbank == crypt ($pass_eingegeben_von_benutzer, $pass_geholt_aus_datenbank)) {
  echo 'Passwort korrekt';
} else {
  echo 'Passwort inkorrekt';
}

?>

Die häufigsten PHP-Fehler #1

Wo wir schon bei HTTP-Headern waren…

Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.

POST Formulare

Im Leben eines PHP-Programmierers (eigentlich kann ich diese Einleitung ab jetzt weglassen) stößt man früher oder später auf POST-Formulare. Eher früher. Das einzig Störende bei POST-Formularen ist das:

Eine kleine Lösung zeigt folgendes Beispiel:
formular.php zeigt das Formular an. formular-annahme.php nimmt die POST-Daten entgegen.
Eine (eigentlich zwei) kleine Zeile in formular-annahme.php macht den Back-Button wieder nutzbar:

<?php

$_SESSION['POST'] = $_POST;
header ('Location: http://mein.php.beispiel/weiter.php');

?>

weiter.php verarbeitet dann die POST-Daten in gewünschter Weise.

Und vergesst nicht die Eingaben zu sanitizen ;)

Übrigens verwende ich das Plugin Syntax-Hilite

Fehler…

Im Leben eines Programmierers trifft man manchmal auf Probleme, die man einfach nicht nachvollziehen kann. Ich bin so baff, dass ich nicht einmal mehr verzweifeln kann.
Ich habe einen PHP-Code, in dem ich folgende Zeile habe:

if ($this->_defaultLang != $requestedLang) {
tu was....
}

In dieser Variante funktioniert alles problemlos.

In der folgenden Variante jedoch versagt mein Skript auf skurrilste Weise:

if ($requestedLang != $this->_defaultLang) {
tu was....
}

Ein Argument einer völlig anderen Methode einer völlig anderen Klasse hat sich von einem String zu einem Objekt geändert.
Bin ich jetzt blöd? Ich weiß, dass ab und zu Vergleichsoperatoren irrwitzige Ergebnisse liefern, aber wie zum Teufel soll ich diesen Fehler jetzt nachvollziehen? Bitte Hilfe zum Verständnis der Welt…. ;)