Newsletteranmeldung, E-Mail Adresse doppelt eingeben

Gesperrt
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Newsletteranmeldung, E-Mail Adresse doppelt eingeben

Beitrag von stefkey »

Hallo zusammen,

hat jemand die Zeilen parat welche ich zum Newslettermodul (Handler) hinzufügen muss um 2 eingegebene E-Mail Adressen auf Gleichheit zu überprüfen?
Konkret soll die E-Mail Adresse bei der Anmeldung für den Newsletter doppeln eingetragen werden und dann überprüft werden ob die Eingabe übereinstimmt um Tippfehlerauszuschließen.

Ich nehme mal an das im Handler-Modul folgende Zeilen ergänzt werden müssen:

Code: Alles auswählen

....
if ($action == "subscribe") { 

  if (!isset($email) || !$email) { 
    $strMessage = mi18n("Please specify an e-mail address.");
  } elseif (!isValidMail($email)) {
    $strMessage = mi18n("Please specify a valid e-mail address.");
  } elseif ($objRecipients->emailExists($email)) {
    $strMessage = mi18n("This e-mail address has been already registered for the newsletter.");
  } elseif (!isset($Nachname) || !$Nachname ) { 
    $strMessage = mi18n("Please specify a valid surname.");
  } elseif (!isset($Vorname) || !$Vorname ) { 
    $strMessage = mi18n("Please specify a valid name.");
  } else {
    $email = ereg_replace("\n", "", $email); 
    $email = ereg_replace("\r", "", $email); 
    unset($recipient);
.... 
usw
Meine php-Kenntnisse sind allerdings schwach bis sehr schwach um hier eine Ergänzung mit grüner Ampel hinzuzufügen ;-)
Danke für die Mühe schonmal vorab.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Newsletteranmeldung, E-Mail Adresse doppelt eingeben

Beitrag von xmurrix »

Hallo stefkey,

du fügst einfach vor dem else Zweig noch zwei "else if" Blöcke ein, also den Code

Code: Alles auswählen

  ...
  } elseif (!isset($Vorname) || !$Vorname ) { 
    $strMessage = mi18n("Please specify a valid name.");
  } else {
    $email = ereg_replace("\n", "", $email); 
    $email = ereg_replace("\r", "", $email); 
    unset($recipient);
    ...
ersetzen gegen

Code: Alles auswählen

  ...
  } elseif (!isset($Vorname) || !$Vorname ) { 
    $strMessage = mi18n("Please specify a valid name.");
  } elseif (!isset($email2) || !$email2) { 
    $strMessage = mi18n("Please specify the second e-mail address.");
  } elseif ($email !== $email2) { 
    $strMessage = mi18n("Both e-mail addresses don't match.");
  } else {
    $email = ereg_replace("\n", "", $email); 
    $email = ereg_replace("\r", "", $email); 
    unset($recipient);
    ...
Dann must du dafür sorgen, dass im Formular ein input-Feld mit name="email2" ausgegeben wird.

So sollte es funktionieren...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Newsletteranmeldung, E-Mail Adresse doppelt eingeben

Beitrag von Spider IT »

Hallo,

ich würde die Prüfung im Formular machen, per JavaScript:

Code: Alles auswählen

    <script type="text/javascript">
    //<![CDATA[
        function CheckInput() {
            var e1 = document.getElementById('email').value;
            var e2 = document.getElementById('email2').value;
            if ((e1.length > 0) && (e1 == e2)) {
                return true;
            } else if (e1.length == 0) {
                alert('Sie müssen eine E-Mail Adresse angeben');
            } else {
                alert("Ihre Eingaben stimmen nicht überein.\nBitte prüfen Sie Ihre Eingaben.");
            }
            return false;
        }
    //]]>
    </script>
    <div class="boxleft">
        <span class="x">Newsletter</span>
        <form name="newsletterform" method="post" action="{FORM_ACTION}" onsubmit="return CheckInput();"{FORM_TARGET}>
            <label for="emailname">{EMAILNAME}</label><br />
            <input id="emailname" type="text" name="emailname" value="" class="input_boxleft"/><br />
            <label for="email">{EMAIL}</label><br />
            <input id="email" type="text" name="email" value="" class="input_boxleft"/><br />
            <label for="email2">Wiederholung</label><br />
            <input id="email2" type="text" name="email2" value="" class="input_boxleft"/><br />
            {EXTRAHTML}
            <label for="action">AKTION</label><br />
            <select id="action" name="action" class="input_boxleft">
                <option value="subscribe" selected>{SUBSCRIBE}</option>
                <option value="delete">{DELETE}</option>
            </select><br />
            <a href="javascript:if(CheckInput()){document.forms['newsletterform'].submit();}" title="{GO}">Go</a><br />
        </form>
    </div>
Änderungen am Modul-Template (hier die Version der 4.6.x):
  1. JavaScript-Block
  2. onsubmit-Angabe in FORM-Tag
  3. Zusätzliches Eingabefeld "Wiederholung"
  4. Weil im Link direkt per JavaScript abgesendet wurde, hier auch nochmal den Aufruf der Funktion (JavaScript umgeht sonst die Prüfung)
Damit wird ein Hinweis eingeblendet und das Absenden verhindert.
Testen kannst du das hier

Gruß
René
Gesperrt