Webentwicklung

Symfony und Webentwickler Cheatsheets

Posted in Webentwicklung on July 20th, 2009 by admin – Be the first to comment

Dieser Artikel schreibt sich meiner Meinung nach fast wie ein Programm mit Symfony, man hat eine Idee und den Rest macht das Framework :D Statt stundenlang das Netz nach guten Cheatsheets zu durchsuchen oder selbst welche zu entwerfen, reicht ein Blick ins Symfony-Wiki:

Weitere tolle Cheatsheets für die Webentwicklung findet man dann noch bei Added Bytes:

Und zum Schluss noch für AJAX:

Im Gunde nichts weltbewegend Neues, aber hilfreich, wie ich finde :D
Wünsch allen einen guten Start in die Woche.

Password-Validation in Symfony 1.2

Posted in Symfony Framework, Webentwicklung on July 17th, 2009 by admin – Be the first to comment

Ich habe eben zum ersten mal ein Registrierungsformular für eine Anwendung im Symfony Framework geschrieben. So etwas kann man ja durchaus mal öfters gebrauchen daher stell ich die sfForm Klasse hier für alle zur Verfügung.

Übrigens der sfValidatorSchemaCompare funktioniert erst wenn die Felder darin mit einem Validator initiiert sind, da er ein globaler Validator ist (siehe in der Doku). In dem Beispiel werden die beiden Passwortfelder mit jeweils dem sfValidatorString und das erste noch mit dem sfValidatorRegex initiiert.

  1. class RegistrationForm extends sfForm {
  2.  public function configure() {
  3.   $this->setWidgets(array(
  4.    ‘username’      => new sfWidgetFormInput(),
  5.    ‘password1′     => new sfWidgetFormInputPassword(),
  6.    ‘password2′     => new sfWidgetFormInputPassword(),
  7.    ‘email’         => new sfWidgetFormInput(),
  8.    ));
  9.  
  10.   $this->setValidators(array(
  11.    ‘username’   => new sfValidatorString(array(
  12.       ‘max_length’ => 30,
  13.       ‘required’ => true)),
  14.    ‘email’         => new sfValidatorEmail(),
  15.    ‘password1′  => new sfValidatorAnd(array(
  16.      new sfValidatorRegex(array(
  17.        ‘pattern’ => "/[[:upper:]+[:lower:]+[digit:]+/")),
  18.      new sfValidatorString(array(
  19.        ‘min_length’ => 8)
  20.    ))),
  21.    ‘password2′  => new sfValidatorString(array(
  22.        ‘min_length’ => 8,
  23.        ‘required’ => true)),
  24.    ));
  25.    $this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
  26.      new sfValidatorSchemaCompare(‘password1′, ‘==’, ‘password2′),
  27.      new sfValidatorPropelUnique(array(
  28.        ‘model’ => ’sfGuardUser’,
  29.        ‘column’ => ‘username’,
  30.        ‘field’ => ‘username’))
  31.    )));
  32.   }
  33. }

Mit dem RegEx Validator lässt sich dann schön überprüfen, ob das Passwort den eigenen Sicherheitsrichtlinien entspricht. Im Beispiel muss das Passwort mindestens ein Großbuchstabe, ein Kleinbuchstabe und eine Ziffer enthalten.
Für die Regulären Ausdrücke hier noch der Link zu einem Cheatsheet, falls noch nicht bekannt :D

Wenn jemand eine Adaption auf ältere Symfony Versionen versucht, dann muss er auf jeden Fall den Compare-Validator ändern in:

  1. $this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare(‘password1′, sfValidatorSchemaCompare::EQUAL, ‘password2′));

Da Symfony 1.2 abwärtskompatibel in diesem Punkt ist, funktionieren dort beide Varianten.

Zum Schluss wird dann mit sfValidatorPropelUnique noch überprüft ob der Username bereits verwendet wird.

Jetzt werde ich dem ganzen noch die Verifikation der E-Mail mit einem Aktivierungsschlüssel verpassen, dazu näheres dann in einem weiteren Beitrag.