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();
?>