Jetzt ist der Fehler in Zeile 10. :/
Habe sicherheitshalber mal alles kopiert.
Code:
<?php
/**
*
* @package Itschi
* @since 2007/05/25
*
*/
class user
{
var $row = false;
var $session = 'user';
var $cookie_lifetime = 2678400;
var $ranks_cache = array();
var $session_started = false;
function user()
{
if (!empty($_REQUEST[session_name()]))
{
$this->session_started = true;
session_start();
}
if (empty($_SESSION[$this->session]))
{
if (isset($_COOKIE['username']) && isset($_COOKIE['password']))
{
$this->login($_COOKIE['username'], $_COOKIE['password']);
}
}
else
{
$this->update_vars();
if ($this->row['user_ban'])
{
$this->check_ban($this->row['user_id'], $this->row['user_ban']);
}
$this->set_lastvisit();
}
$this->online_global();
}
function login($username, $password, $autologin = false, $redirect = '')
{
global $db;
$res = $db->query('
SELECT *
FROM ' . USERS_TABLE . "
WHERE username = '" . $db->chars($username) . "'
AND user_password = '" . $db->chars($password) . "'
");
$row = $db->fetch_array($res);
$db->free_result($res);
if (!$row['user_id'])
{
return false;
}
else
{
if ($row['user_unlock'])
{
message_box('Du hast deine E-Mail noch nicht bestätigt', '/', 'zurück zur Startseite');
}
if ($row['user_ban'])
{
$this->check_ban($row['user_id'], $row['user_ban']);
}
if (!$this->session_started)
{
session_start();
$this->session_started = true;
}
$_SESSION[$this->session] = $row['user_id'];
$this->row = $row;
$TimeLogin = $db->query("
SELECT `user_login` FROM '" . USERS_TABLE . "'
WHERE user_id = '" . $row['user_id'] . "'
");
$TimeLoginRow = $db->fetch_array($TimeLogin);
$db->query('
UPDATE ' . USERS_TABLE . '
SET user_login = ' . $TimeLoginRow['user_login'] . ",
user_ip = '" . $_SERVER['REMOTE_ADDR'] . "'
WHERE user_id = " . $row['user_id']
);
if ($autologin)
{
setCookie('username', $row['username'], time() + $this->cookie_lifetime, '/');
setCookie('password', $row['user_password'], time() + $this->cookie_lifetime, '/');
}
$db->query('
DELETE FROM ' . ONLINE_TABLE . "
WHERE online_ip = '" . $_SERVER['REMOTE_ADDR'] . "'
AND user_id = " . $row['user_id']
);
$db->query('
UPDATE ' . ONLINE_TABLE . '
SET user_id = ' . $row['user_id'] . "
WHERE online_ip = '" . $_SERVER['REMOTE_ADDR'] . "'
AND user_id = 0
");
$this->set_lastvisit();
$this->online_global();
if ($redirect)
{
header('Location: ' . $redirect);
}
}
return true;
}
function logout()
{
if (empty($_SESSION[$this->session]))
{
return false;
}
global $db;
$db->query('
UPDATE ' . ONLINE_TABLE . '
SET user_id = 0
WHERE user_id = ' . $this->row['user_id']
);
setCookie('username', '', -3600, '/');
setCookie('password', '', -3600, '/');
$this->set_lastvisit(false);
$this->row = false;
$this->online_global();
session_destroy();
unset($_SESSION[$this->session]);
setCookie(session_name(), '', -3600, '/');
return true;
}
function online_global()
{
global $db;
$sid = session_id();
$agent = $db->chars(trim(substr($_SERVER['HTTP_USER_AGENT'], 0, 149)));
$ip = $_SERVER['REMOTE_ADDR'];
$user_id = (int)$this->row['user_id'];
if ($user_id)
{
$res = $db->query('
SELECT COUNT(*)
FROM ' . ONLINE_TABLE . '
WHERE user_id = ' . $user_id
);
$row = $db->result($res, 0);
$db->free_result($res);
if ($row > 0)
{
$db->query('
UPDATE ' . ONLINE_TABLE . '
SET user_id = ' . $user_id . ',
online_lastvisit = ' . time() . ",
online_agent = '" . $agent . "'
WHERE user_id = " . $user_id
);
$db->query('
DELETE FROM ' . ONLINE_TABLE . '
WHERE online_lastvisit < ' . (time() - 300)
);
return;
}
}
$res = $db->query('
SELECT COUNT(*)
FROM ' . ONLINE_TABLE . "
WHERE online_ip = '" . $ip . "'
AND user_id = 0
");
$row = $db->result($res, 0);
$db->free_result($res);
if ($row > 0)
{
$db->query('
UPDATE ' . ONLINE_TABLE . '
SET user_id = ' . $user_id . ',
online_lastvisit = ' . time() . ",
online_agent = '" . $agent . "'
WHERE online_ip = '" . $ip . "'
AND user_id = 0
");
}
else
{
$db->query('
INSERT INTO ' . ONLINE_TABLE . '
(user_id, online_lastvisit, online_ip, online_agent) VALUES
(' . $user_id . ', ' . time() . ", '" . $ip . "', '" . $agent . "')
");
}
$db->query('
DELETE FROM ' . ONLINE_TABLE . '
WHERE online_lastvisit < ' . (time() - 300)
);
}
function set_lastvisit($time = true)
{
if (!$this->row)
{
return;
}
global $db;
$db->query('
UPDATE ' . USERS_TABLE . '
SET user_lastvisit = ' . (($time) ? time() : 0) . '
WHERE user_id = ' . $this->row['user_id']
);
}
function update_vars()
{
if (!isset($_SESSION[$this->session]))
{
return;
}
global $db;
$res = $db->query('
SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . (int)$_SESSION[$this->session]
);
$this->row = $db->fetch_array($res);
$db->free_result($res);
}
function check_ban($user_id, &$ban)
{
global $db;
$res = $db->query('
SELECT ban_id, ban_time, ban_reason
FROM ' . BANLIST_TABLE . '
WHERE user_id = ' . $user_id
);
$row = $db->fetch_array($res);
$db->free_result($res);
if (!$row['ban_id'])
{
return;
}
if ($row['ban_time'] > time())
{
if ($this->row)
{
$this->logout();
}
message_box('Du wurdest gesperrt bis: ' . date('d.m.Y H:i', $row['ban_time']) . ' Uhr<br />Grund: <i>' .
htmlspecialchars($row['ban_reason']) . '</i>', 'index.php', 'zurück zur Startseite');
}
$db->query('
UPDATE ' . USERS_TABLE . '
SET user_ban = 0
WHERE user_id = ' . $user_id
);
$ban = 0;
}
function legend($level)
{
switch ($level)
{
case USER: return '';
case MOD: return 'mod';
case ADMIN: return 'admin';
}
}
function set_rank($user_id, $rank_id, $posts)
{
if (!isset($this->ranks))
{
global $cache;
$this->ranks = $cache->get('ranks');
}
if ($rank_id)
{
$this->ranks_cache[$user_id] = array($this->ranks[$rank_id]['rank_title'], $this->ranks[$rank_id]['rank_image']);
}
else
{
foreach ($this->ranks[0] as $p => $rank)
{
if ($posts >= $p)
{
$this->ranks_cache[$user_id] = array($rank['rank_title'], $rank['rank_image']);
return;
}
}
}
$this->ranks[$user_id] = array('', '');
}
function rank($user_id, $rank_id, $posts)
{
if (!isset($this->ranks_cache[$user_id]))
{
$this->set_rank($user_id, $rank_id, $posts);
}
return $this->ranks_cache[$user_id][0];
}
function rank_icon($user_id, $rank_id, $posts)
{
if (!isset($this->ranks_cache[$user_id]))
{
$this->set_rank($user_id, $rank_id, $posts);
}
return $this->ranks_cache[$user_id][1];
}
function online()
{
global $db;
$res = $db->query('
SELECT COUNT(*)
FROM ' . ONLINE_TABLE . '
WHERE online_lastvisit > ' . (time() - 300)
);
$row = $db->result($res, 0);
$db->free_result($res);
return $row;
}
}
?>
Der Eintrag wurde am 23.05.10 17:06 Uhr von hans geändert.