• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 0.X PROBLEM WITH AAC STEP 5 CREATING ADMIN ACCOUNT

michaelsilvers7

New Member
Joined
Aug 8, 2011
Messages
38
Reaction score
1
Location
America: Tennessee
I'm trying to make a webpage using @Znote s geisor and everything is fine on step 1-4 on instalation at 127.0.0.1 (my root ip), but when i get to step 5 to create an admin account i get this error.

Fatal error
: Uncaught Error: Call to a member function fetch() on boolean in C:\xampp\htdocs\classes\account.php:33 Stack trace: #0 C:\xampp\htdocs\classes\account.php(21): Account->load(1, 'name') #1 C:\xampp\htdocs\install.php(517): Account->__construct(1, 'name') #2 {main} thrown in C:\xampp\htdocs\classes\account.php on line 33



This is my line in xampp/htdocs/classes/account.php on line 33

$this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch();

Please help I've tried installing other people's htdocs with the same issue. And I've even tried reinstalling xampp. PLEASE REPLY, REP++
 
Code:
<?PHP
define('INITIALIZED', true);
define('ONLY_PAGE', false);
if(!file_exists('install.txt'))
{
    echo('AAC installation is disabled. To enable it make file <b>install.php</b> in main AAC directory and put there your IP.');
    exit;
}
$installIP = trim(file_get_contents('install.txt'));
if($installIP != $_SERVER['REMOTE_ADDR'])
{
    echo('In file <b>install.txt</b> must be your IP!<br />In file is:<br /><b>' . $installIP . '</b><br />Your IP is:<br /><b>' . $_SERVER['REMOTE_ADDR'] . '</b>');
    exit;
}

$time_start = microtime(true);
session_start();

function autoLoadClass($className)
{
    if(!class_exists($className))
        if(file_exists('./classes/' . strtolower($className) . '.php'))
            include_once('./classes/' . strtolower($className) . '.php');
        else
            new Error_Critic('#E-7', 'Cannot load class <b>' . $className . '</b>, file <b>./classes/class.' . strtolower($className) . '.php</b> doesn\'t exist');
}
spl_autoload_register('autoLoadClass');

//load acc. maker config to $config['site']
$config = array();
include('./config/config.php');
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
{
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while(list($key, $val) = each($process))
    {
        foreach ($val as $k => $v)
        {
            unset($process[$key][$k]);
            if(is_array($v))
            {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            }
            else
                $process[$key][stripslashes($k)] = stripslashes($v);
        }
    }
    unset($process);
}



$page = '';
if(isset($_REQUEST['page']))
    $page = $_REQUEST['page'];
$step = 'start';
if(isset($_REQUEST['step']))
    $step = $_REQUEST['step'];
