Checkbox zur Registrierung

  • Hallo Leute,

    ich habe bei unserem Fanclub das Plugin "Theme My Login" installiert.
    So ist schonmal gelöst dass die Nutzer kein Backend angezeigt bekommen.

    Jetzt suche ich aber eine möglich, um eine Checkbox zur Registrierung hinzuzufügen, gerade durch DSGVO möchte ich dass die Nutzer zur speicherung zustimmen was email und co bei einer reg angeht.

    Danke im voraus

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Vielleicht erbarmt sich ja jemand und schaut mal drüber und hilft mir.... ich wäre echt sehr sehr dankbar...

    Also ich habe wie im Link http://docs.thememylogin.com/adding-extra-registration-fields/ beschrieben eine theme-my-login-custom.php erstellt.

    Ebenso habe ich die erforderlichen Daten in der register_form.php eingetragen.

    Vorname und Nachname werden gespeichert, aber er nimmt nicht meine Checkbox an und es kommt immer die Fehlermeldung obwohl die checkbox aktiviert ist:

    ausschnitt aus der theme-my-login-custom.php

    PHP
    function tml_registration_errors( $errors ) {
        if ( empty( $_POST['first_name'] ) )
            $errors->add( 'empty_first_name', '<strong>FEHLER</strong>: Bitte gib deinen Vornamen ein.' );
        if ( empty( $_POST['last_name'] ) )
            $errors->add( 'empty_last_name', '<strong>FEHLER</strong>: Bitte gib deinen Nachname ein.' );
        if ( empty( $_POST['DSGVO'] == "OK") )
            $errors->add ( 'empty_DSGVO', '<strong>FEHLER</strong>: Bitte der Speicherung zustimmen.' );
        return $errors;
    }

    ausschnitt aus der register_form.php

    PHP
    <p>
                Dieses Formular speichert Deinen Namen, Deine Email Adresse sowie den Inhalt, damit wir Deine Registrierung bearbeiten können. Weitere Informationen findest Du auf unserer Seite der <a href="http://domain.de/datenschutz/">Datenschutzbestimmungen</a>.<br />
            <input type="checkbox" name="DSGVO" id="user_dsgvo<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_dsgvo' ); ?>" /> mit der Speicherung einverstanden</p>

    Wo liegt der Fehler ?
    MEGA DANKE im voraus... ich verzweifle hier

  • Der Fehler ist in[FONT=Courier New] if ( empty( $_POST['DSGVO'] == "OK") )[/FONT], versuche mal etwas wie z.B.

    Code
    if ( empty( $_POST['DSGVO'] ) || $_POST['DSGVO'] != "OK" )

    Das setzt voraus, dass Dein [FONT=Courier New]$template->the_posted_value( 'user_dsgvo' )[/FONT] den String "OK" enthält, was Du durch das Betrachten des HTML-Quellcodes des Formulars im Browser prüfen kannst..

  • Ok Danke...
    Ob mein Theme das OK als String hat weiß ich nicht, ahbe noch keine Verknüpfung in der DB gemacht o.Ä.

    Dennoch:
    damit funktioniert zwar das Formular wieder, aber man kann sich auch registrieren ohne dass die checkbox ausgewählt ist

    welche Möglichkeit gäbe es denn noch eine einfache checkboxpflicht einzubauen ?

    Einmal editiert, zuletzt von dimendia (8. Juni 2018 um 17:53)

  • Schau doch einfach in den HTML-Quellcode, z.B. rechte Maustaste > Seitenquelltext anzeigen oder Tastenkombi Strg-U, was steht hier?

    [FONT=Courier New]<input type="checkbox" name="DSGVO" id="user_dsgvo..." class="input" value="[COLOR=#ff0000]hier[/COLOR]" ..[/FONT]

    Link zur Seite?

  • Dann schreibe doch mal statt

    [FONT=Courier New].. class="input" value="<?php $template->the_posted_value( 'user_dsgvo' ); ?>" />[/FONT]

    direkt das hier in die register_form.php

    [FONT=Courier New].. class="input" value="OK" />
    [/FONT]
    Allerdings sollte auch mit leerer value eine Registrierung mit der o.g. Abfrage eigentlich nicht möglich sein, wenn der Code richtig eingebunden ist. Hast Du auch die Zeile [FONT=Courier New]add_filter( 'registration_errors', 'tml_registration_errors' );[/FONT] in Deinem Code?

    6 Mal editiert, zuletzt von b3317133 (8. Juni 2018 um 19:51)

  • Ich habe es jetzt so eingebaut und es scheint zu funktionieren...

    PHP
    <p>
                Dieses Formular speichert Deinen Namen, Deine Email Adresse sowie den Inhalt, damit wir Deine Registrierung bearbeiten können. Weitere Informationen findest Du auf unserer Seite der <a href="http://domain.de/datenschutz/">Datenschutzbestimmungen</a>.<br />
            <input type="checkbox" name="DSGVO" id="user_dsgvo<?php $template->the_instance(); ?>" class="input" value="OK" /> mit der Speicherung einverstanden
            </p>

    und

    Code
    function tml_registration_errors( $errors ) {
        if ( empty( $_POST['first_name'] ) )
            $errors->add( 'empty_first_name', '<strong>FEHLER</strong>: Bitte gib deinen Vornamen ein.' );
        if ( empty( $_POST['last_name'] ) )
            $errors->add( 'empty_last_name', '<strong>FEHLER</strong>: Bitte gib deinen Nachname ein.' );
        if ( empty( $_POST['DSGVO'] ) )
            $errors->add ( 'empty_DSGVO', '<strong>FEHLER</strong>: Bitte der Speicherung zustimmen.' );
        return $errors;

    Einmal editiert, zuletzt von dimendia (9. Juni 2018 um 09:37)

  • Zitat


    Allerdings sollte auch mit leerer value eine Registrierung mit der o.g. Abfrage eigentlich nicht möglich sein, wenn der Code richtig eingebunden ist. Hast Du auch die Zeile [FONT=Courier New]add_filter( 'registration_errors', 'tml_registration_errors' );[/FONT] in Deinem Code?

    Ich dachte der untere Teil, sprich add filter, sei nur wenn ich das ganze an die DB übergeben will.

    Dort habe ich es bislang nicht eingetragen, die komplette Datei wie folgt aus


  • Nein, add_filter ändert etwas. Wenn Du eine Variable hast, in der "A" steht, kannst Du das mit einem Filter auf "B" ändern. In die Datenbank eintragen (nämlich die metas) tut update_user_meta.

  • Für Mitleser: Solange die Zeile [FONT=Courier New]add_filter( 'registration_errors', 'tml_registration_errors' );[/FONT] nicht verwendet wird, wird die eingebaute Abfrage dort nicht benutzt.

  • Für Mitleser: Solange die Zeile [FONT=Courier New]add_filter( 'registration_errors', 'tml_registration_errors' );[/FONT] nicht verwendet wird, wird die eingebaute Abfrage dort nicht benutzt.


    ich verstehe nur Bahnhof :-(

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!