ilch Forum » Ilch CMS 2.X » Kritik und Verbesserungen » Pflichtfeld bei Registrierung

Geschlossen
  1. #1
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    Hallo an Alle.

    Ilch kenne ich schon ewig und habe es damals als Clanscript genutzt.
    Nun nutze ich 2.0 für eine etwas andere Community.

    Habe mich schon ganz gut ins Script und Layout eingefuchst.
    Nun suche ich jedoch die Möglichkeit beim Registrieren ein Pflichtfeld anzugeben bzw zu verändern.
    Ist dies im Admincenter möglich? Wenn ja, wo?

    Oder muss ich selbst im Code was ändern und entsprechend die Datenbank erweitern, damit die Abfrage funktioniert?
    Habe damals oft was rumgebastelt. Aber auch immer mit Hilfe aus diesem Forum oder von Mairu.

    Spezifisch geht es Darum, dass ich beim Registrieren eine Kundennummer voraussetze, welche entsprechend eingeben werden muss.
    Die Registrierung ist per manueller Freigabe eingestellt, somit kann ich dann schauen ob die Kundennummer existiert und er wirklich ein Kunde ist um ihn dann frei zu geben.

    Danke vorab für eure Hilfe und Tipps. lächeln
    LG
    Carsten


    verwendete ilch Version: 2.1.x

    betroffene Homepage: damfafreun.de


    Zuletzt modifiziert von wagsch am 04.01.2023 - 10:04:10
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    BlackRomeo Moderator
    Registriert seit
    31.01.2014
    Beiträge
    281
    Beitragswertungen
    27 Beitragspunkte
    Nun ich könnte es mir so Vorstellen das man in der DB ein oder Zwei zeilen einfügt Zeile 1 ( Hinterlegte Kundennummern) Zeile 2 die eingegebene Kundennummer zum Abgleich der schon vorhanden Kundenummern.

    Und im Bereich Registrieren ein Bisschen Code hinzufügen für die Kundennummer abfrage.

    Sprich Kunde Registriert sich auf deiner Website Gibt Benutzername, Name, Nachname, evt Adresse,usw ein und am ende kommt dann das Feld Kundennummer.

    Da die Kundennummern in der DB hinterlegt sind kann eine Abfrage gestartet werden wo diesen Benutzer dann durch die entsprechende Kundenummer verifiziert.

    Im großen und ganzen müsstest du.
    > DB Zeilen und Abfrage KDN Hinterlegen
    > Registration Script umschreiben


    Falls etwas falsch ist könnt ihr mich gerne korrigieren
    | SchlueppaTv Twitch Streamer |
    | www.twitch.tv/schlueppatv |

    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    Ja, so grob habe ich mir das gedacht und auch heute angefangen umzusetzen.
    Das Feld wird zwar angezeigt, aber nicht in der Datenbank gespeichert.
    Ich werde noch wohl etwas dran rumfummeln müssen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    BlackRomeo Moderator
    Registriert seit
    31.01.2014
    Beiträge
    281
    Beitragswertungen
    27 Beitragspunkte
    ZitatZitat geschrieben von wagsch
    Ja, so grob habe ich mir das gedacht und auch heute angefangen umzusetzen.
    Das Feld wird zwar angezeigt, aber nicht in der Datenbank gespeichert.
    Ich werde noch wohl etwas dran rumfummeln müssen.


    Ja da kann ich dir leider nicht dabei Helfen so weit gehen meine Kenntnisse leider noch nicht.

    dir Drotzdem noch viel Erfolg kannst ja berichten ob es dann geklappt hat
    | SchlueppaTv Twitch Streamer |
    | www.twitch.tv/schlueppatv |

    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    ZitatZitat geschrieben von BlackRomeo
    ZitatZitat geschrieben von wagsch
    Ja, so grob habe ich mir das gedacht und auch heute angefangen umzusetzen.
    Das Feld wird zwar angezeigt, aber nicht in der Datenbank gespeichert.
    Ich werde noch wohl etwas dran rumfummeln müssen.


    Ja da kann ich dir leider nicht dabei Helfen so weit gehen meine Kenntnisse leider noch nicht.

    dir Drotzdem noch viel Erfolg kannst ja berichten ob es dann geklappt hat


    Mir würde schon helfen, die Struktur zu kennen, wo was stehen muß um es da und dort abzufragen. De Befehle der Abfragen kann man sich rauslesen oder googeln. Aber der Aufbau von ilch 2.0 ist mir noch ein Rätsel.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Slipi Hall Of Fame
    Registriert seit
    19.01.2018
    Beiträge
    954
    Beitragswertungen
    120 Beitragspunkte
    Hallo

    Ween du möchtest können wir uns in unserem TS treffen und ich erklär dir alles.
    Schreib mir einfach eine PN ann du zeit hättest.

    Oder du siehst dir die Video di unser RTX erstellt hat, in jedem Video erklärrt er dir den Aufbau eines Modul, die funktionen bzw aufgaben der einzellnen php usw. github.com/IlchCMS/Ilch-2.0/wiki/Video-Tutorials-von-RTX2070

    Slipi


    Zuletzt modifiziert von Slipi am 07.02.2021 - 11:40:26
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    So. Ich habe es mit einem Kumpel, der da etwas fitter ist, hinbekommen.
    Ich habe nun in bei der Registrierung ein zusätzliches Feld (in meinem Falle "Kundennummer").
    Diese wird in der Datenbank gespeichert.

    Dazu muss die Datenbank um diese Zeile erweitert werden. Habe dies in phpmyadmin gemacht.

    In der application\modules\user\views\regist\input.php habe ich im Code folgenden Zusatz anhand der Vorgaben von `name`ergänzt:

    <div class="form-group">
                    <label for="kundennummer" class="control-label col-lg-2">
                        <?=$this->getTrans('kundennummer') ?>:
                    </label>
    			    <div class="col-lg-8">
                        <input type="text"
                               class="form-control"
                               id="kundennummer"
                               name="kundennummer"
                               value="<?= $this->originalInput('kundennummer') ?>" />
               </div>
                </div>


    In der application\modules\user\models\User.php
    habe ich noch folgende Parameter hinzugefügt:

    protected $kundennummer;


    public function getKundennummer()
        {
            return $this->kundennummer;
        }
    
     public function setKundennummer($kundennummer)
        {
            $this->kundennummer = (string)$kundennummer;
    
            return $this;
        }


    Ich weiß jetzt ehrlich gesagt nicht, ob noch was fehlt. Wir waren heute in so vielen Dateien und Codeschnipseln und haben soviel rumprobiert und wieder rückgängig gemacht! ^^ Aber vielleicht halt es jemandem, der auch auf der Suche nach sowas ist.

    Nun mache ich mich noch dran, diese Kundennummer auch im admincenter zu sehen. Für den User selbst ist die Ansicht nicht weiter relevant. Die Kundennummer dient nur der Freischaltung.

    Update:
    Habe es nun so wie ich wollte.
    Im Admincenter wird mir nun in der Benutzerverwaltung zusätzlich die von mir verlangte Kundennummer angezeigt.
    Dazu habe ich Änderungen wie folgt vorgenommen:

    application\modules\user\views\admin\index\index.php
    Zeile 52
    <th><?=$this->getTrans('kundennummer') ?></th>


    und in Zeile 105
    <td><?=$this->escape($user->getKundennummer()) ?></td>


    und dann in der Modules\User\Mappers\User.php
    Zeile 58 - 70
       public function getUserByKundennummer($kundennummer)
        {
            $where = [
                'kundennummer' => (string)$kundennummer,
            ];
    
            $users = $this->getBy($where);
    
            if (!empty($users)) {
                return reset($users);
            }
    
            return null;


    Zeile 128 mit
    'kundennummer'

    ergänzt

    Zeile 224 -225
            if (isset($userRow['kundennummer'])) {
                $user->setKundennummer($userRow['kundennummer']);


    Zeile 331
    $kundennummer = $user->getKundennummer();


    Zeile 345 - 346
    		if (!empty($kundennummer)) {
                $fields['kundennummer'] = $user->getKundennummer();


    Ich weiß allerdings nicht ob alle Änderungen nötig waren?! Habe halt da Kundennummer hinzugefügt wo es Abfragen bezüglich dem User gibt.
    Falls es Änderungen sind die unnötig oder "gefährlich" sind, wäre ich für eine Info dankbar.. lächeln


    Zuletzt modifiziert von wagsch am 08.02.2021 - 02:53:23
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    Zur Vervollständigung der Codeschnipsel noch den Rest, den ich heute Dank Corian umsetzen konnte:

    Modules\User\Controllers\regist.php

    Pflichtabfrage in Zeile 64 eingefügt
    'kundennummer' => 'required|integer|unique:users,kundennummer|size:13,string',


    Damit wird sichergestellt, dass die Kundennummer eingegeben wird, eine Zahl ist, nicht schon vergeben ist und 13 stellig sein muss.

    Damit die Kundennummer auch an die Datenbank übergeben wird ist in Zeile 104 noch folgendes hinzuzufügen:
    ->setKundennummer($this->getRequest()->getPost('kundennummer'))


    des Weiteren stellte ich in meinem Testwahnsinn fest, dass ich als Admin keine Mail bekomme, wenn sich jemand registriert und auf Freischaltung wartet. Bin ja schließlich nicht 24/7 im admincenter. zwinker

    Damit das nun passiert habe ich (dank Corian) In Zeile 151 noch folgenden Code gesetzt

     if ($this->getConfig()->get('regist_setfree') == 1) {
                        $mail = new \Ilch\Mail();
                        $mail->setFromName($this->getTranslator()->trans('automaticEmail'))
                            ->setFromEmail($this->getConfig()->get('standardMail'))
                            ->setToName('Admin')
                            ->setToEmail($this->getConfig()->get('standardMail'))
                            ->setSubject($this->getTranslator()->trans('newuseradmin'))
                            ->setMessage($this->getTranslator()->trans('newuseradmintxt'))
                            ->send();
                    }


    Die Begriffe für den Translator habe ich natürlich auch definiert.

    user\translations\de.php

    am Ende der Definitionen eingefügt.
    'newuseradmin' => 'Freischaltung für deine Webseite',
    'newuseradmintxt' => 'Ein neuer Benutzer möchte freigeschaltet werden.',


    Kann natürlich jeder definieren wie er möchte. lächeln

    So, dass dürfte es gewesen sein.
    LG


    Zuletzt modifiziert von wagsch am 10.09.2021 - 15:01:27
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    Mit Version 2.1.43 wurden wohl betroffene Codes überschrieben! Also ACHTUNG bei einem update, bzw vorher Sicherungen machen.
    Gott sei Dank finde ich hier nun noch meine eigenen Codeschnipsel! zwinker
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    wagsch Mitglied
    Registriert seit
    31.03.2008
    Beiträge
    188
    Beitragswertungen
    2 Beitragspunkte
    Ihr werdet es nicht glauben. Habe selber wieder ein Update gemacht und nicht an meine veränderten Dateien gedacht! LOL
    Also suche ich mir hier nun wieder alles selber zusammen. Oh man ...

    Könnte man das nicht mal fixen mit dem Update?! Also eine Warnung, welche Dateien / Codes betroffen sind?
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Slipi Hall Of Fame
    Registriert seit
    19.01.2018
    Beiträge
    954
    Beitragswertungen
    120 Beitragspunkte
    Hallo

    Wenn du ein Update durchgeführt wird, werden dir alle datein gelistet die überschrieben wurden.

    Du kannst auch die Views in deinem Layout Ordner überschreiben, so bleiben deine Daten aktuell auch bei einem Update. Das überschreiben kann jedoch zu Problemen führen, wenn eine Datei ein wichtiges Update benötigt, daher müsstest du dies manuell in der überschriebenen Views durchführen.

    Um Views zu überschreiben gehe wie folgt vor:

    Erstelle in deinem layout Ordner ein neues Verzeichnis und füge deine bearbeitete Datei des Moduls hinzu (Beispiel Modul FAQ)

    clan3columns --> views --> modules --> faq --> index --> Index.php


    Oder du erstellst ein Backup deiner bearbeiteten Datei.

    Slipi
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    501
    Beitragswertungen
    87 Beitragspunkte
    Was meinst du mit fixen?
    Eine Abfrage all der Dateien wäre glaub ich nicht möglich und würde auch zu unübersichtlich werden.
    Es kann jederzeit auf github verfolgt werden welche Dateien bearbeitet wurden zwinker
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Kritik und Verbesserungen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten