Benutzerregistrierung um Formularfelder erweitern
Veröffentlichungsdatum: 26. April 2013
Änderungsdatum: 02. September 2020
benutzerregistrierung register formular
Weitere Formularfelder für die Benutzerregistrierung erweitern Sie einfach über den Formulareditor.
Das Weblic® Benutzerregistrierung können Sie komfortabel über den Formulareditor um weitere Felder ergänzen.
In diesem Beispiel wird die Benutzerregistrierung um die Felder "Straße", "PLZ" und "Ort" erweitert.
Legen Sie hierzu über den Formulareditor die Formularfelder an. Setzen Sie zusätzlich in den entsprechenden E-Mail Vorlagen die Platzhalter zum Auslesen der Formulardaten, um diese beim E-Mail Versand entsprechend einzulesen.
Formularfelder erweitern und Platzhalter ergänzen
Formularfelder erweitern
Platzhalter ergänzen
Damit die Daten in der Benutzerdatei des neuen Benutzers hinterlegt werden, erweitern sie den PHP-Quelltext in den "Erweiterten Formulareinstellungen" innerhalb der Box "Nach dem Absenden auszuführendes Skript" um die entsprechenden Variablen und XML-Knoten (falls noch nicht gesetzt).
PHP-Quelltext: Nach dem Absenden auszuführendes Skript
...
$street = wStringconverter::convertToXml($mailData["street"]);
$zipcode = wStringconverter::convertToXml($mailData["zipcode"]);
$town = wStringconverter::convertToXml($mailData["town"]);
/*
// alternativ Mehrfachauswahl (multiselect oder checkboxen, für z.B. Standorte)
$locations = array();
$locationString = '';
foreach($mailData['locations'] as $location){
$locations[] = $location;
}
$locationString = implode('|', $locations); // Werte per Pipe getrennt
$locations = $locationString;
*/
...
// Anlegen der Benutzerdatei
...
<street class="business" value="'.$street.'"/>
<town class="business" value="'.$town.'"/>
<zipcode class="business" value="'.$zipcode.'"/>
// <meta name="locations" value="'.$locations.'"/>
...Für den Versand der E-Mail zur Aktivierung des Benutzers erweitern Sie den PHP-Quelltext für die Bestätigung der Registrierung um die zusätzlichen Benutzerdaten.
PHP-Quelltext: Bestätigung Ihrer Registrierung
...
if(wPageCur::getVar('hasToActivateUser') == '1'){
print '<p>Ihre Registrierung wurde erfolgreich durchgeführt.</p><p><strong>Sie erhalten eine E-Mail, sobald Ihr Benutzer freigeschaltet wurde!</strong></p>';
$mailData["emailSystem"] = wPageCur::getVar('emailSystem');
$mailData['emailActivatorUser'] = wPageCur::getVar('emailActivatorUser');
$mailData['username'] = $userName;
$mailData['firstname'] = wUserData::getData($userName, 'firstname');
$mailData['lastname'] = wUserData::getData($userName, 'lastname');
$mailData['email'] = wUserData::getData($userName, 'email');
// weitere Felder:
$mailData['street'] = wUserData::getData($userName, "/wUser/street[@class = 'business']/@value");
$mailData['zipcode'] = wUserData::getData($userName, "/wUser/zipcode[@class = 'business']/@value");
$mailData['town'] = wUserData::getData($userName, "/wUser/town[@class = 'business']/@value");
$mailData['urlToActivateUser'] = wURL::setParameter(wURL::setParameter(wURL::setParameter(wRequest::getUrl(), 'status', 'activateUser'), 'optInID', ''), 'activationID', wUserData::getData($userName, '/status/@activationID'));
wMailer::sendMailStr(wPageCur::getVar('mailStrActivateUser'), $mailData);
}
...- Wie kann ich die Benutzerregistrierung um zusätzliche Formularfelder erweitern?
- Über den Formulareditor können Sie die Formularfelder für die Benutzerregistrierung anlegen und ergänzen. Im Beispiel werden die Felder „Straße“, „PLZ“ und „Ort“ hinzugefügt.
- Wie speichere ich die zusätzlichen Felder in der Benutzerdatei des neuen Benutzers?
- Erweitern Sie im Bereich „Erweiterten Formulareinstellungen“ (innerhalb von „Nach dem Absenden auszuführendes Skript“) den PHP-Quelltext um die passenden Variablen sowie XML-Knoten. So werden die Werte (z. B. Straße, PLZ, Ort) aus den Formularfeldern in der Benutzerdatei hinterlegt.
- Welche Variablen werden im Skript benötigt, um die Daten der zusätzlichen Formularfelder auszulesen?
- Sie müssen die entsprechenden Variablen aus den Mail-Daten setzen, z. B. <code class="codeInline">$street</code>, <code class="codeInline">$zipcode</code> und <code class="codeInline">$town</code>, und diese in XML-Knoten eintragen. Dazu werden die Eingaben typischerweise via <code class="codeInline">wStringconverter::convertToXml($mailData["..." ])</code> vorbereitet.
- Wie füge ich die Werte der neuen Formularfelder in die Benutzerdatei per XML ein?
- Tragen Sie die Felder im Skript im Bereich „Anlegen der Benutzerdatei“ als XML-Knoten ein, z. B. <code class="codeInline"><street class="business" value="..."/></code>, <code class="codeInline"><zipcode class="business" value="..."/></code> und <code class="codeInline"><town class="business" value="..."/></code>.
- Was muss ich tun, damit die Aktivierungs-E-Mail die zusätzlichen Benutzerdaten enthält?
- Erweitern Sie im PHP-Quelltext der „Bestätigung Ihrer Registrierung“ den Teil für den Versand der Aktivierungs-E-Mail um die zusätzlichen Felder. Dafür werden die Werte aus der Benutzerdatei gelesen und ins <code class="codeInline">$mailData</code>-Array übergeben, bevor <code class="codeInline">wMailer::sendMailStr(...)</code> aufgerufen wird.
- Welche zusätzlichen Daten werden für den Versand der Aktivierungs-E-Mail ausgelesen?
- Neben Basisdaten wie <code class="codeInline">emailSystem</code>, <code class="codeInline">emailActivatorUser</code>, <code class="codeInline">username</code> sowie <code class="codeInline">firstname</code>, <code class="codeInline">lastname</code> und <code class="codeInline">email</code> werden im Beispiel zusätzlich <code class="codeInline">street</code>, <code class="codeInline">zipcode</code> und <code class="codeInline">town</code> über <code class="codeInline">wUserData::getData(...)</code> ausgelesen und in <code class="codeInline">$mailData</code> gesetzt.
- Wie wird der Aktivierungslink in der Aktivierungs-E-Mail zusammengesetzt?
- Der Aktivierungslink wird über <code class="codeInline">wURL::setParameter(...)</code> gebaut, indem der aktuelle URL um Parameter wie <code class="codeInline">status=activateUser</code>, <code class="codeInline">optInID</code> und <code class="codeInline">activationID</code> (aus den User-Daten) ergänzt wird. Das Ergebnis wird in <code class="codeInline">$mailData['urlToActivateUser']</code> gespeichert und an die Mail übergeben.
- Kann ich statt einzelner Felder auch Mehrfachauswahl (z. B. Standorte) in die Benutzerdatei übernehmen?
- Ja. Im Beispiel ist eine alternative Variante als Kommentar vorhanden: Mehrfachauswahl kann gesammelt werden (z. B. <code class="codeInline">$mailData['locations']</code>), anschließend zu einem String zusammengefügt werden (z. B. per Pipe <code class="codeInline">|</code> getrennt) und dann als Wert gespeichert werden (im Beispiel ist das meta-Feld <code class="codeInline"><meta name="locations" .../></code> angedeutet).
- Wann wird die Aktivierungs-E-Mail versendet?
- Die Aktivierungs-E-Mail wird versendet, wenn im Skript geprüft wird, dass <code class="codeInline">wPageCur::getVar('hasToActivateUser') == '1'</code> ist. Nur dann wird die Aktivierungsmail (inkl. zusätzlicher Benutzerdaten) zusammengestellt und versendet.