Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
ALTER TABLE `ic1_usercheck` ADD `firstname` VARCHAR(100) NOT NULL DEFAULT ''; ALTER TABLE `ic1_usercheck` ADD `familyname` VARCHAR(100) NOT NULL DEFAULT ''; ALTER TABLE `ic1_user` ADD `firstname` VARCHAR(100) NOT NULL DEFAULT ''; ALTER TABLE `ic1_user` ADD `familyname` VARCHAR(100) NOT NULL DEFAULT '';
 
 
<!-- 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}
<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_firstname}</td>
            <td class="Cnorm"><input type="text" name="firstname" value="{firstname}" maxlength="30"></td>
        </tr><tr>
            <td class="Cmite" width="60">{_lang_familyname}</td>
            <td class="Cnorm"><input type="text" name="familyname" value="{familyname}" maxlength="30"></td>
        </tr><tr>
            <td class="Cmite">{_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>
'firstname' => 'Vorname', 'familyname' => 'Nachname',
'firstname' => 'first name', 'familyname' => 'family name',
<?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öglich';
    $hmenu = $extented_forum_menu . '<a class="smalfont" href="?user">User</a><b> » </b>Keine Registrierung mö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> » </b><a class="smalfont" href="?user-regist">Registrieren</a><b> » </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 = '';
		$firstname = '';
		$familyname = '';
		
        if (!empty($_POST['nutz'])) {
            $name = escape($_POST['nutz'], 'string');
        }
        if (!empty($_POST['email'])) {
            $email = escape($_POST['email'], 'string');
        }
        if (!empty($_POST['firstname'])) {
            $firstname = escape($_POST['firstname'], 'string');
        }
        if (!empty($_POST['familyname'])) {
            $familyname = escape($_POST['familyname'], 'string');
        }
		
		$checkNotEmpty = array(
		    'name'	=> 'Nickname',
			'email' => 'E-Mail',
			'firstname' => 'Vorname',
			'familyname' => 'Nachname'
		);
		
		$emptyErrorMsg = '';
		foreach ($checkNotEmpty as $field => $label) {
			if (empty($$field)) {
				$emptyErrorMsg .= '• <b>' . $label . '</b> ist ein Pflichtfeld!' . PHP_EOL;
			}
		}
        $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($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> » </b><a class="smalfont" href="?user-regist">Registrieren</a><b> » </b>Step 2 von 3' . $extented_forum_menu_sufix;
            $design = new design($title, $hmenu, 1);
            $design->header();
            if (isset($_POST['register'])) {
                if (!empty($emptyErrorMsg)) {
                    $fehler = $lang['entereddataincomplete'] . '<br/>' . $emptyErrorMsg;
                } 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('firstname', $firstname);
            $tpl->set('familyname', $familyname);
            $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, $firstname, $familyname, $email, $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> » </b><a class="smalfont" href="?user-regist">Registrieren</a><b> » </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;
}
?>
<?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']) > 15) {
        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, $firstname, $familyname, $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,firstname,familyname,email,pass,datime,ak)
		VALUES ('".$id."','".$name."','".$firstname."','".$familyname."','".$mail."','".$passwordHash."',NOW(),1)");
  } else {
	  db_query("INSERT INTO prefix_user (name,firstname,familyname,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
		VALUES('".$name."','".$firstname."','".$familyname."','".$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);
}
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.")");
  }
}
?>
<?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> » </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,firstname,familyname,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
			  VALUES('".$row['name']."','".$row['firstname']."','".$row['familyname']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1)");
			  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ö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();
?>
 
 
<a href="javascript:history.back(1)"><b>«</b> {_lang_back}</a>
<br />
<br />
<table width="100%" cellpadding="3" cellspacing="1" class="border">
  <tr class="Chead"> 
    <th colspan="3"><b>{_lang_detailsfrom} {NAME}</b></th>
  </tr><tr>
    <td class="Cmite" width="30%">{_lang_nickname}</td>
    <td class="Cnorm" width="40%">{NAME}</td>
    <td class="Cnorm" width="30%" rowspan="{rowspan}" valign="top" align="center">
		  {AVATA}
			<br /><br />
			<font class="smalfont">{RANG}</font>
		</td>
  </tr><tr>
    <td class="Cmite">{_lang_firstname}</td>
    <td class="Cnorm">{FIRSTNAME}</td>
  </tr><tr>
    <td class="Cmite">{_lang_familyname}</td>
    <td class="Cnorm">{FAMILYNAME}</td>
  </tr><tr>
    <td class="Cmite">{_lang_regsince}</td>
    <td class="Cnorm">{JOINED}</td>
  </tr><tr>
    <td class="Cmite">{_lang_lastactivity}</td>
    <td class="Cnorm">{LASTAK}</td>
  </tr><tr>
    <td class="Cmite">{_lang_posts2}</td>
    <td class="Cnorm">{POSTS}, {_lang_perday}: {postpday}</td>
  </tr>
	
{profilefields}
	
</table>
<br />
<a href="javascript:history.back(1)"><b>«</b> {_lang_back}</a>
<?php
#   Copyright by: Manuel
#   Support: www.ilch.de
defined ('main') or die ( 'no direct access' );
$uid = intval($menu->get(2));
$abf = 'SELECT * FROM prefix_user WHERE id = "'.$uid.'"';
$erg = db_query($abf);
if (db_num_rows($erg)) {
	$row = db_fetch_assoc($erg);
	$avatar = '';
	if ( file_exists($row['avatar'])) {
		$avatar = '<img src="'.$row['avatar'].'" border="0">';
	}
	$regsek = mktime ( 0,0,0, date('m'), date('d'), date('Y') )  - $row['regist'];
	$regday = round($regsek / 86400);
	$postpday = ( $regday == 0 ? 0 : round($row['posts'] / $regday, 2 ) );
	$ar = array (
	    'NAME' => $row['name'],
	    'FIRSTNAME' => $row['firstname'],
	    'FAMILYNAME' => $row['familyname'],
		'JOINED'  => date('d M Y',$row['regist']),
		'LASTAK'  => date('d M Y - H:i',$row['llogin']),
		'POSTS'   => $row['posts'],
		'postpday' => $postpday,
		'RANG'    => userrang ($row['posts'],$uid),
		'AVATA'   => $avatar,
	);
	$title = $allgAr['title'].' :: Users :: Details von '.$row['name'];
	$hmenu  = $extented_forum_menu.'<a class="smalfont" href="?user">Users</a><b> » </b> Details von '.$row['name'].$extented_forum_menu_sufix;
	$design = new design ( $title , $hmenu, 1);
	$design->header();
	$tpl = new tpl ( 'user/userdetails' );
	$l = profilefields_show ( $uid );
	$ar['rowspan'] = 6 + substr_count($l, '<tr><td class="');
	$ar['profilefields'] = $l;
	$tpl->set_ar_out($ar,0);
} else {
	$title = $allgAr['title'].' :: Users :: User nicht gefunden';
	$hmenu  = $extented_forum_menu.'<a class="smalfont" href="?user">Users</a> '.$extented_forum_menu_sufix;
	$design = new design ( $title , $hmenu, 1);
	$design->header();
	echo 'Der Benutzer wurde nicht gefunden bzw. die Seite wurde nicht richtig aufgerufen.<br />';
}
$design->footer();
?>
<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_firstname}</label><input style="margin-bottom:2px;" name="firstname" value="{firstname}" /><br style="clear:both;" />
		    <label style="float:left; width:35%;">{_lang_familyname}</label><input style="margin-bottom:2px;" name="familyname" value="{familyname}" /><br style="clear:both;" />
            <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_homepage}</label><input style="margin-bottom:2px;" name="homepage" value="{homepage}" /><br style="clear:both;" />
			<label style="float:left; width:35%;">{_lang_hometown}</label><input style="margin-bottom:2px;" name="wohnort" value="{wohnort}" /><br style="clear:both;" />
			<label style="float:left; width:35%;">{_lang_icq}</label><input style="margin-bottom:2px;" name="icq" value="{icq}" /><br style="clear:both;" />
			<label style="float:left; width:35%;">{_lang_msn}</label><input style="margin-bottom:2px;" name="msn" value="{msn}" /><br style="clear:both;" />
			<label style="float:left; width:35%;">{_lang_yahoo}</label><input style="margin-bottom:2px;" name="yahoo" value="{yahoo}" /><br style="clear:both;" />
			<label style="float:left; width:35%;">{_lang_aim}</label><input style="margin-bottom:2px;" name="aim" value="{aim}" /><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>   <a href="index.php?user-remove"/></a>
            </div>{/_endif}<br />
            {EXPLODE}
      <fieldset>
      <legend>{_lang_removeaccount}</legend>
      <label style="float:left; width:35%;"> </label><input type="checkbox" value="yes" name="removeaccount" /> {_lang_delete}?   <font class="smalfont">{_lang_mustbeentered}</font>
      </fieldset>
      <fieldset>
			  <legend>{_lang_avatar}</legend>
			    <label style="float:left; width:35%;"> </label>{avatarbild}<input type="checkbox" value="yes" name="avatarloeschen" /> {_lang_delete}?<br /><br />
			    <label style="float:left; width:35%;"> </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>