// load server path
function getServerPath()
{
    $config = array();
    include('./config/config.php');
    return $config['site']['serverPath'];
}
// save server path
function setServerPath($newPath)
{
    $file = fopen("./config/config.php", "r");
    $lines = array();
    while (!feof($file)) {
        $lines[] = fgets($file);
    }
    fclose($file);

    $newConfig = array();
    foreach ($lines as $i => $line)
    {
        if(substr($line, 0, strlen('$config[\'site\'][\'serverPath\']')) == '$config[\'site\'][\'serverPath\']')
            $newConfig[] = '$config[\'site\'][\'serverPath\'] = "' . str_replace('"', '\"' , $newPath) . '";' . PHP_EOL; // do something with each line from text file here
        else
            $newConfig[] = $line;
    }
    Website::putFileContents("./config/config.php", implode('', $newConfig));
}
if($page == '')
{
    echo '<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
        <title>Installation of account maker</title>
    </head>
    <frameset cols="230,*">
        <frame name="menu" src="install.php?page=menu" />
        <frame name="step" src="install.php?page=step&step=start" />
        <noframes><body>Frames don\'t work. Install Firefox :P</body></noframes>
    </frameset>
    </html>';
}
elseif($page == 'menu')
{
    echo '<h2>MENU</h2><br>
    <b>IF NOT INSTALLED:</b><br>
    <a href="install.php?page=step&step=start" target="step">0. Informations</a><br>
    <a href="install.php?page=step&step=1" target="step">1. Set server path</a><br>
    <a href="install.php?page=step&step=2" target="step">2. Check DataBase connection</a><br>
    <a href="install.php?page=step&step=3" target="step">3. Add tables and columns to DB</a><br>
    <a href="install.php?page=step&step=4" target="step">4. Add samples to DB</a><br>
    <a href="install.php?page=step&step=5" target="step">5. Set Admin Account</a><br>
    <b>Author:</b><br>
    Gesior<br>
    Compatible with TFS 0.4 rev. 3703+</a>';
}
elseif($page == 'step')
{
    if($step >= 2 && $step <= 5)
    {
        //load server config $config['server']
        if(Website::getWebsiteConfig()->getValue('useServerConfigCache'))
        {
            // use cache to make website load faster
            if(Website::fileExists('./config/server.config.php'))
            {
                $tmp_php_config = new ConfigPHP('./config/server.config.php');
                $config['server'] = $tmp_php_config->getConfig();
            }
            else
            {
                // if file isn't cache we should load .lua file and make .php cache
                $tmp_lua_config = new ConfigLUA(Website::getWebsiteConfig()->getValue('serverPath') . 'config.lua');
                $config['server'] = $tmp_lua_config->getConfig();
                $tmp_php_config = new ConfigPHP();
                $tmp_php_config->setConfig($tmp_lua_config->getConfig());
                $tmp_php_config->saveToFile('./config/server.config.php');
            }
        }
        else
        {
            $tmp_lua_config = new ConfigLUA(Website::getWebsiteConfig()->getValue('serverPath') . 'config.lua');
            $config['server'] = $tmp_lua_config->getConfig();
        }
        if(Website::getServerConfig()->isSetKey('mysqlHost'))
        {
            define('SERVERCONFIG_SQL_TYPE', 'sqlType');
            define('SERVERCONFIG_SQL_HOST', 'mysqlHost');
            define('SERVERCONFIG_SQL_PORT', 'mysqlPort');
            define('SERVERCONFIG_SQL_USER', 'mysqlUser');
            define('SERVERCONFIG_SQL_PASS', 'mysqlPass');
            define('SERVERCONFIG_SQL_DATABASE', 'mysqlDatabase');
            define('SERVERCONFIG_SQLITE_FILE', 'sqlFile');
        }
        elseif(Website::getServerConfig()->isSetKey('sqlHost'))
        {
            define('SERVERCONFIG_SQL_TYPE', 'sqlType');
            define('SERVERCONFIG_SQL_HOST', 'sqlHost');
            define('SERVERCONFIG_SQL_PORT', 'sqlPort');
            define('SERVERCONFIG_SQL_USER', 'sqlUser');
            define('SERVERCONFIG_SQL_PASS', 'sqlPass');
            define('SERVERCONFIG_SQL_DATABASE', 'sqlDatabase');
            define('SERVERCONFIG_SQLITE_FILE', 'sqlFile');
        }
        else
            new Error_Critic('#E-3', 'There is no key <b>sqlHost</b> or <b>mysqlHost</b> in server config', array(new Error('INFO', 'use server config cache: <b>' . (Website::getWebsiteConfig()->getValue('useServerConfigCache') ? 'true' : 'false') . '</b>')));
        if(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_TYPE) == 'mysql')
        {
            Website::setDatabaseDriver(Database::DB_MYSQL);
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_HOST))
                Website::getDBHandle()->setDatabaseHost(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_HOST));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_HOST . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_PORT))
                Website::getDBHandle()->setDatabasePort(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_PORT));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_PORT . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_DATABASE))
                Website::getDBHandle()->setDatabaseName(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_DATABASE));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_DATABASE . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_USER))
                Website::getDBHandle()->setDatabaseUsername(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_USER));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_USER . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_PASS))
                Website::getDBHandle()->setDatabasePassword(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_PASS));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_PASS . '</b> in server config file.');
        }
        elseif(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_TYPE) == 'sqlite')
        {
            Website::setDatabaseDriver(Database::DB_SQLITE);
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQLITE_FILE))
                Website::getDBHandle()->setDatabaseFile(Website::getServerConfig()->getValue(SERVERCONFIG_SQLITE_FILE));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQLITE_FILE . '</b> in server config file.');
        }
        elseif(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_TYPE) == 'pgsql')
        {
            // does pgsql use 'port' parameter? I don't know
            Website::setDatabaseDriver(Database::DB_PGSQL);
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_HOST))
                Website::getDBHandle()->setDatabaseHost(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_HOST));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_HOST . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_DATABASE))
                Website::getDBHandle()->setDatabaseName(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_DATABASE));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_DATABASE . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_USER))
                Website::getDBHandle()->setDatabaseUsername(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_USER));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_USER . '</b> in server config file.');
            if(Website::getServerConfig()->isSetKey(SERVERCONFIG_SQL_PASS))
                Website::getDBHandle()->setDatabasePassword(Website::getServerConfig()->getValue(SERVERCONFIG_SQL_PASS));
            else
                new Error_Critic('#E-7', 'There is no key <b>' . SERVERCONFIG_SQL_PASS . '</b> in server config file.');
        }
        else
            new Error_Critic('#E-6', 'Database error. Unknown database type in <b>server config</b> . Must be equal to: "<b>mysql</b>", "<b>sqlite</b>" or "<b>pgsql</b>" . Now is: "<b>' . Website::getServerConfig()->getValue(SERVERCONFIG_SQL_TYPE) . '</b>"');
        Website::setPasswordsEncryption(Website::getServerConfig()->getValue('encryptionType'));
        $SQL = Website::getDBHandle();
    }

    if($step == 'start')
    {
        echo '<h1>STEP '.$step.'</h1>Informations<br>';
        echo 'Welcome to Gesior Account Maker installer. <b>After 5 simple steps account maker will be ready to use!</b><br />';
        // check access to write files
        $writeable = array('config/config.php', 'cache', 'cache/flags', 'cache/DONT_EDIT_usercounter.txt', 'cache/DONT_EDIT_serverstatus.txt', 'custom_scripts', 'install.txt');
        foreach($writeable as $fileToWrite)
        {
            if(is_writable($fileToWrite))
                echo '<span style="color:green">CAN WRITE TO FILE: <b>' . $fileToWrite . '</b></span><br />';
            else
                echo '<span style="color:red">CANNOT WRITE TO FILE: <b>' . $fileToWrite . '</b> - edit file access for PHP [on linux: chmod]</span><br />';
        }
    }
    elseif($step == 1)
    {
        if(isset($_REQUEST['server_path']))
        {
            echo '<h1>STEP '.$step.'</h1>Check server configuration<br>';
            $path = $_REQUEST['server_path'];
            $path = trim($path)."\\";
            $path = str_replace("\\\\", "/", $path);
            $path = str_replace("\\", "/", $path);
            $path = str_replace("//", "/", $path);
            setServerPath($path);
            $tmp_lua_config = new ConfigLUA($path . 'config.lua');
            $config['server'] = $tmp_lua_config->getConfig();
            if(isset($config['server']['sqlType']))
            {
                echo 'File <b>config.lua</b> loaded from <font color="red"><i>'.$path.'config.lua</i></font>. It looks like fine server config file. Now you can check database('.$config['server']['sqlType'].') connection: <a href="install.php?page=step&step=2">STEP 2 - check database connection</a>';
            }
            else
            {
                echo 'File <b>config.lua</b> loaded from <font color="red"><i>'.$path.'config.lua</i></font> and it\'s not valid TFS config.lua file. <a href="install.php?page=step&step=1">Go to STEP 1 - select other directory.</a> If it\'s your config.lua file from TFS contact with acc. maker author.';
            }
        }
        else
        {
            echo 'Please write you TFS directory below. Like: <i>C:\Documents and Settings\Gesior\Desktop\TFS 0.2.9\</i><form action="install.php">
            <input type="text" name="server_path" size="90" value="'.htmlspecialchars(getServerPath()).'" /><input type="hidden" name="page" value="step" /><input type="hidden" name="step" value="1" /><input type="submit" value="Set server path" />
            </form>';
        }
    }
    elseif($step == 2)
    {
        echo '<h1>STEP '.$step.'</h1>Check database connection<br>';
        echo 'If you don\'t see any errors press

Code:
 <a href="install.php?page=step&step=3">link to STEP 3 - Add tables and columns to DB</a>. If you see some errors it mean server has wrong configuration. Check FAQ or ask author of acc. maker.<br />';
        $SQL->connect(); // show errors if can't connect
    }
    elseif($step == 3)
    {
        echo '<h1>STEP '.$step.'</h1>Add tables and columns to DB<br>';
        echo 'Installer try to add new tables and columns to database.<br>';
        $columns = array();
        //$columns[] = array('table', 'name_of_column', 'type', 'length', 'default');
        $columns[] = array('accounts', 'key', 'VARCHAR', '20', '0');
        $columns[] = array('accounts', 'email_new', 'VARCHAR', '255', '');
        $columns[] = array('accounts', 'email_new_time', 'INT', '11', '0');
        $columns[] = array('accounts', 'rlname', 'VARCHAR', '255', '');
        $columns[] = array('accounts', 'location', 'VARCHAR', '255', '');
        $columns[] = array('accounts', 'page_access', 'INT', '11', '0');
        $columns[] = array('accounts', 'email_code', 'VARCHAR', '255', '');
        $columns[] = array('accounts', 'next_email', 'INT', '11', '0');
        $columns[] = array('accounts', 'premium_points', 'INT', '11', '0');
        $columns[] = array('accounts', 'create_date', 'INT', '11', '0');
        $columns[] = array('accounts', 'create_ip', 'INT', '11', '0');
        $columns[] = array('accounts', 'last_post', 'INT', '11', '0');
        $columns[] = array('accounts', 'flag', 'VARCHAR', '80', '');

        $columns[] = array('guilds', 'description', 'TEXT', '', '');
        $columns[] = array('guilds', 'guild_logo', 'MEDIUMBLOB', '', NULL);
        $columns[] = array('guilds', 'create_ip', 'INT', '11', '0');
        $columns[] = array('guilds', 'balance', 'BIGINT UNSIGNED', '', '0');
        $columns[] = array('killers', 'war', 'INT', '11', '0');

        $columns[] = array('players', 'deleted', 'TINYINT', '1', '0');
        $columns[] = array('players', 'description', 'VARCHAR', '255', '');
        $columns[] = array('players', 'comment', 'TEXT', '', '');
        $columns[] = array('players', 'create_ip', 'INT', '11', '0');
        $columns[] = array('players', 'create_date', 'INT', '11', '0');
        $columns[] = array('players', 'hide_char', 'INT', '11', '0');

        $tables = array();
        // mysql tables
        $tables[Database::DB_MYSQL]['z_ots_comunication'] = "CREATE TABLE `z_ots_comunication` (
                              `id` int(11) NOT NULL auto_increment,
                              `name` varchar(255) NOT NULL,
                              `type` varchar(255) NOT NULL,
                              `action` varchar(255) NOT NULL,
                              `param1` varchar(255) NOT NULL,
                              `param2` varchar(255) NOT NULL,
                              `param3` varchar(255) NOT NULL,
                              `param4` varchar(255) NOT NULL,
                              `param5` varchar(255) NOT NULL,
                              `param6` varchar(255) NOT NULL,
                              `param7` varchar(255) NOT NULL,
                              `delete_it` int(2) NOT NULL default '1',
                               PRIMARY KEY  (`id`)
                            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
        $tables[Database::DB_MYSQL]['z_shop_offer'] = "CREATE TABLE `z_shop_offer` (
                              `id` int(11) NOT NULL auto_increment,
                              `points` int(11) NOT NULL default '0',
                              `itemid1` int(11) NOT NULL default '0',
                              `count1` int(11) NOT NULL default '0',
                              `itemid2` int(11) NOT NULL default '0',
                              `count2` int(11) NOT NULL default '0',
                              `offer_type` varchar(255) default NULL,
                              `offer_description` text NOT NULL,
                              `offer_name` varchar(255) NOT NULL,
                              PRIMARY KEY  (`id`)
                            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
        $tables[Database::DB_MYSQL]['z_shop_history_item'] = "CREATE TABLE `z_shop_history_item` (
                              `id` int(11) NOT NULL auto_increment,
                              `to_name` varchar(255) NOT NULL default '0',
                              `to_account` int(11) NOT NULL default '0',
                              `from_nick` varchar(255) NOT NULL,
                              `from_account` int(11) NOT NULL default '0',
                              `price` int(11) NOT NULL default '0',
                              `offer_id` varchar(255) NOT NULL default '',
                              `trans_state` varchar(255) NOT NULL,
                              `trans_start` int(11) NOT NULL default '0',
                              `trans_real` int(11) NOT NULL default '0',
                              PRIMARY KEY  (`id`)
                            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
        $tables[Database::DB_MYSQL]['z_forum'] = "CREATE TABLE `z_forum` (
                              `id` int(11) NOT NULL auto_increment,
                              `first_post` int(11) NOT NULL default '0',
                              `last_post` int(11) NOT NULL default '0',
                              `section` int(3) NOT NULL default '0',
                              `replies` int(20) NOT NULL default '0',
                              `views` int(20) NOT NULL default '0',
                              `author_aid` int(20) NOT NULL default '0',
                              `author_guid` int(20) NOT NULL default '0',
                              `post_text` text NOT NULL,
                              `post_topic` varchar(255) NOT NULL,
                              `post_smile` tinyint(1) NOT NULL default '0',
                              `post_date` int(20) NOT NULL default '0',
                              `last_edit_aid` int(20) NOT NULL default '0',
                              `edit_date` int(20) NOT NULL default '0',
                              `post_ip` varchar(15) NOT NULL default '0.0.0.0',
                              PRIMARY KEY  (`id`),
                              KEY `section` (`section`)
                            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
        $tables[Database::DB_MYSQL]['guild_wars'] = "CREATE TABLE `guild_wars` (
                              `id` INT NOT NULL AUTO_INCREMENT,
                              `guild_id` INT NOT NULL,
                              `enemy_id` INT NOT NULL,
                              `begin` BIGINT NOT NULL DEFAULT '0',
                              `end` BIGINT NOT NULL DEFAULT '0',
                              `frags` INT UNSIGNED NOT NULL DEFAULT '0',
                              `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0',
                              `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0',
                              `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0',
                              `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
                              PRIMARY KEY (`id`),
                              KEY `status` (`status`),
                              KEY `guild_id` (`guild_id`),
                              KEY `enemy_id` (`enemy_id`)
                            ) ENGINE=InnoDB;";
        $tables[Database::DB_MYSQL]['guild_wars_table_references'] = "ALTER TABLE `guild_wars`
                                  ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE,
                                  ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;";
        $tables[Database::DB_MYSQL]['guild_kills'] = "CREATE TABLE `guild_kills` (
                              `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
                              `guild_id` INT NOT NULL,
                              `war_id` INT NOT NULL,
                              `death_id` INT NOT NULL
                            ) ENGINE = InnoDB;";
        $tables[Database::DB_MYSQL]['guild_kills_table_references'] = "ALTER TABLE `guild_kills`
                              ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE,
                              ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE,
                              ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;";
        // sqlite tables
        $tables[Database::DB_SQLITE]['z_ots_comunication'] = 'CREATE TABLE "z_ots_comunication" (
                              "id" INTEGER PRIMARY KEY AUTOINCREMENT,
                              "name" varchar(255) NOT NULL,
                              "type" varchar(255) NOT NULL,
                              "action" varchar(255) NOT NULL,
                              "param1" varchar(255) NOT NULL,
                              "param2" varchar(255) NOT NULL,
                              "param3" varchar(255) NOT NULL,
                              "param4" varchar(255) NOT NULL,
                              "param5" varchar(255) NOT NULL,
                              "param6" varchar(255) NOT NULL,
                              "param7" varchar(255) NOT NULL,
                              "delete_it" int(2) NOT NULL default 1);';
        $tables[Database::DB_SQLITE]['z_shop_offer'] = 'CREATE TABLE "z_shop_offer" (
                              "id" INTEGER PRIMARY KEY AUTOINCREMENT,
                              "points" int(11) NOT NULL default 0,
                              "itemid1" int(11) NOT NULL default 0,
                              "count1" int(11) NOT NULL default 0,
                              "itemid2" int(11) NOT NULL default 0,
                              "count2" int(11) NOT NULL default 0,
                              "offer_type" varchar(255) default NULL,
                              "offer_description" text NOT NULL,
                              "offer_name" varchar(255) NOT NULL);';
        $tables[Database::DB_SQLITE]['z_shop_history_item'] = 'CREATE TABLE "z_shop_history_item" (
                              "id" INTEGER PRIMARY KEY AUTOINCREMENT,
                              "to_name" varchar(255) NOT NULL default 0,
                              "to_account" int(11) NOT NULL default 0,
                              "from_nick" varchar(255) NOT NULL,
                              "from_account" int(11) NOT NULL default 0,
                              "price" int(11) NOT NULL default 0,
                              "offer_id" varchar(255) NOT NULL default "",
                              "trans_state" varchar(255) NOT NULL,
                              "trans_start" int(11) NOT NULL default 0,
                              "trans_real" int(11) NOT NULL default 0);';
        $tables[Database::DB_SQLITE]['z_forum'] = 'CREATE TABLE "z_forum" (
                                "id" INTEGER PRIMARY KEY AUTOINCREMENT,
                                "first_post" int(11) NOT NULL default 0,
                                "last_post" int(11) NOT NULL default 0,
                                "section" int(3) NOT NULL default 0,
                                "replies" int(20) NOT NULL default 0,
                                "views" int(20) NOT NULL default 0,
                                "author_aid" int(20) NOT NULL default 0,
                                "author_guid" int(20) NOT NULL default 0,
                                "post_text" text NOT NULL,
                                "post_topic" varchar(255) NOT NULL,
                                "post_smile" tinyint(1) NOT NULL default 0,
                                "post_date" int(20) NOT NULL default 0,
                                "last_edit_aid" int(20) NOT NULL default 0,
                                "edit_date" int(20) NOT NULL default 0,
                                "post_ip" varchar(15) NOT NULL default "0.0.0.0");';
        foreach($columns as $column)
        {
            if($column[4] === NULL && $SQL->query('ALTER TABLE ' . $SQL->tableName($column[0]) . ' ADD ' . $SQL->fieldName($column[1]) . ' ' . $column[2] . '  NULL DEFAULT NULL') !== false)
                echo "<span style=\"color:green\">Column <b>" . $column[1] . "</b> added to table <b>" . $column[0] . "</b>.</span><br />";
            elseif($SQL->query('ALTER TABLE ' . $SQL->tableName($column[0]) . ' ADD ' . $SQL->fieldName($column[1]) . ' ' . $column[2] . '' . (($column[3] == '') ? '' : '(' . $column[3] . ')') . ' NOT NULL DEFAULT \'' . $column[4] . '\'') !== false)
                echo "<span style=\"color:green\">Column <b>" . $column[1] . "</b> added to table <b>" . $column[0] . "</b>.</span><br />";
            else
                echo "Could not add column <b>" . $column[1] . "</b> to table <b>" . $column[0] . "</b>. Already exist?<br />";
        }
        foreach($tables[$SQL->getDatabaseDriver()] as $tableName => $tableQuery)
        {
            if($SQL->query($tableQuery) !== false)
                echo "<span style=\"color:green\">Table <b>" . $tableName . "</b> created.</span><br />";
            else
                echo "Could not create table <b>" . $tableName . "</b>. Already exist?<br />";
        }
        echo 'Tables and columns added to database.<br>Go to <a href="install.php?page=step&step=4">STEP 4 - Add samples</a>';
    }
    elseif($step == 4)
    {
        echo '<h1>STEP '.$step.'</h1>Add samples to DB:<br>';

        $samplePlayers = array();
        $samplePlayers[0] = 'Rook Sample';
        $samplePlayers[1] = 'Sorcerer Sample';
        $samplePlayers[2] = 'Druid Sample';
        $samplePlayers[3] = 'Paladin Sample';
        $samplePlayers[4] = 'Knight Sample';
        $newPlayer = new Player('Account Manager', Player::LOADTYPE_NAME);
        if($newPlayer->isLoaded())
        {
            foreach($samplePlayers as $vocationID => $name)
            {
                $samplePlayer = new Player($name, Player::LOADTYPE_NAME);
                if(!$samplePlayer->isLoaded())
                {
                    $samplePlayer = new Player('Account Manager', Player::LOADTYPE_NAME);
                    $samplePlayer->setID(null); // save as new player, not edited
                    $samplePlayer->setName($name);
                    $samplePlayer->setVocation($vocationID);
                    $samplePlayer->setGroupID(1);
                    $samplePlayer->setLookType(128);
                    $samplePlayer->save();
                    echo '<span style="color:green">Added sample character: </span><span style="color:green;font-weight:bold">' . $name . '</span><br/>';
                }
                else
                    echo 'Sample character: <span style="font-weight:bold">' . $name . '</span> already exist in database<br/>';
            }
        }
        else
            new Error_Critic('', 'Character <i>Account Manager</i> does not exist. Cannot install sample characters!');
    }
    elseif($step == 5)
    {
        echo '<h1>STEP '.$step.'</h1>Set Admin Account<br>';
        if(empty($_REQUEST['saveaccpassword']))
        {
            echo 'Admin account login is: <b>1</b><br/>Set new password to this account.<br>';
            echo 'New password: <form action="install.php" method=POST><input type="text" name="newpass" size="35">(Don\'t give it password to anyone!)';
            echo '<input type="hidden" name="saveaccpassword" value="yes"><input type="hidden" name="page" value="step"><input type="hidden" name="step" value="5"><input type="submit" value="SET"></form><br>If account with login 1 doesn\'t exist installator will create it and set your password.';
        }
        else
        {
            include_once('./system/load.compat.php');
            $newpass = trim($_POST['newpass']);
            if(!check_password($newpass))
                echo 'Password contains illegal characters. Please use only a-Z and 0-9. <a href="install.php?page=step&step=5">GO BACK</a> and write other password.';
            else
            {
                //create / set pass to admin account
                $account = new Account(1, Account::LOADTYPE_NAME);
                if($account->isLoaded())
                {
                    $account->setPassword($newpass); // setPassword encrypt it to ots encryption
                    $account->setPageAccess(3);
                    $account->setFlag('unknown');
                    $account->save();
                }
                else
                {
                    $newAccount = new Account();
                    $newAccount->setName(1);
                    $newAccount->setPassword($newpass); // setPassword encrypt it to ots encryption
                    $newAccount->setMail(rand(0,999999) . '@gmail.com');
                    $newAccount->setPageAccess(3);
                    $newAccount->setGroupID(1);
                    $newAccount->setFlag('unknown');
                    $newAccount->setCreateIP(Visitor::getIP());
                    $newAccount->setCreateDate(time());
                }
                $_SESSION['account'] = 1;
                $_SESSION['password'] = $newpass;
                $logged = TRUE;
                echo '<h1>Admin account login: 1<br>Admin account password: '.$newpass.'</h1><br/><h3>It\'s end of installation. Installation is blocked!</h3>';
                if(!unlink('install.txt'))
                    new Error_Critic('', 'Cannot remove file <i>install.txt</i>. You must remove it to disable installer. I recommend you to go to step <i>0</i> and check if any other file got problems with WRITE permission.');
            }
        }
    }

View attachment 32051

Like this: Click on "Code" and paste your code.
i had to put it in 2 parts because it exceeded the max character limit
 
Last edited by a moderator:
Open classes/account.php

Change this function:
Code:
public function load($search_text, $search_by = self::LOADTYPE_ID)
{
if(in_array($search_by, self::$fields))
$search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text);
else
new Error_Critic('', 'Wrong Account search_by type.');
$fieldsArray = array();
foreach(self::$fields as $fieldName)
$fieldsArray[$fieldName] = $this->getDatabaseHandler()->fieldName($fieldName);
$this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch();
}

With:
Code:
    public function load($search_text, $search_by = self::LOADTYPE_ID)
    {
        if(in_array($search_by, self::$fields))
            $search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text);
        else
            new Error_Critic('', 'Wrong Account search_by type.');
        $fieldsArray = array();
        foreach(self::$fields as $fieldName)
            $fieldsArray[$fieldName] = $this->getDatabaseHandler()->fieldName($fieldName);
       
        $tmp = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string);
       
        if($tmp->rowCount() > 0) {
            $this->data = $tmp->fetch();
        }
    }
 
Open classes/account.php

Change this function:
Code:
public function load($search_text, $search_by = self::LOADTYPE_ID)
{
if(in_array($search_by, self::$fields))
$search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text);
else
new Error_Critic('', 'Wrong Account search_by type.');
$fieldsArray = array();
foreach(self::$fields as $fieldName)
$fieldsArray[$fieldName] = $this->getDatabaseHandler()->fieldName($fieldName);
$this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch();
}

With:
Code:
    public function load($search_text, $search_by = self::LOADTYPE_ID)
    {
        if(in_array($search_by, self::$fields))
            $search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text);
        else
            new Error_Critic('', 'Wrong Account search_by type.');
        $fieldsArray = array();
        foreach(self::$fields as $fieldName)
            $fieldsArray[$fieldName] = $this->getDatabaseHandler()->fieldName($fieldName);
      
        $tmp = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string);
      
        if($tmp->rowCount() > 0) {
            $this->data = $tmp->fetch();
        }
    }
now i get this error :/

Fatal error: Uncaught Error: Call to a member function rowCount() on boolean in C:\xampp\htdocs\classes\account.php:36 Stack trace: #0 C:\xampp\htdocs\classes\account.php(21): Account->load(1, 'name') #1 C:\xampp\htdocs\install.php(517): Account->__construct(1, 'name') #2 {main} thrown in C:\xampp\htdocs\classes\account.php on line 36
 
Edit classes/database_mysql.php

Change:
Code:
parent::__construct('mysql:host=' . $this->getDatabaseHost() . ';port=' . $this->getDatabasePort() . ';dbname=' . $this->getDatabaseName(), $this->getDatabaseUsername(), $this->getDatabasePassword());

To:
Code:
parent::__construct('mysql:host=' . $this->getDatabaseHost() . ';port=' . $this->getDatabasePort() . ';dbname=' . $this->getDatabaseName(), $this->getDatabaseUsername(), $this->getDatabasePassword(), [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

Now try the install again. There should be error info.
 
Edit classes/database_mysql.php

Change:
Code:
parent::__construct('mysql:host=' . $this->getDatabaseHost() . ';port=' . $this->getDatabasePort() . ';dbname=' . $this->getDatabaseName(), $this->getDatabaseUsername(), $this->getDatabasePassword());

To:
Code:
parent::__construct('mysql:host=' . $this->getDatabaseHost() . ';port=' . $this->getDatabasePort() . ';dbname=' . $this->getDatabaseName(), $this->getDatabaseUsername(), $this->getDatabasePassword(), [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

Now try the install again. There should be error info.


Got this on step 3 (add tables and coloums to database) - even though it may just be saying i already have them added because i already did this step before without an error, but here it is - Fatal error: Uncaught PDOException: SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'key' in C:\xampp\htdocs\classes\database.php:201 Stack trace: #0 C:\xampp\htdocs\classes\database.php(201): PDO->query('ALTER TABLE `ac...') #1 C:\xampp\htdocs\install.php(451): Database->query('ALTER TABLE `ac...') #2 {main} thrown in C:\xampp\htdocs\classes\database.php on line 201

And then i get this error on step 5 creating admin account (the one i've been stuck on) -- Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'salt' in 'field list' in C:\xampp\htdocs\classes\database.php:201 Stack trace: #0 C:\xampp\htdocs\classes\database.php(201): PDO->query('SELECT `id`, `n...') #1 C:\xampp\htdocs\classes\account.php(34): Database->query('SELECT `id`, `n...') #2 C:\xampp\htdocs\classes\account.php(21): Account->load(1, 'name') #3 C:\xampp\htdocs\install.php(517): Account->__construct(1, 'name') #4 {main} thrown in C:\xampp\htdocs\classes\database.php on line 201
 
Yeah, that means there is no "salt" column in your accounts table.

Are you using correct Gesior version for your server? Where did you download it?

The version you're using seems to be for TFS 0.3, but you are using other server I suppose?
 
Yeah, that means there is no "salt" column in your accounts table.

Are you using correct Gesior version for your server? Where did you download it?

The version you're using seems to be for TFS 0.3, but you are using other server I suppose?
well im using .4 but the download had branch options and i selected my tfs version. This is the readme that came with it
Gesior2012
==========
Gesior 2012 - Account Maker [website] for OTSes
Select 'branch' for your OTS (TFS) version.

and this is the readme.text --
##### CREDITS #####
Version 1.0.3 for TFS 0.4 revision 3703+
Acc. script:
*Gesior - e-mail: [email protected]
Layouts:
*CipSoft Gmbh - www.tibia.com
Monsters images:
*Unknown author



However im down to install a working one you know of? I am just stumped.
 
no i cant remember but when i run my server it says "the forgotten server .4" at the very top. most things are workign well so i'd like to not switch any of my current stuff, surley there is a way to get a website up? also how do i rep you? im new to the site
 
If you have sources, then in definitions.h, there should be something like this:
Code:
#define SOFTWARE_NAME "The Forgotten Server"
#define SOFTWARE_VERSION "0.4_SVN"
#define SOFTWARE_CODENAME ""
#define SOFTWARE_PROTOCOL "8.6"

#define VERSION_CHECK "http://forgottenserver.otland.net/version.xml"
#define VERSION_PATCH 0
#define VERSION_TIMESTAMP 1306261769
#define VERSION_BUILD 0
#define VERSION_DATABASE 27

Do you have it in your sources? If so, post it.
 
If you have sources, then in definitions.h, there should be something like this:
Code:
#define SOFTWARE_NAME "The Forgotten Server"
#define SOFTWARE_VERSION "0.4_SVN"
#define SOFTWARE_CODENAME ""
#define SOFTWARE_PROTOCOL "8.6"

#define VERSION_CHECK "http://forgottenserver.otland.net/version.xml"
#define VERSION_PATCH 0
#define VERSION_TIMESTAMP 1306261769
#define VERSION_BUILD 0
#define VERSION_DATABASE 27

Do you have it in your sources? If so, post it.


////////////////////////////////////////////////////////////////////////
// OpenTibia - an opensource roleplaying game
////////////////////////////////////////////////////////////////////////
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <Licenses - GNU Project - Free Software Foundation>.
////////////////////////////////////////////////////////////////////////
#ifndef __DEFINITIONS__
#define __DEFINITIONS__
#define CLIENT_VERSION_MIN 860
#define CLIENT_VERSION_MAX 860
#define CLIENT_VERSION_STRING "Only clients with protocol 8.6 allowed!"
#define SOFTWARE_NAME "The Forgotten Server"
#define SOFTWARE_VERSION "0.4"
#define SOFTWARE_PROTOCOL "8.6"
#define VERSION_DATABASE 25
#undef MULTI_SQL_DRIVERS
#define SQL_DRIVERS __USE_SQLITE__+__USE_MYSQL__
#if SQL_DRIVERS > 1
#define MULTI_SQL_DRIVERS
#endif
#ifndef __FUNCTION__
#define __FUNCTION__ __func__
#endif
#define BOOST_ASIO_ENABLE_CANCELIO 1
#define BOOST_FILESYSTEM_VERSION 3
#ifdef _MSC_VER
#define __PRETTY_FUNCTION__ __FUNCDNAME__
#ifndef NOMINMAX
#define NOMINMAX
#endif
#ifdef NDEBUG
#define _SECURE_SCL 0
#define HAS_ITERATOR_DEBUGGING 0
#endif
#include <cstring>
inline int strcasecmp(const char * s1, const char * s2)
{
return ::_stricmp(s1, s2);
}
inline int strncasecmp(const char * s1, const char * s2, size_t n)
{
return ::_strnicmp(s1, s2, n);
}
#define atoll _atoi64
#if VISUALC_VERSION < 10
typedef unsigned long long uint64_t;
typedef signed long long int64_t;
typedef unsigned int uint32_t;
typedef signed int int32_t;
typedef unsigned short uint16_t;
typedef signed short int16_t;
typedef unsigned char uint8_t;
typedef signed char int8_t;
#endif
#pragma warning(disable:4018)
#pragma warning(disable:4099)
#pragma warning(disable:4224)
#pragma warning(disable:4244)
#pragma warning(disable:4250) // 'class1' : inherits 'class2::member' via dominance
#pragma warning(disable:4267)
#pragma warning(disable:4273)
#pragma warning(disable:4305)
#pragma warning(disable:4309)
#pragma warning(disable:4786) // msvc too long debug names in stl
#pragma warning(disable:4800)
#pragma warning(disable:4996) // '_ftime64' : this function or variable may be unsafe
#ifndef _WIN32
#define _WIN32
#endif
#ifndef WIN32
#define WIN32
#endif
#ifndef __WINDOWS__
#define __WINDOWS__
#endif
#ifndef WINDOWS
#define WINDOWS
#endif
#else
#if defined _WIN32 || defined WIN32 || defined __WINDOWS__ || defined WINDOWS
#ifndef _WIN32
#define _WIN32
#endif
#ifndef WIN32
#define WIN32
#endif
#ifndef __WINDOWS__
#define __WINDOWS__
#endif
#ifndef WINDOWS
#define WINDOWS
#endif
#endif
#ifdef __CYGWIN__
#undef WIN32
#undef _WIN32
#undef WINDOWS
#undef __WINDOWS__
#define HAVE_ERRNO_AS_DEFINE
#endif
#endif
#ifdef __WINDOWS__
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#endif
//Windows 2000 0x0500
//Windows XP 0x0501
//Windows 2003 0x0502
//Windows Vista 0x0600
//Windows Seven 0x0601
#define _WIN32_WINNT 0x0502
#elif defined __GNUC__
#define __USE_ZLIB__
#endif
#ifdef __MINGW32__
#define XML_GCC_FREE
#endif
#ifdef XML_GCC_FREE
#define xmlFree(s) free(s)
#endif
#ifndef __EXCEPTION_TRACER__
#define DEBUG_REPORT
#endif
#endif
 
Yes it did now I am having an issue creating characters, -The Following Errors Have Occurred:
  • Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copy Knight Sample doesn't exist.
but you have helped enough i dont want to take more of your time i will try to figure out myself :D
 
Back
Top