ilch Forum » Allgemein » HTML, PHP, SQL,... » Registration erweitern

Geschlossen
  1. #1
    User Pic
    heinz2 Mitglied
    Registriert seit
    05.10.2013
    Beiträge
    167
    Beitragswertungen
    2 Beitragspunkte
    Hallo Leute,

    ich möchte die Registrierung dahingehend erweitern, dass als Pflichteingabe der Vorname, der Nachname und die Mitgliedsnummer eingetragen werden müssen. Und das eine wiederholte Eingabe der E-Mail notwendig wird. In der Regist.htm habe ich das eingetragen.
    <!-- REGELN -->
    <form action="index.php?user-regist-2" method="POST">
    
        {_lang_attentionplease}:
        <br />
        {regeln}
    
    
        <br /><br /><input type="submit" value="{_lang_readandok}" name="Yes">
    
    </form>
    {EXPLODE}
    {FEHLER}
    <form action="index.php?user-regist-2" method="POST">
        <input type="hidden" value="Gelesen und einverstanden" name="checked">
        <table width="100%" border="0" cellspacing="1" cellpadding="3" class="border">
            <tr class="Chead">
                <th colspan="2"><b>{_lang_REGISTER}</b></th>
            </tr>
            <tr>
                <td colspan="2" class="Cdark">{FEHLER}</td>
            </tr>
            <tr>
                <td class="Cmite" width="60">{_lang_nickname}</td>
                <td class="Cnorm"><input type="text" name="nutz" value="{name}" maxlength="15"></td>
            </tr>
            <tr>
                <td class="Cmite" width="60">{_lang_nachname}</td>
                <td class="Cnorm"><input type="text" value="{nachname}" maxlength="15"></td>
            </tr>
            <tr>
                <td class="Cmite" width="60">{_lang_vorname}</td>
                <td class="Cnorm"><input type="text" value="{vorname}" maxlength="15"></td>
            </tr>
            <tr>
                <td class="Cmite" width="60">{_lang_mtgnr}</td>
                <td class="Cnorm"><input type="text" value="{mtgnr}" maxlength="15"></td>
            </tr>
            <tr>
                <td class="Cmite">{_lang_mail}</td>
                <td class="Cnorm"><input type="text" maxlength="100" value="{email}" name="email"></td>
            </tr>
            <tr>
                <td class="Cmite">Wiederholen {_lang_mail}</td>
                <td class="Cnorm"><input type="text" maxlength="100" value="{email}" name="email"></td>
            </tr>
        {EXPLODE}
            <tr>
                <td class="Cmite">{_lang_password}</td>
                <td class="Cnorm"><input type="password" name="pass"></td>
            </tr>
        {EXPLODE}
            <tr>
                <td class="Cmite">Antispam</td>
                <td class="Cnorm">{antispam}</td>
            </tr>
            <tr class="Cdark">
                <td></td>
                <td><input type="submit" name="register" value="{_lang_register}"></td>
            </tr>
        </table>
    </form>
    {EXPLODE}
    {_lang_hello} {NAME}<br>
    
    {_lang_yourregistrationwassuccessful}!<br><br>
    {_lang_amailhasbeensenttoyouwithmailandpass}!<br><br>
    {_lang_afteryoureceivedthemail} <a href="index.php?user-2">{_lang_login2}</a>

    Nur hapert es mit meinen PHP-Kenntnissen und ich bräuchte etwas Hilfe. In der Datenbank habe ich die entsprechenden Felder eingefügt. Was muss ich in der regist.php eintragen?

    MfG heinz2


    verwendete ilch Version: 1.1 P

    betroffene Homepage: Fischerfreunde-haimhausen.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    FeTTsack Hall Of Fame
    Registriert seit
    27.06.2012
    Beiträge
    188
    Beitragswertungen
    26 Beitragspunkte
    als erstes musst du deinen inputs noch namen mitgeben wie bei email und passwort. sonst kannst es nicht übernehmen.

    2.)
    das zweite email feld muss einen anderen Namen haben bsp.: name="email_wdh"

    in der regist.php
    die Sachen wie hier übergeben:

     $email_wdh = '';
    if (!empty($_POST['email_wdh'])) {
      		$email_wdh = escape($_POST['email_wdh'],'string');
        }

    die if-Abfrage in Zeile 50 um die neuen Felder anpassen:
     if ( empty($name) OR empty($email_wdh) OR empty($email) OR $name != $xname OR $ch_name == false ) {

    dann in dieser if-Abfrage weitere kriterien festlegen was passieren soll wenn die Felder leer sind oder die emails nicht übereinstimmen usw.

    3.)
    musst du diese funktion:
    user_regist ($name,$email,$pass);

    in der /include/includes/func/user.php anpassen.

    ----

    oder du nennst mal die entsprechenden Felder und Tabellen in der Datenbank die du dafür eingefügt hast.

    dann könnte dir vielleicht jemand das coden lächeln

    lg fetti
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    heinz2 Mitglied
    Registriert seit
    05.10.2013
    Beiträge
    167
    Beitragswertungen
    2 Beitragspunkte
    Hallo,
    also das mit der Kontrolle der E-Mail-Adresse lasse ich erst einmal weg. Erst muss einmal das funktionieren, dass mdine per formular geschickte Daten in die Datenbank eingetragen werden. Bis jetzt bin ich so weit, dass meine Einträge fehlerfrei aufgenommen werden, nur nicht abgespeichert. Nach dem Abschicken gelangen die Daten hier hin: "Noch nicht bestätigte Registrierungen verwalten". Wenn ich den Haknen setzte kann ich in der Mitgliederverwaltung auch den User finden und aufrufen. Nur werden die Daten für "Nachname", "Vorname", und "Mitgliedsnummer" nicht abgespeichert.
    In der /includes/func/user.php habe ich folgendes in Zeile 354 geändert
    function user_regist($name, $mail, $nachname, $vorname, $mrgnr, $pass) {


    die Datenfelder in der Tabelle "user" nennen sich "nachname", "vorname" und "mtgnr". Anbei meine geänderten Dateien.

    contens/user/regist.php
    <?php
    
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined('main') or die('no direct access');
    
    if (!isset($_GET['step'])) {
        $_GET['step'] = 1;
    }
    
    if ($allgAr['forum_regist'] == 0) {
        # user duerfen sich nicht registrieren.
        $title = $allgAr['title'] . ' :: Users :: Keine registrierung m&ouml;glich';
        $hmenu = $extented_forum_menu . '<a class="smalfont" href="?user">User</a><b> &raquo; </b>Keine Registrierung m&ouml;glich' . $extented_forum_menu_sufix;
        $design = new design($title, $hmenu, 1);
        $design->header();
        $tpl = new tpl('user/login');
        echo '<b> Der Administrator hat festgelegt das man sich nicht registrieren kann </b>';
        $tpl->set_out('WDLINK', '?' . $allgAr['smodul'], 0);
        $design->footer();
        exit();
    }
    
    switch ($menu->get(2)) {
        default :
            $title = $allgAr['title'] . ' :: Users :: Registrieren :: Step 1 von 3';
            $hmenu = $extented_forum_menu . '<a class="smalfont" href="?user">User</a><b> &raquo; </b><a class="smalfont" href="?user-regist">Registrieren</a><b> &raquo; </b>Step 1 von 3' . $extented_forum_menu_sufix;
            $design = new design($title, $hmenu, 1);
            $design->header();
            $tpl = new tpl('user/regist');
            $tpl->set_out('regeln', bbcode($allgAr['allg_regeln']), 0);
            $design->footer();
            break;
    
        case 2 :
            $name = '';
            $email = '';
            $nachname = '';
            $vorname = '';
            $mtgnr = '';
            if (!empty($_POST['nutz'])) {
                $name = escape($_POST['nutz'], 'string');
            }
            if (!empty($_POST['email'])) {
                $email = escape($_POST['email'], 'string');
            }
            if (!empty($_POST['nachname'])) {
                $nachname = escape($_POST['nachname'], 'string');
            }
            if (!empty($_POST['vorname'])) {
                $vorname = escape($_POST['vorname'], 'string');
            }
            if (!empty($_POST['mtgnr'])) {
                $mtgnr = escape($_POST['mtgnr'], 'string');
            }
    
            $ch_name = false;
            $xname = escape_nickname($name);
            if (!empty($name) AND $xname == $name AND 0 == db_result(db_query("SELECT COUNT(*) FROM prefix_user WHERE name = BINARY '" . $name . "'"), 0)) {
                $ch_name = true;
            }
    
            $chkAntispam = chk_antispam('regist');
            if (empty($name) OR empty($email) OR $name != $xname OR $ch_name == false OR !$chkAntispam) {
                $title = $allgAr['title'] . ' :: Users :: Registrieren :: Step 2 von 3';
                $hmenu = $extented_forum_menu . '<a class="smalfont" href="?user">User</a><b> &raquo; </b><a class="smalfont" href="?user-regist">Registrieren</a><b> &raquo; </b>Step 2 von 3' . $extented_forum_menu_sufix;
                $design = new design($title, $hmenu, 1);
                $design->header();
                if (isset($_POST['register'])) {
                    if (empty($name) OR empty($email)) {
                        $fehler = $lang['entereddataincomplete'];
                    } elseif ($name != $xname) {
                        $fehler = $lang['wrongnickname'];
                    } elseif ($ch_name == false) {
                        $fehler = $lang['namealreadyinuse'];
                    } elseif (!$chkAntispam) {
                        $fehler = $lang['wrongcaptchaentered']; //antispamtxt
                    }
                } else {
                    $fehler = '';
                }
                $tpl = new tpl('user/regist');
                $tpl->set('name', $name);
                $tpl->set('email', $email);
                $tpl->set('nachname', $nachname);
                $tpl->set('vorname', $vorname);
                $tpl->set('mtgnr', $mtgnr);
                $tpl->set('antispam', get_antispam('regist', 0));
                $tpl->set_out('FEHLER', $fehler, 1);
                if ($allgAr['forum_regist_user_pass'] == 1) {
                    $tpl->out(2);
                }
                $tpl->out(3);
            } else {
                $pass = genkey(8);
                if (!empty($_POST['pass'])) {
                    $pass = escape($_POST['pass'], 'string');
                }
                user_regist($name, $email, $nachname, $vorname, $mtgnr, $pass);
    
                $tpl = new tpl('user/regist');
                $title = $allgAr['title'] . ' :: Users :: Registrieren :: Step 3 von 3';
                $hmenu = $extented_forum_menu . '<a class="smalfont" href="?user">User</a><b> &raquo; </b><a class="smalfont" href="?user-regist">Registrieren</a><b> &raquo; </b>Step 3 von 3' . $extented_forum_menu_sufix;
                $design = new design($title, $hmenu, 1);
                $design->header();
                $tpl->set_out('NAME', $name, 4);
            }
            $design->footer();
            break;
    }
    ?>


    eigefügt in die "de.php
    'mtgnr' => 'Mitgliedsnummer',
    'nachname' => 'Nachname',
    'vorname' => 'Vorname',


    Kann mir da ein Tip gegeben werden warum die Daten von Nachname, Vorname und Mitgliedsnummer nicht gespeichert werden?

    schon mal ein Dankeschön im Voraus.
    MfG heinz2


    Zuletzt modifiziert von Nex4T am 25.06.2015 - 09:59:00
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    $mtgnr = escape($_POST['mtgnr'], 'string');


    Falls die mtgnr nur aus Zahlen besteht richtig

    $mtgnr = escape($_POST['mtgnr'], 'integer');



    user_regist($name, $email, $nachname, $vorname, $mtgnr, $pass);


    Du rufst hier eine Zentrale Funktion aus dem System auf, kann diese denn etwas mit den hinzugefügten werten anfangen?

    Bedenke dabei das wenn du diese Funktion umschreibst alle aufrufe entsprechend angepasst werden müssen!

    Finden tust du die Funktion hier:
    title='/include/includes/func/user.php'
    highlight='308,331-332,334-336'
    start='308'


    function user_regist ($name, $mail, $pass) {
    global $allgAr, $lang;
    $erg = db_query("SELECT id FROM prefix_user WHERE name = BINARY '".$name."'");
    if (db_num_rows($erg) > 0) {
    return (false);
    }
    if ( $allgAr['forum_regist_user_pass'] == 0 ) {
    $new_pass = genkey(8);
    } else {
    $new_pass = $pass;
    }
    $passwordHash = user_pw_crypt($new_pass);
    $confirmlinktext = '';
    # confirm insert in confirm tb not confirm insert in user tb
    if ( $allgAr['forum_regist_confirm_link'] == 1 ) {
    # confirm link + text ... bit of shit put it in languages file
    $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    $id = md5 (uniqid (rand()));
    $confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
    db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    VALUES ('".$id."','".$name."','".$mail."','".$passwordHash."',NOW(),1)");
    } else {
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    VALUES('".$name."','".$passwordHash."',-1,'".time()."','".time()."','".$mail."',1,1,1)");
    $userid = db_last_id();
    }
    $regmail = sprintf($lang['registemail'],$name, $confirmlinktext, $name, $new_pass);
    icmail($mail,'Anmeldung',$regmail); # email an user
    return (true);
    }


    Unbedingt FAQ und Entwickler Doku lesen steht einiges nützliches drinnen


    Zuletzt modifiziert von Revolution am 26.06.2015 - 11:10:42
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    heinz2 Mitglied
    Registriert seit
    05.10.2013
    Beiträge
    167
    Beitragswertungen
    2 Beitragspunkte
    Hallo,

    Keiner einen Tip?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    FeTTsack Hall Of Fame
    Registriert seit
    27.06.2012
    Beiträge
    188
    Beitragswertungen
    26 Beitragspunkte
    du hast in der funtkion user_regist
    diesen aufruf:

    [code]db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    VALUES('".$name."','".$md5_pass."',-1,'".time()."','".time()."','".$mail."',1,1,1)");[/code]

    denn musst du passent machen zu deinem eintrag in die Datenbank.
    bsp.

    [code]db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vorname,nachname,mgnr)
    VALUES('".$name."','".$md5_pass."',-1,'".time()."','".time()."','".$mail."',1,1,1,'".$vorname."','".$nachname."','".$mrgnr."' )");[/code]

    lg fetti


    Zuletzt modifiziert von Revolution am 26.06.2015 - 11:02:18
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten