ilch Forum » Allgemein » HTML, PHP, SQL,... » Pflichtfelder in Registrierung einfügen

Geschlossen
  1. #1
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    Hallo alle zusammen.

    Ich habe versucht in der Registrierung ein paar Pflichtfelder einzubauen. Es funktioniert nicht und ich möchte nun wissen wo meine Fehler sind.

    1. Die neuen Felder werden nicht beachtet wenn man sich registriert. Zudem steht in den Feldern immer das {vname} etc.

    2. Die Bestätigungsemail wird versendet aber es kommt nach dem Klick auf den Link: "Kein Eintrag gefunden. Evtl. ist es schon zu lange her und der Eintrag wurde gelöscht oder du bist einfach zweimal mit dem selben Link auf diese Seite gekommen."

    3. Ich möchte das man bei z.B PLZ nur Ziffern eintragen kann und beim Vor-Nachnamen etc nur Buchstaben eben.

    4. Dann soll es auch in der Bestätigungsmail stehen was eingetragen wurde. Der Link sollte demnach auch funktionieren zwinker

    5. Später soll in den user-details dann all dieses ebenso drinne stehen wie in der Mail und die User sollen es in der user-edit nicht ohne Admin Bestätigung ändern können.

    Ich weiß das es etwas viel ist aber ich bin für jede Hilfe dankbar.

    (Aus Datenschutzgründen werde ich noch einiges ändern müssen sodas kein anderer auf diese Daten Zugriff hat außer der Admin und der User selbst. Aber das hat Zeit und ist ja auch nicht all zu schwer umzusetzen.)


    Meine aktuellen Änderungen:

    Datenbank user sowie usercheck
    gesperrtes Bild



    zugefügt in de.php
    'vname' => 'Vorname'
    'nname' => 'Nachname'
    'str' => 'Strasse'
    'hnr' => 'Hausnummer'
    'plz' => 'Postleitzahl'
    'stadt' => 'Stadt'


    confirm.php
    $erg = db_query("SELECT * FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
    if ( db_num_rows($erg) == 1 ) {
      $row = db_fetch_assoc($erg);
    	switch ( $row['ak'] ) {
    
    		# confirm regist
    	  case 1 :
    		  if ( 0 == db_count_query("SELECT COUNT(*) FROM prefix_user WHERE name = BINARY '".$row['name']."'") ) {
    			  db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    			  VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."',1,1,1)");


    regist.php
     case 2 :
            $name = '';
            $email = '';
    $vname = '';
    $nname = '';
    $str = '';
    $hnr = '';
    $plz = '';
    $stadt = '';
            if (!empty($_POST['nutz'])) {
                $name = escape($_POST['nutz'], 'string');
            }
            if (!empty($_POST['email'])) {
                $email = escape($_POST['email'], 'string');
            }
     if (!empty($_POST['vname'])) {
                $name = escape($_POST['vname'], 'string');
            } 
    if (!empty($_POST['nname'])) {
                $name = escape($_POST['nname'], 'string');
            }
     if (!empty($_POST['str'])) {
                $name = escape($_POST['str'], 'string');
            }
     if (!empty($_POST['hnr'])) {
                $name = escape($_POST['hnr'], 'string');
            }
     if (!empty($_POST['plz'])) {
                $name = escape($_POST['plz'], 'string');
            }
     if (!empty($_POST['stadt'])) {
                $name = escape($_POST['stadt'], 'string');
            }


    user.php
    db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak,vname,nname,str,hnr,plz,stadt)
    		VALUES ('".$id."','".$name."','".$mail."','".$passwordHash."','".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$stadt."',NOW(),1)");
      } else {
    	  db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    		VALUES('".$name."','".$passwordHash."',-1,'".time()."','".time()."','".$mail."','".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$stadt."',1,1,1)");


    regist.htm
    <!-- 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">{_lang_mail}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{email}" name="email"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_vname}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{vname}" name="Vorname"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_nname}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{nnam}" name="Nachname"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_str}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{str}" name="Strasse">{_lang_hnr}<input type="text" maxlength="100" value="{hnr}" name="Hausnummer" style="width: 51px"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_plz}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{plz}" name="Postleitzahl"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_stadt}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="100" value="{stadt}" name="Stadt"></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>


    profil-edit.htm
    <form action="index.php?user-profil" method="POST" enctype="multipart/form-data">
    	{antispam}
        <fieldset>
    	  <legend>Persönliche Daten ändern</legend>
    		  <br />
    		  <label style="float:left; width:35%;">{_lang_mail}</label><input style="margin-bottom:2px;" name="email" value="{email}" /><input type="hidden" name="aemail" value="{email}" /><font class="smalfont">{_lang_mustbeentered}</font><br />
    			<label style="float:left; width:35%;">{_lang_vname}</label><input style="margin-bottom:2px;" name="vname" value="{vname}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_nname}</label><input style="margin-bottom:2px;" name="nname" value="{nname}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_str}</label><input style="margin-bottom:2px;" name="str" value="{str}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_hnr}</label><input style="margin-bottom:2px;" name="hnr" value="{hnr}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_plz}</label><input style="margin-bottom:2px;" name="plz" value="{plz}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_stadt}</label><input style="margin-bottom:2px;" name="stadt" value="{stadt}" /><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_birthday}</label><input style="margin-bottom:2px;" name="gebdatum" value="{gebdatum}" /><font class="smalfont">{_lang_dateformat}</font><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_state}</label><select style="margin-bottom:2px;" name="staat">{_list_staat@<option%1 value="%2">%3</option>}</select><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_sex}</label><input style="margin-bottom:2px;" type="radio" value="1" id="geschlecht1" name="geschlecht" {geschlecht1} /><label for="geschlecht1"> {_lang_male}</label>, <input id="geschlecht2" type="radio" value="2" name="geschlecht" {geschlecht2} /><label for="geschlecht2"> {_lang_female}</label>, <input id="geschlecht0" type="radio" value="0" name="geschlecht" {geschlecht0} /><label for="geschlecht0"> {_lang_itdoesntmatter}</label><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_status}</label><input id="status_aktiv" type="radio" value="1" name="status" {status1} /><label for="status_aktiv"> {_lang_active}</label>, <input id="status_inaktiv" type="radio" value="0" name="status" {status0} /><label for="status_inaktiv"> {_lang_inactive}</label><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_mails}<span class="smalfont"> {_lang_fromotherusers}?</span></label><input id="opt_mail1" type="radio" value="1" name="opt_mail" {opt_mail1} /><label for="opt_mail1"> {_lang_yes}</label>, <input id="opt_mail0" type="radio" value="0" name="opt_mail" {opt_mail0} /><label for="opt_mail0"> {_lang_no}</label><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_privatemessages}<span class="smalfont"> {_lang_fromotherusers}?</span></label><input id="opt_pm1" type="radio" value="1" name="opt_pm" {opt_pm1} /><label for="opt_pm1"> {_lang_yes}</label>, <input id="opt_pm0" type="radio" value="0" name="opt_pm" {opt_pm0} /><label for="opt_pm0"> {_lang_no}</label><br style="clear:both;" />
    			<label style="float:left; width:35%;">{_lang_privatemessages}<span class="smalfont"> {_lang_popupbynewmsg}?</span></label><input id="opt_pm_popup1" type="radio" value="1" name="opt_pm_popup" {opt_pm_popup1} /><label for="opt_pm_popup1"> {_lang_yes}</label>, <input id="opt_pm_popup0" type="radio" value="0" name="opt_pm_popup" {opt_pm_popup0} /><label for="opt_pm_popup0"> {_lang_no}</label><br  style="fclear:both;" /><br />
    			{_if_{forum_usergallery}=='1'}<div align="center">
                    <a href="index.php?user-usergallery-{uid}">Usergallery</a> &nbsp; <a href="index.php?user-remove"/></a>
                </div>{/_endif}<br />
                {EXPLODE}
          <fieldset>
          <legend>{_lang_removeaccount}</legend>
          <label style="float:left; width:35%;">&nbsp;</label><input type="checkbox" value="yes" name="removeaccount" /> {_lang_delete}? &nbsp; <font class="smalfont">{_lang_mustbeentered}</font>
          </fieldset>
          <fieldset>
    			  <legend>{_lang_avatar}</legend>
    			    <label style="float:left; width:35%;">&nbsp;</label>{avatarbild}<input type="checkbox" value="yes" name="avatarloeschen" /> {_lang_delete}?<br /><br />
    			    <label style="float:left; width:35%;">&nbsp;</label><input style="margin-bottom:2px;" type="file" name="avatarfile" /><br /><font class="smalfont"><br />{_lang_criterions}: {_lang_maxwidth} {Fabreite}px, {_lang_maxheight} {Fahohe}px {_lang_and} max size {Fasize} bytes.  {_lang_otherwisenoaction}.</font><br />
    			</fieldset>
    			<br />
    			{EXPLODE}
    			<fieldset>
    			  <legend>{_lang_signature}</legend>
    			    <label style="float:left; width:35%;"><font class="smalfont">{_lang_max} {forum_max_sig} {_lang_signs}.</font></label><textarea style="margin-bottom:2px;" cols="60" rows="2" name="sig">{sig}</textarea><br />
    			</fieldset>
    			<br />
    			<fieldset>
    			  <legend>{_lang_editpassword}</legend>
    			    <br />
    			    <label style="float:left; width:35%;">{_lang_current}</label><input style="margin-bottom:2px;" type="password" name="op" maxlength="20"><br />
    			    <label style="float:left; width:35%;">{_lang_new}</label><input style="margin-bottom:2px;" type="password" name="np1" maxlength="20"><br />
    			    <label style="float:left; width:35%;">{_lang_repeat}</label><input style="margin-bottom:2px;" type="password" name="np2" maxlength="20"><br />
    			</fieldset>
          <br />
          <fieldset>
            <br />
        {EXPLODE}
          </fieldset>
          <br />
          <div align="center">
          <input style="margin-bottom:2px;" type="submit" value="{_lang_send2}" name="submit">
          </div>
    	</fieldset>
    </form>



    verwendete ilch Version: 1.1 P

    betroffene Homepage: eu-de.net
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    externer Link



    ZitatZitat
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."',1,1,1,?,?,?,?,?,?)");


    Wo sind denn die Werte die Übergegben werden sollen?

    ZitatZitat

    db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak,vname,nname,str,hnr,plz,stadt)
    VALUES ('".$id."','".$name."','".$mail."','".$passwordHash."','".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$stadt."',NOW(),1)");
    } else {
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    VALUES('".$name."','".$passwordHash."',-1,'".time()."','".time()."','".$mail."','".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$stadt."',1,1,1)");


    Nich die Felder durcheinander würfeln ^^
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    if (!empty($_POST['nutz'])) {
                $name = escape($_POST['nutz'], 'string');
            }
            if (!empty($_POST['email'])) {
                $email = escape($_POST['email'], 'string');
            }
     if (!empty($_POST['vname'])) {
                $name = escape($_POST['vname'], 'string');
            } 
    if (!empty($_POST['nname'])) {
                $name = escape($_POST['nname'], 'string');
            }
     if (!empty($_POST['str'])) {
                $name = escape($_POST['str'], 'string');
            }
     if (!empty($_POST['hnr'])) {
                $name = escape($_POST['hnr'], 'string');
            }
     if (!empty($_POST['plz'])) {
                $name = escape($_POST['plz'], 'string');
            }
     if (!empty($_POST['stadt'])) {
                $name = escape($_POST['stadt'], 'string');



    Du kannst nicht allen Variablen den selben Namen geben.
    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
    ups das hab ich übersehen schockiert
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    ich habe jetzt geändert:

    regist.php
    case 2 :
            $name = '';
            $email = '';
    $vname = '';
    $nname = '';
    $str = '';
    $hnr = '';
    $plz = '';
    $stadt = '';
            if (!empty($_POST['nutz'])) {
                $name = escape($_POST['nutz'], 'string');
            }
            if (!empty($_POST['email'])) {
                $email = escape($_POST['email'], 'string');
            }
     if (!empty($_POST['vname'])) {
                $vname = escape($_POST['vname'], 'string');
            } 
    if (!empty($_POST['nname'])) {
                $nname = escape($_POST['nname'], 'string');
            }
     if (!empty($_POST['str'])) {
                $str = escape($_POST['str'], 'string');
            }
     if (!empty($_POST['hnr'])) {
                $hnr = escape($_POST['hnr'], 'string');
            }
     if (!empty($_POST['plz'])) {
                $plz = escape($_POST['plz'], 'string');
            }
     if (!empty($_POST['stadt'])) {
                $stadt = escape($_POST['stadt'], 'string');
            }


    das mit der user.php und confirm.php versteh ich irgendwie nicht.
    hab mich an diesen thread gehalten: externer Link
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Was gib es denn da nicht zu verstehen?

    In der confirm.php fehlen die Variablen die geschrieben werden sollen.
    Du hast zwar die felder definiert füllst sie aber nicht. Deswegen ins der Query unzulässig und es wird nix mehr eingetragen und deswegen auch "Kein Eintrag gefunden. Evtl. ist es schon zu lange her und der Eintrag wurde gelöscht oder du bist einfach zweimal mit dem selben Link auf diese Seite gekommen."

    deswegen die ? im query schau dir doch mal das ganze an....

    In der user.php hast du die felder und die werte definiert, aber du hast die Felder gemischt. Du schreibst hier den vornamen zum beispiel in den Status, das geht nicht weil status eine Zahl ist und da Worte reinschreiben = Fehler

    Selbiges gilt für datime und vornmame....
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    muss erstmal zur arbeit. muss das auf ca 22uhr verschieben.


    Zuletzt modifiziert von xxlynusxx am 28.05.2014 - 17:33:03
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    confirm.php so richtig denke ich mal?
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."',1,1,1,1,1,1,1,1,1)");
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Ehm, nein

    danach stehen in den Feldern lauter Einser.

    Original:

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


    Vorname hinzugefügt:

    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname)
    			  VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1,'".$row['vname']."')");
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    ich habe es jetzt hoffe ich richtig geändert

    confirm.php
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."',1,1,1,'".$row['vname']."','".$row['nname']."','".$row['str']."','".$row['hnr']."','".$row['plz']."','".$row['stadt']."')");


    jedoch kommt immernoch die meldung "Kein Eintrag gefunden. Evtl. ist es schon zu lange her..."

    wenn ich das selbst wählbare passwort aus schalte kommt die meldung nicht mehr und es scheint als ob es geht aber in beiden fällen wird kein user angelegt.


    Zuletzt modifiziert von xxlynusxx am 29.05.2014 - 00:21:16
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    Ich persönlich würde die Variablen in die DB setzen, die Du vorher escape´d hast ... also nicht $_POST['stadt'] sondern $stadt

    Auch stimmt etwas mit deinem DB Eintrag nicht ... z.B. fehlt mail (Emailadresse)

    Übergibst Du die Informationen an die Funktion user_regist($name, $email, $pass, ....)?
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    hallo Lord|Schirmer. ich muss leider gleich los zur arbeit und kann mich erst heute abend darum kümmern gegen 22 uhr. du hast immernoch den ftp zugang. wäre nett wenn du mal rein schauen könntest. alleine bekomme ich das sicher nie zum laufen. wäre nett wenn du mir danach sagen könntest wo der fehler ist denn an den email einstellungen habe ich nicht absichtlicht etwas geändert. habe nur einträge zugefügt.
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    @lord sieht doch gut aus was er da hat

    In der Confirm werden doch nur Daten übernommen die in der usercheck stehen daher auch kein Escape nötig


    allerdings fehlt in den unteren Feldern
    '".time()."','".$row['email']."',1


    Zwischen dem Time und der ersten Eins noch die E-Mail da hat der Lord recht sonst sieht es gut aus
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    @Rock: Stimmt habe das confirm überlesen und gedacht hier geht es um die regist.

    @xxlynusxx: Bist doch kurz davor es selbst hinzubekommen. Versuch es weiter und wenn es wirklich nicht klappt, schau ich es mir mal direkt an.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    so sieht meine contents/user/confirm.php aus
    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    $title = $allgAr['title'].' :: User :: Confirm';
    $hmenu = $extented_forum_menu.'<a class="smalfont" href="?user">User</a><b> &raquo; </b>Confirm'.$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1);
    $design->header();
    
    $abgelaufen = time() - 2592000; # 30 tage
    $abgelaufen = date('Y-m-d H:i:s',$abgelaufen);
    db_query("DELETE FROM prefix_usercheck WHERE datime < '".$abgelaufen."'");
    
    $erg = db_query("SELECT * FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
    if ( db_num_rows($erg) == 1 ) {
      $row = db_fetch_assoc($erg);
    	switch ( $row['ak'] ) {
    
    		# confirm regist
    	  case 1 :
    		  if ( 0 == db_count_query("SELECT COUNT(*) FROM prefix_user WHERE name = BINARY '".$row['name']."'") ) {
    		
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1,'".$row['vname']."','".$row['nname']."','".$row['str']."','".$row['hnr']."','".$row['plz']."','".$row['str']."')");
    
    			  echo $lang['confirmregist'];
    			} else {
    			  echo $lang['confirmregistfailed'];
    			}
    		  break;
    
    		# confirm new pass
    		case 2 :
    		  db_query("UPDATE prefix_user SET pass = '".$row['pass']."' WHERE name = BINARY '".$row['name']."'");
    		  echo $lang['confirmpassword'];
          break;
    
        # confirm new email
        case 3 :
          list ($id, $muell) = explode('||', $row['check']);
          db_query("UPDATE prefix_user SET email = '".$row['email']."' WHERE id = ". escape($id, 'integer'));
          echo $lang['confirmemail'];
          break;
    
        # ak 4 wurde besetzt fuer joinus anfragen...
        case 4 :  break;
    
        # ak 5 remove account
        case 5:
            list ($id, $muell) = explode('-remove-', $row['check']);
            if ($id != $_SESSION['authid']) {
                break;
            }
            user_remove($id);
            wd('index.php','Dein Account wurde gel&ouml;scht. Du wirst nun auf die Startseite geleitet.',7);
            break;
    	}
    	db_query("DELETE FROM prefix_usercheck WHERE `check` = '".$row['check']."'");
    } else {
      echo $lang['confirmfailure'];
    }
    
    $design->footer();
    ?>


    und so meine includes/func/user.php
    <?php
    
    # hier werden alle user spezifischen funktionen
    # definert...
    
    function user_identification () {
      user_auth();
      user_login_check();
      user_update_database();
      user_check_url_rewrite();
    }
    
    function user_auth () {
      debug ('user - auth gestartet'. session_id());
      $cn = session_und_cookie_name();
      if (!user_key_in_db()
       OR !isset($_SESSION['authid'])
       OR (isset($_SESSION['authsess']) AND $_SESSION['authsess'] != $cn)) {
    
        debug ('user - nicht in db oder nicht authid');
    
        user_set_guest_vars();
        user_set_user_online ();
    
        # wenn cn cookie vorhanden
        # dann checken ob er sich damit einloggen darf
        if (isset($_COOKIE[$cn])) {
          user_auto_login_check();
        }
    
        # gruppen, und modulzugehoerigkeit setzten
        user_set_grps_and_modules();
      }
    }
    
    function user_check_url_rewrite() {
      global $allgAr;
      if ( !loggedin() AND $allgAr['show_session_id'] == 0 ) {
        # loescht die sessionid von allen urls
        # auch urls wie formulare usw. damit
        # suchmaschienen bots nicht iritiert sind ;)
        # output_reset_rewrite_vars ist eine php funktion
        # nicht unnoetig dannach suchen ;) ...
        output_reset_rewrite_vars ();
      }
    }
    
    function user_update_database () {
      $dif = date('Y-m-d H:i:s', time() - 7200);
      db_query("UPDATE prefix_online SET uptime = now() WHERE sid = '".session_id()."'");
      db_query("DELETE FROM prefix_online WHERE uptime < '". $dif."'");
      if ( loggedin() ) {
        db_query("UPDATE prefix_user SET llogin = '".time()."' WHERE id = '".$_SESSION['authid']."'");
      }
    }
    
    function user_set_user_online () {
      global $allgAr;
      if (0 == db_result(db_query("SELECT COUNT(*) FROM prefix_online WHERE sid = '".session_id()."'"),0) ) {
        db_query("INSERT INTO prefix_online (sid,uptime,ipa) VALUES ('".session_id()."',now(),'".getip()."')");
      }
      $_SESSION['authgfx'] = $allgAr['gfx'];
    }
    
    function user_key_in_db() {
      if ( 1 == db_result(db_query("SELECT COUNT(*) FROM prefix_online WHERE sid = '".session_id()."'"),0) ) {
        return ( true );
      } else {
        return ( false );
      }
    }
    
    function session_und_cookie_name () {
      return (md5(dirname($_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"]).DBPREF));
    }
    
    function user_pw_crypt($plainPassword) {
        if (version_compare(PHP_VERSION, '5.0') !== -1) {
            $pwCrypt = new PwCrypt();
            return $pwCrypt->cryptPasswd($plainPassword);
        }
        return md5($plainPassword);
    }
    
    function user_pw_check($plainPassword, &$passwordHash, $userId = false) {
        if (version_compare(PHP_VERSION, '5.0') !== -1) {
            $pwCrypt = new PwCrypt();
            $correct = $pwCrypt->checkPasswd($plainPassword, $passwordHash);
            if ($correct && $userId !== false && $pwCrypt->checkHashStrength($passwordHash)) {
                $passwordHash = $pwCrypt->cryptPasswd($plainPassword);
                if ($passwordHash) {
                    db_query('UPDATE `prefix_user` SET `pass` = "' . $passwordHash . '" WHERE `id` = ' . $userId);
                }
            }
            return $correct;
        }
        return md5($plainPassword) === $passwordHash;
    }
    
    function user_set_cookie($id, $cryptedPassword) {
        $cookieString = $id . '=' . md5(DBUSER . $cryptedPassword);
        setcookie($_SESSION['authsess'], $cookieString , strtotime('+1 year'), '/' );
    }
    
    function user_cookie_check($cookieHash, $cryptedPassword) {
        return md5(DBUSER . $cryptedPassword) == $cookieHash;
    }
    
    function user_login_check () {
      if ( isset ($_POST['user_login_sub']) AND isset ($_POST['name']) AND isset ($_POST['pass']) ) {
        debug ('posts vorhanden');
        $name = escape_nickname($_POST['name']);
        if ($name != $_POST['name'] OR strlen($_POST['name']) > 20) {
            return false;
        }
        $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE name = BINARY '".$name."'");
        if ( db_num_rows($erg) == 1 ) {
          debug ('user gefunden');
          $row = db_fetch_assoc($erg);
          if (user_pw_check($_POST['pass'], $row['pass'], $row['id']) ) {
            debug ('passwort stimmt ... '.$row['name']);
            $_SESSION['authname']  = $row['name'];
            $_SESSION['authid']    = $row['id'];
            $_SESSION['authright'] = $row['recht'];
            $_SESSION['lastlogin'] = $row['llogin'];
            $_SESSION['authsess']  = session_und_cookie_name();
            db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
            user_set_cookie($row['id'], $row['pass']);
            user_set_grps_and_modules();
            return (true);
          }
        }
        global $menu;
        $menu->set_url (0, 'user');
        $menu->set_url (1, 'login');
      }
      return ( false );
    }
    
    function user_auto_login_check () {
      $cn = session_und_cookie_name();
      $dat = explode('=',$_COOKIE[$cn]);
      $id = $pw = 0;
      if (isset($dat[0])) { $id = escape($dat[0], 'integer'); }
      if (isset($dat[1])) { $pw = $dat[1]; }
      debug (' pw ' . $pw );
      debug (' id ' . $id );
      $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id);
      if (db_num_rows($erg) == 1) {
        debug ('benutzer gefunden');
        $row = db_fetch_assoc($erg);
        if (user_cookie_check($pw, $row['pass'])) {
          debug ('passwoerter stimmen');
          debug ($row['name']);
          $_SESSION['authname']  = $row['name'];
          $_SESSION['authid']    = $row['id'];
          $_SESSION['authright'] = $row['recht'];
          $_SESSION['lastlogin'] = $row['llogin'];
          $_SESSION['authsess']  = $cn;
          db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
          user_set_cookie($row['id'], $row['pass']);
          return (true);
        }
      }
    
      user_logout ();
      return (false);
    }
    
    function user_set_guest_vars() {
      $_SESSION['authname']  = 'Gast';
      $_SESSION['authid']    = 0;
      $_SESSION['authright'] = 0;
      $_SESSION['lastlogin'] = time();
      $_SESSION['authgrp'] = array();
      $_SESSION['authmod'] = array();
      $_SESSION['authsess']  = session_und_cookie_name();
    }
    
    function user_markallasread () {
      $_SESSION['lastlogin'] = time();
    }
    
    function user_logout () {
      #global $allgAr;
      #$_SESSION = array();
      #$_SESSION['authgfx'] = $allgAr['gfx'];
      user_set_guest_vars();
      db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
      setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #if (isset($_COOKIE[session_name()])) {
      #  setcookie(session_name(), '', time()-99999999999931104000, '/');
      #}
      #setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #session_destroy();
    }
    
    function user_set_grps_and_modules() {
        $_SESSION['authgrp'] = array();
        $_SESSION['authmod'] = array();
        $_SESSION['adminaccess'] = array();
        if (loggedin()) {
            $erg = db_query('SELECT gid FROM prefix_groupusers WHERE uid = ' . $_SESSION['authid']);
            while ($row = db_fetch_assoc($erg)) {
                $_SESSION['authgrp'][$row['gid']] = true;
            }
            $erg = db_query('SELECT DISTINCT m.url, m.gshow '
                . 'FROM prefix_modulerights mr '
                . 'INNER JOIN prefix_modules m ON m.id = mr.mid '
                . 'WHERE mr.uid = ' . $_SESSION['authid']);
            while ($row = db_fetch_assoc($erg)) {
                $_SESSION['authmod'][$row['url']] = true;
                if ($row['gshow']) {
                    $_SESSION['adminaccess'][$row['url']] = true;
                }
            }
        }
    }
    
    function loggedin () {
      if ( has_right(-1) ) { return ( true ); } else { return ( false ); }
    }
    function is_admin () {
      if ( has_right(-9) ) { return ( true ); } else { return ( false ); }
    }
    function is_coadmin () {
      if ( has_right(-8) ) { return ( true ); } else { return ( false ); }
    }
    function is_siteadmin ($m = NULL) {
      if ( has_right(-7) ) { return ( true ); }
      if ( !is_null($m) AND has_right(NULL, $m)) { return (true); }
      return ( false );
    }
    
    # diese funktion liefert immer true wenn es ein admin ist.
    # wenn kein kein admin wird geprueft ob der user
    # entweder ein angegebenes recht oder in einer angegebene
    # gruppe ist. oder ob er fals angegben das modulrecht hat.
    # wenn eines von diesen 3 kriterien stimmt wird true ansonsten
    # wenn keins uebereinstimmt false zurueck gegeben.
    function has_right ($recht,$modul = '') {
      if ( !is_array($recht) AND !is_null($recht) ) {
        $recht = array ( $recht );
      }
    
      if ( $_SESSION['authright'] == -9 ) {
        return ( true );
      }
    
      if ( !is_null($recht) ) {
        foreach ( $recht as $v ) {
          if ( ($v <= 0 AND $v >= $_SESSION['authright'] ) OR (isset($_SESSION['authgrp'][$v]) AND $_SESSION['authgrp'][$v] === true) ) {
            return (true);
          }
        }
      }
    
      if ( !empty($modul) AND isset($_SESSION['authmod'][$modul]) AND $_SESSION['authmod'][$modul] === true ) {
        return ( true );
      }
    
      return (false);
    }
    
    ### admin
    # wenn der 2. parameter weggelassen wird oder auf true gesetzt wird
    # dann wird ein login formular angezeigt, wenn der user kein admin ist.
    # wird der parameter auf false gesetzt wird das login formular nicht angezeigt.
    # erste parameter ist das menu objekt...
    function user_has_admin_right($menu, $sl = true) {
        if ($_SESSION['authright'] <= -8) {  # co leader...
            return true;
        } else {
            $uri_to_check1 = $menu->get(0);
            $uri_to_check2 = $menu->get(1);
            if (count($_SESSION['adminaccess']) < 1 OR !loggedin()) {
                if ($sl === true) {
                    if (!loggedin()) {
                        $tpl = new tpl('user/login.htm');
                        $tpl->set_out('WDLINK', 'admin.php', 0);
                    } else {
                        echo '<strong>Keine Berechtigung!</strong> <a href="index.php">Startseite</a>';
                    }
                }
                return false;
            } elseif ((isset($_SESSION['adminaccess'][$uri_to_check1]) AND $_SESSION['adminaccess'][$uri_to_check1] == true)
                || (isset($_SESSION['adminaccess'][$uri_to_check1 . '-' . $uri_to_check2]) AND $_SESSION['adminaccess'][$uri_to_check1 . '-' . $uri_to_check2] == true)
            ) {
                return true;
            } elseif (count($_SESSION['adminaccess']) > 0 AND loggedin()) {
                if ($sl === true) {
                    foreach ($_SESSION['adminaccess'] as $k => $v) {
                        $x = $k;
                        break;
                    }
                    $x = explode('-', $x);
                    $menu->set_url(0, $x[0]);
                    if (isset($x[1])) {
                        $menu->set_url(1, $x[1]);
                    }
                }
                return true;
            }
        }
        return false;
    }
    
    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,vname,nname,str,hnr,plz,stadt)
             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,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$mail."',1,1,1,'".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$str."')");
    	
    		$userid = db_last_id();
    	}
      $regmail = sprintf($lang['registemail'],$name, $confirmlinktext, $name, $new_pass);
    
    	
    icmail($mail,'Anmeldung auf eu-de.net',$regmail); # email an user
           
      return (true);
    }
    
    function user_remove($uid){
        $row = @db_fetch_object(db_query("SELECT recht,avatar FROM prefix_user WHERE id = ".$uid));
        if ( $uid <> 1 AND ($_SESSION['authid'] == $uid OR $_SESSION['authid'] == 1 OR (is_coadmin() AND $_SESSION['authright'] < $row->recht))) {
            db_query("DELETE FROM prefix_user WHERE id = ".$uid);
            db_query("DELETE FROM prefix_userfields WHERE uid = ".$uid);
            db_query("DELETE FROM prefix_groupusers WHERE uid = ".$uid);
            db_query("DELETE FROM prefix_modulerights WHERE uid = ".$uid);
            db_query("DELETE FROM prefix_pm WHERE eid = ".$uid);
            db_query("DELETE FROM prefix_online WHERE uid = ".$uid);
            //Usergallery entfernen
            $sql = db_query("SELECT id,endung FROM prefix_usergallery WHERE uid = ".$uid);
            while( $r = db_fetch_object($sql) ){
                @unlink("include/images/usergallery/img_$r->id.$r->endung");
                @unlink("include/images/usergallery/img_thumb_$r->id.$r->endung");
            }
            db_query("DELETE FROM prefix_usergallery WHERE uid = ".$uid);
            //Avatar
            @unlink($row->avatar);
        }
    }
    
    function sendpm ($sid,$eid,$ti,$te,$status = 0) {
      if (is_array($eid)) {
      	db_query("INSERT INTO `prefix_pm` (`sid`,`eid`,`time`,`titel`,`txt`,`status`) ".
      	"SELECT  ".$sid.",`prefix_user`.`id`,'".time()."','".$ti."','".$te."',".$status." FROM `prefix_user` WHERE `prefix_user`.`id` IN (" . implode(',', $eid) . ")");
      } else {
      	db_query("INSERT INTO `prefix_pm` (`sid`,`eid`,`time`,`titel`,`txt`,`status`) VALUES (".$sid.",".$eid.",'".time()."','".$ti."','".$te."',".$status.")");
      }
    }
    function get_tagname($id){
        // config
        $recht = '-3'; // ab Trialmember
        $clantag = '[GTC]'; // vorgesetzter Clantag
        // 
        $erg = @db_query('SELECT `name`, `recht` FROM `prefix_user` WHERE `id` = "' . $id . '"');
        if (db_num_rows($erg) == 0) {
            $name = 'Gast';
        } else {
            $row = db_fetch_assoc($erg);
            if ($row['recht'] <= $recht) {
                $name = $clantag . $row['name'];
            } else {
                $name = $row['name'];
            }
        }
        return($name);
    }
    ?>


    es wird kein user angelegt. der link in der bestätigungsmail sagt immernoch das der link abgelaufen ist und die felder in meinem formular sehen so aus
    gesperrtes Bild
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    ZitatZitat geschrieben von Rockwulf
    http://www.ilch.de/texts-s130-umgang-mit-ilch-11-templatesystem.html



    Ich zitier mich so gern selber *generft = 0 + 10 == Jetzt"

    LES DOCH BITTE MAL Das was man dir postet.

    db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak,vname,nname,str,hnr,plz,stadt)
             VALUES ('".$id."','".$name."','".$mail."','".$passwordHash."',NOW(),1)");


    Okay nachdem du scheinbar immer noch nicht verstehst wie das aufgebaut ist eine kleine Anleitung

    -> db_query("INSERT INTO prefix_usercheck
    +++db_guery ist eine Funktionsanweisung das eine Abfrage gestartet wird
    ------------("INSERT INTO Ist die Anweisung das etwas eingefügt werden soll
    -------------------------prefix_usercheck ist die Tabelle in die es rein soll

    Es folgt (`check`,name,email,pass,datime,ak,vname,nname,str,hnr,plz,stadt)
    Das sind Felder in der Tabelle prefix_usercheck

    Weiter geht es mit VALUES was sagt das die Werte Folgen
    ('".$id."','".$name."','".$mail."','".$passwordHash."',NOW(),1)")


    So nun haben wir zwölf Felder in die Sechs Werte sollen? Wo sind denn die anderen Werte abgeblieben haben die "Berufsschule" oder wie?

    Weiter wird bei der regist.php sicherlich die Funktion

    function user_regist ($name, $mail, $pass)


    Aufgerufen merke das sieht da so aus:

     user_regist($name, $email, $pass);
    (Ist in Zeile 86)

    Jetzt hast du da soo viele schöne neue Variablen erstellt aber du übergibst sie nicht....

    Der Kompatibilität halber würde ich vorschlagen, du kopierst das:

    aus der user.php in die user.php

    function user_regist_extendet ($name, $mail, $pass, $vname,$nname,$str,$hnr,$plz,$stadt) {
      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,vname,nname,str,hnr,plz,stadt)
             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,vname,nname,str,hnr,plz,stadt)
    VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$mail."',1,1,1,'".$vname."','".$nname."','".$str."','".$hnr."','".$plz."','".$str."')");
         
            $userid = db_last_id();
        }
      $regmail = sprintf($lang['registemail'],$name, $confirmlinktext, $name, $new_pass);
     
         
    icmail($mail,'Anmeldung auf eu-de.net',$regmail); # email an user
            
      return (true);
    }


    Damit stehen die Variablen $vname,$nname,$str,$hnr,$plz,$stadt

    dann auch in der Funktion zu verfügung

    Natürlich musst du dann die Funktion in der regist.php auch mit

     user_regist_extendet ($name, $mail, $pass, $vname,$nname,$str,$hnr,$plz,$stadt);
    (Ist in Zeile 86)

    aufrufen.

    Uff

    Viel spaß beim umsetzen erstmal
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    erstmal vielen dank für die anleitung.

    es funktioniert nun mit dem registrieren und dem link. der user wird auch angelegt.

    ist mir schon sehr peinlich weitere fragen zu stellen aber komme wohl nicht drum rum^^

    jetzt steht in der registrierung noch {vname} etc in den feldern. hätte das auch mit deiner anleitung behoben werden müssen?
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    Du musst noch die neuen Felder an das Template übergeben

    $tpl->set('variable', $variable);

    Siehe:

                $tpl = new tpl('user/regist');
                $tpl->set('name', $name);
                $tpl->set('email', $email);
                $tpl->set('antispam', get_antispam('regist', 0));
                $tpl->set_out('FEHLER', $fehler, 1);
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Na na,

    nicht den Kopf hängen lassen,

    Blöde Fragen sind nur die, die nicht gestellt werden.

    Einzig eine Sache ist wichtig Lesen, Lesen und dann Versuchen.

    Aber wenigstens Versuchst du es und kommst nicht wie die anderen hier mach mal ^^
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    nun wird alles richtig angezeigt. die neuen felder sind aber keine pflichtfelder. wie muss ich nun vorgehen?
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    function check() {
    	var email=document.form1.eemail.value, nutz=document.form1.nutz.value;
    		 var cmail="",cnutz="";
    	 if (email!="") {
    		 if (document.form1.eemail.value.indexOf('@',0)==-1 || document.form1.eemail.value.indexOf('.',0)==-1)
    	 cmail="Die eingegebene E-Mail Adresse ist nicht korrekt!\n";
    		 }
    	else
    		var cmail="Du hast keine E-Mail Adresse angegeben!\n";
    		 if (nutz=="")
    		 	 var cnutz="Du hast keinen Nickname eingegeben!\n";
    		 if (cmail!="" || cnutz!=""){
    		 	 alert(cmail+cnutz)
    		return false;
    		 }
    	  else
    	  return true;
      }
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    so alles richtig?

    	function check() {
    	var email=document.form1.eemail.value, nutz=document.form1.nutz.value, vname=document.form1.vname.value, nname=document.form1.nname.value, str=document.form1.str.value, hnr=document.form1.hnr.value, plz=document.form1.plz.value, stadt=document.form1.szadt.value;
    		 var cmail="",cnutz="",cvname="",cnname="",cstr="",chnr="",cplz="",cstadt="";
    	 if (email!="") {
    		 if (document.form1.eemail.value.indexOf('@',0)==-1 || document.form1.eemail.value.indexOf('.',0)==-1)
    	 cmail="Die eingegebene E-Mail Adresse ist nicht korrekt!\n";
    		 }
    	else
    		var cmail="Du hast keine E-Mail Adresse angegeben!\n";
    		 if (nutz=="")
    		 	 var cnutz="Du hast keinen Nickname eingegeben!\n";
    			  if (vname=="")
    		 	 var cvname="Du hast keinen Vorname eingegeben!\n";
    			  if (nname=="")
    		 	 var cnname="Du hast keinen Nachname eingegeben!\n";
    			  if (str=="")
    		 	 var cstr="Du hast keine Strasse eingegeben!\n";
    			  if (hnr=="")
    		 	 var chnr="Du hast keine Hausnummer eingegeben!\n";
    			  if (plz=="")
    		 	 var cplz="Du hast keine Postleitzahl eingegeben!\n";
    			  if (stadt=="")
    		 	 var cstadt="Du hast keine Stadt eingegeben!\n";
    		 if (cmail!="" || cnutz!=""|| cvname!=""|| cnname!=""|| cstr!=""|| chnr!=""|| cplz!=""|| cstadt!=""){
    		 	 alert(cmail+cnutz+cvname+cnname+cstr+chnr+cplz+cstadt)
    		return false;
    		 }
    	  else
    	  return true;
      }


    Edit: geht nicht wie ich mir das gedacht habe. also nicht richtig...


    Zuletzt modifiziert von xxlynusxx am 30.05.2014 - 16:25:00
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ein kleiner Hinweis, das einfachste ist eigentlich die HTML5-Features zu nutzen. Da musst du dem Element lediglich ein Element required="required" geben.

    Zu Sicherheit müsste es auf Serverseite(php) eh nochmal geprüft werden.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    mein "google" ist glaube ich am ende. ich verstehe das mit deinem vorschlag nicht.

    ich hoffe ihr bedenkt das ich kein pro bin^^ ca 90% was ihr sagt muss ich in eurem forum nachschlagen was einiges an zeit kostet. langsam wäre ich sogar bereit ein paar talers springen zu lassen für das team wenn ich special support bekomme zwinker

    ich versuche zwar mein bestes aber mit den "pros" komme ich leider noch lange nicht mit.

    Edit: ich brauche immer ein paar mehr tipps (pfade, dateien, codesegmente) als die die das studiert bzw sich über jahre angeeignet haben^^


    Zuletzt modifiziert von xxlynusxx am 31.05.2014 - 05:44:16
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also ich meinte mit Element ein input Feld, war vielleicht etwas unverständlich.

    Dass man HTML Elementen Attribute zuordnen kann, das hast du ja sicher schon mitbekommen. In dem Thema ist ja bisher kein Template drin.

    Du könntest also auf z.B: <input type="text" name="..." required="required" /> setzen, dann kann man Feld bei aktuellen Browser nur noch abschicken, wenn etwas darin steht.

    Als Referenz vielleicht, www.html5rocks.com/de/tutorials/forms/html5forms/#toc-validation das ist aber ein recht langer Artikel, den du dir sicher nicht im ganzen durchlesen musst, ggf. ab der verlinkten Stelle kurz lesen.

    Damit ist aber noch nicht sichergestellt, dass der Benutzer wirklich etwas eingegeben hat, man kann den Browser letztendlich immer "austricksen". Deswegen darf man sich auf Validierung im Browser nicht verlassen und muss es mit php nochmal überprüfen.

    Das müsste man dann in der regist.php machen, hier mal der Ausschnitt, wo es hin muss.

            $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 = '';
                }


    Ich gebe dir hier mal eine "kleine" Hilfestellung, wie du es verändern kannst, um leichter mehrere Felder zu überprüfen. Ich habe die Zeilen mit Änderungen markiert.

           $checkNotEmpty = array(
                'name' => 'Name', //feldname => Label (wird im Fehlertext verwendet)
                'email' => 'E-Mail',
                'vname' => 'Vorname'
            );
    
            $emptyErrorMsg = '';
            foreach ($checkNotEmpty as $field => $label) {
                if (empty($$field)) {
                    $emptyErrorMsg .= 'Das Feld ' . $label . ' darf nicht leer sein!' . PHP_EOL;
                }
            }
    
            $chkAntispam = chk_antispam('regist');
            if (!empty($emptyErrorMsg) 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 = nl2br($emptyErrorMsg);
                    }
                } else {
                    $fehler = '';
                }
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    ich bekomme das irgendwie nicht zum laufen.
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Diese Aussage ist nicht sehr hilfreich, um weitere Hilfestellungen zu leisten.

    Was hast du gemacht?
    Was passiert nun, kommen Fehlermeldungen, ...?
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    Bin grade auf der Arbeit und hab die Änderungen nicht dabei. Melde mich heute abend wieder.
    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    Möchte erstmal um Verzeihung bitten das ich jetzt erst antworte aber hatte private Probleme.

    Jetzt kann ich mich wieder um die Seite kümmern.

    Habe geändert:

    regist.htm
    <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" required="required"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_mail}</td>
                <td class="Cnorm"><input type="text" maxlength="100" value="{email}" name="email" required="required"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_vname}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="20" value="{vname}" name="Vorname" required="required"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_nname}</td>
                <td class="Cnorm"><input type="text" maxlength="20" value="{nname}" name="Nachname" required="required"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_str}</td>
                <td class="Cnorm"><input type="text" maxlength="50" value="{str}" name="Strasse" required="required">{_lang_hnr}<input type="text" maxlength="4" value="{hnr}" name="Hausnummer" required="required" style="width: 51px"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_plz}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="5" value="{plz}" name="Postleitzahl" required="required"></td>
            </tr>
    		<tr>
                <td class="Cmite">{_lang_stadt}</td>
                <td class="Cnorm">
    			<input type="text" maxlength="20" value="{stadt}" name="Stadt" required="required"></td>
            </tr>{EXPLODE}<tr>
                <td class="Cmite">{_lang_password}</td>
                <td class="Cnorm"><input type="password" name="pass" required="required"></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>


    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 = '';
    $vname = '';
    $nname = '';
    $str = '';
    $hnr = '';
    $plz = '';
    $stadt = '';
            if (!empty($_POST['nutz'])) {
                $name = escape($_POST['nutz'], 'string');
            }
            if (!empty($_POST['email'])) {
                $email = escape($_POST['email'], 'string');
            }
     if (!empty($_POST['vname'])) {
                $vname = escape($_POST['vname'], 'string');
            } 
    if (!empty($_POST['nname'])) {
                $nname = escape($_POST['nname'], 'string');
            }
     if (!empty($_POST['str'])) {
                $str = escape($_POST['str'], 'string');
            }
     if (!empty($_POST['hnr'])) {
                $hnr = escape($_POST['hnr'], 'string');
            }
     if (!empty($_POST['plz'])) {
                $plz = escape($_POST['plz'], 'string');
            }
     if (!empty($_POST['stadt'])) {
                $stadt = escape($_POST['stadt'], '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;
            }
    $checkNotEmpty = array(
         'name' => 'Name', //feldname => Label (wird im Fehlertext verwendet)
         'email' => 'E-Mail',
         'vname' => 'Vorname',
    	 'nname' => 'Nachname',
    	 'str' => 'Strasse',
    	 'hnr' => 'Hausnummer',
    	 'plz' => 'Postleitzahl',
    	 'stadt' => 'Stadt',
     );
      $emptyErrorMsg = '';
     foreach ($checkNotEmpty as $field => $label) {
         if (empty($$field)) {
             $emptyErrorMsg .= 'Bitte füllen Sie das Feld ' . $label . ' aus!' . PHP_EOL;
         }
     }
            $chkAntispam = chk_antispam('regist');
    		if (!empty($emptyErrorMsg) 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 = nl2br($emptyErrorMsg);
             }
                } 
                $tpl = new tpl('user/regist');
                $tpl->set('name', $name);
                $tpl->set('email', $email);
                $tpl->set('vname', $vname);
    $tpl->set('nname', $nname);
    $tpl->set('str', $str);
    $tpl->set('hnr', $hnr);
    $tpl->set('plz', $plz);
    $tpl->set('stadt', $stadt);
                $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, $pass, $vname, $nname, $str, $hnr, $plz, $stadt);
    
                $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;
    }
    ?>


    Wenn ich nun alle Felder ausfülle und es absende werden alle Fehlermeldungen angezeigt die ich hinzugefügt habe und das sogar doppelt^^

    gesperrtes Bild
    0 Mitglieder finden den Beitrag gut.
  30. #30
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    $checkNotEmpty = array(
         'name' => 'Name', //feldname => Label (wird im Fehlertext verwendet)
         'email' => 'E-Mail',
         'vname' => 'Vorname',
         'nname' => 'Nachname',
         'str' => 'Strasse',
         'hnr' => 'Hausnummer',
         'plz' => 'Postleitzahl',
         'stadt' => 'Stadt',
     );
      $emptyErrorMsg = '';
     foreach ($checkNotEmpty as $field => $label) {
         if (empty($$field)) {
             $emptyErrorMsg .= 'Bitte füllen Sie das Feld ' . $label . ' aus!' . PHP_EOL;
         }
     }
            $chkAntispam = chk_antispam('regist');
            if (!empty($emptyErrorMsg) 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 = nl2br($emptyErrorMsg);
             }


    Du hast es doppelt drinnen
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
Geschlossen

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

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten