[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • xForm -> Frage zu Passwort-Element
Seite 1 von 1

xForm -> Frage zu Passwort-Element

Verfasst: 3. Mär 2010, 21:50
von ra-V-en
Ist es möglich bei dem Addon xForm das Psswortfeld zu zu erstellen wie es bei dem Addon Addon-Helper möglich ist?

Ich meine das Passwortfeld leer ist und nur bei einer Eingabe der Wert übermittelt wird, und der auch mit einer Verschlüsselungsfunktion (sha1/md5) vor dem Eintrag in der Datenbank geparst wird?

Ich danke für eure Mithilfe :-)

Stefan

Gelöst : Problem mit Passwort-Element

Verfasst: 5. Mär 2010, 14:49
von ra-V-en
Das Problem mit dem Passwort-Formularelement habe ich wie folgt gelöst:

Änderung in der Klasse:

rex_xform_password Zeile 21:

Code: Alles auswählen

htmlspecialchars(stripslashes($this->value)) . '" />
ersetzen mit:

Code: Alles auswählen

 '" />
Und folgende Klasse im ordner actions anlegen:

Code: Alles auswählen

<?php
/**
 * Erweiterung der Klasse rex_xform_action_abstract um die Möglichleit Werte zu verschlüsseln
 * @package xForm addon v1.4.1
 * @version $id class.xform_action_pswencrypt.inc.php v1.0 05.03.2010 Exp $
 */
class rex_xform_action_encryptpsw extends rex_xform_action_abstract {
  /**
   * Verschlüsselt den Wert label mit der angegebenen Funktion,
   * sollte der Wert label nicht vorhanden/gefüllt sein, so wird der Wert aus dem jeweiligen Array
   * gelöscht, und nicht weiterverarbeitet.
   */
  function execute(){
    $str_label    = $this->action["elements"][2]; //Was soll verschlüsselt werden
    $str_encrypt  = $this->action["elements"][3]; //Verschlüsselungsfunction sha1()|md5()
    //Verschlüsseln von sql-werten
    foreach($this->elements_sql as $sql_label=>$value){
      if($str_label == $sql_label){
        if($value != ''){
          $this->elements_sql[$sql_label] = $str_encrypt($value);
        }else{
          unset($this->elements_sql[$sql_label]);
        }
      }
    }
    //Verschlüsseln von email_werten
    foreach($this->elements_email as $email_label=>$value){
      if($str_label == $email_label){
        if($value !== ''){
          $this->elements_email[$email_label] = $str_encrypt($value);
        }else{
          unset($this->elements_email[$email_label]);
        }
      }
    }
    return;
  }

  function getDesription(){
    return "action|encryptpsw|label|md5 OR sha1";
  }
}
?>
Bei dieser Klasse wird nicht überprüft ob der Benutzer das passwort ändern darf, oder ob er die Änderung bestätigt hat. Die kann man aber leicht mit der validate klasse compare erledigene
Vieleicht kann es ja noch jemand brauchen :-)

MfG

Stefan