<?php
#   Copyright by: Manuel
#   Support: www.ilch.de
defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Users :: Profil';
$hmenu  = $extented_forum_menu.'<a class="smalfont" href="?user">Users</a><b> » </b> Profil'.$extented_forum_menu_sufix;
$design = new design ( $title , $hmenu, 1);
if ( $_SESSION['authright'] <= -1 ) {
    $csrfCheck = chk_antispam('user_profile_edit', true);
    
if ( empty ($_POST['submit']) || !$csrfCheck ) {
  $design->header();
	$abf = 'SELECT firstname,familyname,email,wohnort,homepage,aim,msn,icq,yahoo,avatar,status,staat,gebdatum,sig,opt_pm_popup,opt_pm,opt_mail,geschlecht,spezrank FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
	$erg = db_query($abf);
	if ( db_num_rows($erg) > 0 ) {
	  $row = db_fetch_assoc($erg);
		$tpl = new tpl ('user/profil_edit');
		$row['staat'] = '<option></option>'.arliste ( $row['staat'] , get_nationality_array() , $tpl , 'staat' );
    $row['geschlecht0'] = ( $row['geschlecht'] < 1 ? 'checked' : '' );
    $row['geschlecht1'] = ( $row['geschlecht'] == 1 ? 'checked' : '' );
    $row['geschlecht2'] = ( $row['geschlecht'] == 2 ? 'checked' : '' );
    if ( $row['status'] == 1 ) { $row['status1'] = 'checked'; $row['status0'] = ''; } else { $row['status1'] = ''; $row['status0'] = 'checked'; }
    if ( $row['opt_mail'] == 1 ) { $row['opt_mail1'] = 'checked'; $row['opt_mail0'] = ''; } else { $row['opt_mail1'] = ''; $row['opt_mail0'] = 'checked'; }
    if ( $row['opt_pm'] == 1 ) { $row['opt_pm1'] = 'checked'; $row['opt_pm0'] = ''; } else { $row['opt_pm1'] = ''; $row['opt_pm0'] = 'checked'; }
    if ( $row['opt_pm_popup'] == 1 ) { $row['opt_pm_popup1'] = 'checked'; $row['opt_pm_popup0'] = ''; } else { $row['opt_pm_popup1'] = ''; $row['opt_pm_popup0'] = 'checked'; }
    $row['avatarbild'] = ( file_exists ( $row['avatar'] ) ? '<img src="'.$row['avatar'].'" alt=""><br />' : '' );
    $row['Fabreite'] = $allgAr['Fabreite'];
    $row['Fahohe'] = $allgAr['Fahohe'];
    $row['Fasize'] = $allgAr['Fasize'];
    $row['forum_max_sig'] = $allgAr['forum_max_sig'];
    $row['uid'] = $_SESSION['authid'];
    $row['forum_usergallery'] = $allgAr['forum_usergallery'];
    $row['antispam'] = get_antispam('user_profile_edit', 0, true);
    $tpl->set_ar_out($row,0);
    if ($allgAr['forum_avatar_upload']) $tpl->out(1);
    $tpl->set_ar_out($row,2);
		profilefields_change ( $_SESSION['authid'] );
		$tpl->out(3);
  } else {
    $tpl = new tpl ( 'user/login.htm' );
    $tpl->set_out('WDLINK','index.php',0);
	}
} elseif ($csrfCheck) {  # submit
  # change poassword
	if ( !empty($_POST['np1']) AND !empty($_POST['np2']) AND !empty($_POST['op'])) {
    if ($_POST['np1'] == $_POST['np2']) {
		  $akpw = db_result(db_query("SELECT pass FROM prefix_user WHERE id = ".$_SESSION['authid']),0);
			if (user_pw_check($_POST['op'], $akpw)) {
			  $newpw = user_pw_crypt($_POST['np1']);
				db_query("UPDATE prefix_user SET pass = '".$newpw."' WHERE id = ".$_SESSION['authid']);
                user_set_cookie($_SESSION['authid'], $newpw);
				$fmsg = $lang['passwortchanged'];
			} else {
		    $fmsg = $lang['passwortwrong'];
		  }
		} else {
		  $fmsg = $lang['passwortnotequal'];
	  }
  }
  # avatar speichern START
			$avatar_sql_update = '';
      if ( !empty ( $_FILES['avatarfile']['name'] ) AND $allgAr['forum_avatar_upload'] ) {
				$file_tmpe = $_FILES['avatarfile']['tmp_name'];
        $rile_type = ic_mime_type ($_FILES['avatarfile']['tmp_name']);
				$file_type = $_FILES['avatarfile']['type'];
				$file_size = $_FILES['avatarfile']['size'];
        $fmsg = $lang['avatarisnopicture'];
        $size  = @getimagesize ($file_tmpe);
        $endar = array (1 => 'gif', 2 => 'jpg', 3 => 'png');
				if ( ($size[2] == 1 OR $size[2] == 2 OR $size[2] == 3) AND $size[0] > 10 AND $size[1] > 10 AND substr ( $file_type , 0 , 6 ) == 'image/' AND substr ( $rile_type , 0 , 6 ) == 'image/' ) {
				  $endung = $endar[$size[2]];
          $breite = $size[0];
          $hoehe  = $size[1];
          $fmsg = $lang['avatarcannotupload'];
				  if ( $file_size <= $allgAr['Fasize'] AND $breite <= $allgAr['Fabreite'] AND $hoehe <=  $allgAr['Fahohe'] ) {
					  $neuer_name = 'include/images/avatars/'.$_SESSION['authid'].'.'.$endung;
						@unlink (db_result(db_query("SELECT avatar FROM prefix_user WHERE id = ".$_SESSION['authid']),0));
            move_uploaded_file ( $file_tmpe , $neuer_name );
            @chmod($neuer_name, 0777);
            $avatar_sql_update = "avatar = '".$neuer_name."',";
            $fmsg = $lang['pictureuploaded'];
					}
				}
			} elseif ( isset($_POST['avatarloeschen']) ) {
        $fmsg = $lang['picturedelete'];
        @unlink (db_result(db_query("SELECT avatar FROM prefix_user WHERE id = ".$_SESSION['authid']),0));
        $avatar_sql_update = "avatar = '',";
      }
  # avatar speichern ENDE
  # email aendern
  if ($_POST['email'] != $_POST['aemail']) {
    $id = $_SESSION['authid'].'||'.md5 (uniqid (rand()));
    db_query("INSERT INTO prefix_usercheck (`check`,email,datime,ak)
    VALUES ('".$id."','".escape($_POST['email'],'string')."',NOW(),3)");
    $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    $text = $lang['changedthemail'] . sprintf ($lang['registconfirmlink'], $page, $id );
    icmail ($_POST['email'], $lang['mail'].' '.$lang['changed'], $text );
    $fmsg = $lang['pleaseconfirmmail'];
  }
  #
  #remove account
  if (isset($_POST['removeaccount'])) {
    $id = $_SESSION['authid'].'-remove-'.md5 (uniqid (rand()));
    db_query("INSERT INTO prefix_usercheck (`check`,email,datime,ak)
    VALUES ('".$id."','".escape($_POST['email'],'string')."',NOW(),5)");
    $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    $text = $lang['removeconfirm'] . sprintf ($lang['registconfirmlink'], $page, $id );
    icmail ($_POST['email'], html_entity_decode($lang['removeaccount'], ILCH_ENTITIES_FLAGS, ILCH_CHARSET), $text );
    $fmsg = $lang['pleaseconfirmremove'];
  }
  #remove account
  # statische felder speichern
		  db_query("UPDATE prefix_user
			  SET
          firstname = '".escape($_POST['firstname'], 'string')."',
          familyname = '".escape($_POST['familyname'], 'string')."',
          homepage = '".get_homepage(escape($_POST['homepage'], 'string'))."',
          wohnort = '".escape($_POST['wohnort'], 'string')."',
          icq = '".escape($_POST['icq'], 'string')."',
          msn = '".escape($_POST['msn'], 'string')."',
          yahoo = '".escape($_POST['yahoo'], 'string')."',
          ".$avatar_sql_update."
          aim = '".escape($_POST['aim'], 'string')."',
          staat = '".escape($_POST['staat'], 'string')."',
          geschlecht = '".escape($_POST['geschlecht'], 'string')."',
          status = '".escape($_POST['status'], 'string')."',
          opt_mail = '".escape($_POST['opt_mail'], 'string')."',
          opt_pm = '".escape($_POST['opt_pm'], 'string')."',
          opt_pm_popup = '".escape($_POST['opt_pm_popup'], 'string')."',
          gebdatum = '".get_datum(escape($_POST['gebdatum'], 'string'))."',
          sig = '".substr(escape($_POST['sig'], 'string'),0,$allgAr['forum_max_sig'])."'
				WHERE id = ".$_SESSION['authid']
      );
	# change other profil fields
  profilefields_change_save ( $_SESSION['authid'] );
	$design->header();
	# definie and print msg
	$fmsg = ( isset($fmsg) ? $fmsg : $lang['changesuccessful'] );
	wd('?user-8' , $fmsg  , 3 );
}
} else {
		$tpl = new tpl ( 'user/login' );
		$tpl->set_out('WDLINK', '?user-8', 0);
}
$design->footer();
?>
<?php
#   Copyright by: Manuel
#   Support: www.ilch.de
defined ('main') or die ( 'no direct access' );
defined ('admin') or die ( 'only admin access' );
$design = new design ( 'Admins Area', 'Admins Area', 2 );
$design->header();
$tpl = new tpl ( 'puser', 1);
# add pending user
if($menu->get(1) == "confirm" AND isset($_GET['check'])){
  $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,firstname,familyname,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
  			 VALUES('".$row['name']."','".$row['firstname']."','".$row['familyname']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1)");
   		  db_query("DELETE FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
      }else {
  			 $tpl->set_out('error','Username existiert bereits',3);
  		}
  		break;
    # confirm new pass
    case 2 :
      db_query("UPDATE prefix_user SET pass = '".$row['pass']."' WHERE name = BINARY '".$row['name']."'");
      db_query("DELETE FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
      break;
    # confirm new email
    case 3 :
      list ($id, $check) = explode('||', $row['check']);
      db_query("UPDATE prefix_user SET email = '".$row['email']."' WHERE id = ". escape($id, 'integer'));
		  db_query("DELETE FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
      break;
    # join us
    case 4 :
    	echo '<br />Joinus kann über diese Liste nicht akzeptiert werden, mache diese über <a style="color:red;" href="http://ilch11.dev/admin.php?groups-joinus">Joinus Anfragen bearbeiten</a><br /><br />';
      break;
	# ak 5 remove account
	case 5:
		list ($id, $muell) = explode('-remove-', $row['check']);
		if ($id == $_SESSION['authid']) {
			echo 'Der eigene Account ist auf diese Weise nicht löschbar.';
			break;
		}
		user_remove($id);
		db_query("DELETE FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
		break;
	}
  } else {
    $tpl->set_out('error','User nicht auffindbar',3);
  }
}
#remove pending user
if($menu->get(1) == "del" AND isset($_GET['check'])){
  db_query("DELETE FROM prefix_usercheck WHERE `check` = '".escape($_GET['check'], 'string')."'");
}
$tpl->out(0);
$ak=array('','neuer User','neues Passwort','neue Emailadresse','Join us','Account löschen');
$c = 0;
$erg = db_query("SELECT `check`, `name`, `email`, `ak`, date_format(datime,'%H:%i Uhr %m.%d.%Y') as time FROM `prefix_usercheck` ORDER by datime DESC");
while ($row = db_fetch_assoc($erg)) {
  if ($class == 'Cmite') { $class = 'Cnorm'; } else { $class = 'Cmite'; }
  $c++;
  $row['c']=$c;
  $row['class']= $class;
  if($row['ak']==3){
    list ($id, $check) = explode('||', $row['check']);
    $row['name']= @db_result(db_query("SELECT name FROM prefix_user WHERE id = ".$id),0);
  }
  $row['aktion'] = $ak[$row['ak']];
  $tpl->set_ar_out($row , 1);
}
$tpl->out(2);
$design->footer();
?>