Jump to content
Close
Sign in to follow this  
Felipe Souzah

Erro Ao Criar Conta No Site

Recommended Posts

Criei um site com o Xampp, até ai tudo bem, mais tentei criar uma conta no site e deu esse erro

A PHP Error was encountered

Severity: Notice

Message: Undefined index: invalidNameTags

Filename: controllers/account.php

Line Number: 148

A PHP Error was encountered

Severity: Warning

Message: in_array() expects parameter 2 to be array, null given

Filename: controllers/account.php

Line Number: 148

Não sei como resouver, se poderem me ajudar agradeço !!!

 

Eu uso a base do DxP OpenSource, postada recentemente.


Edited by Felipe Souzah
esqueci tags (see edit history)

Share this post


Link to post
Share on other sites

Esta é uma mensagem automática! Este tópico foi movido para a área correta.
Pedimos que você leia as regras do fórum.

Spoiler

This is an automated message! This topic has been moved to the correct area.
Please read the forum rules.

 



Marque a melhor resposta, deixando assim o tópico resolvido e ajudando outros membros a identificar a solução do problema.
Não dou suporte via PM, não insista. ✉

  wakon.here@gmail.com ★

 

Regras | Seções OTServ | Seções BOT

Share this post


Link to post
Share on other sites

Você removeu do config.php duas variável que estão recebendo valores  para o armazenamento no banco de dados !


Share this post


Link to post
Share on other sites

system/application/controllers/account.php

Spoiler

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php
/* 
+I.D.E ENGINE+
Controller of Account for Modern AAC - Powered by IDE Engine.
A lot of new functionality and variables can be hard-coded here.
If you do NOT understand the code, do NOT change anything in here.
*/
    
    class Account extends Controller {
    
        /* Main index of Account controllers, also work as a __construct(); It is called by engine as a default. */
        function index($action = 0) {
            if($action == 1) success("Seu novo personagem foi criado!");
            if($action == 2) success("Seu apelido foi criado!");
            if($action == 3) success("Voc&ecirc; excedeu o Limite de Characters por Conta.");
            if($action == 4) success("Seu perfil foi atualizado.");
            if($action == 5) success("Seu avatar foi atualizado!");
            $this->load->model("Account_model");
            if(empty($_SESSION['account_id'])) $_SESSION['account_id'] = $this->Account_model->getAccountID();
            $ide = new IDE;
            $ide->requireLogin();
            if(empty($_SESSION['nickname'])) $ide->redirect(WEBSITE."/index.php/account/setNickname");
            $data = array();
            $data['loggedUser'] = $_SESSION['name'];
            $data['characters'] = $this->Account_model->getCharacters();
            $data['messages'] = $this->Account_model->checkMessages();
            $ots = POT::getInstance();
            $ots->connect(POT::DB_MYSQL, connection());
            $account = $ots->createObject('Account');
            try { $account->find($_SESSION['name']); } catch(Exception $e) {show_error('Houve um problema durante o carregamento da conta. Err code: 220212072010 mais detalhes: '.$e->getMessage());}
            $data['account'] = $account;
            $data['acc'] = $this->Account_model->load($_SESSION['account_id']);
            $recovery_key = $this->Account_model->getRecoveryKey($_SESSION['name']);
            if($recovery_key === "") alert("Voc&ecirc; n&atilde;o possui uma Recovery Key, clique <a href='".WEBSITE."/index.php/account/generate_recovery_key'><b>aqui</b></a> para gerar uma. Recomendamos que guarde ela por raz&otilde;es de seguran&ccedil;a.");
            /* Load view of account page and send data to it. */
            $this->load->view('account', $data);
        }
        
        /*
        Function to check if account with this name already exists, it is used by create controller as a callaback in form validation. 
        It should be made as an abstract class of database in Model, but I don't think there is point of it.
        */
        function _account_exists($name) {
            $ots = POT::getInstance();
            $ots->connect(POT::DB_MYSQL, connection());
            $account = new OTS_Account();
            try { $account->find($name); } catch(Exception $e) {show_error('Houve um problema durante o carregamento da conta. Err code: 220212072010 mais detalhes: '.$e->getMessage());}
            if($account->isLoaded()) { $this->form_validation->set_message('_account_exists', 'Conta com este nome j&aacute; existe.');return false;} else return true;
        }
        
        function _checkCaptcha($word) {
            if(strtolower($word) == strtolower($_SESSION['captcha']) && !empty($_SESSION['captcha'])) {
                return true;
            }
            else {
                $this->form_validation->set_message('_checkCaptcha', 'Captcha Word est&aacute; incorreto.');
                return false;
            }
        }
        
        function _nicknameExists($name) {
            $this->load->model("account_model");
            if($this->account_model->nicknameExists($name)) {
                $this->form_validation->set_message('_nicknameExists', 'Este apelido j&aacute; existe.');
                return false;
            }
            else
                return true;
        }
        function _emailExists($email) {
            $this->load->model("account_model");
            if($this->account_model->emailExists($email)) {
                $this->form_validation->set_message('_emailExists', 'Este E-mail est&aacute; sendo usado por outra Conta.');
                return false;
            }
            else
                return true;
        }
        
        function _characterExists($name) {
            $this->load->model("character_model");
            if($this->character_model->characterExists($name)) {
                $this->form_validation->set_message('_characterExists', 'J&aacute; existe um char com este nome, por favor escolha outro.');
                return false;
            }
            else
                return true;
        }
        
    function _checkCity($id) {
        $this->config->load('create_character.php');
        if(!array_key_exists($id, $this->config->item('cities'))) {
            $this->form_validation->set_message('_checkCity', 'Unknown City');
            return false;
        }
        else
            return true;
    }
    
    function _checkVocation($id) {
        $this->config->load('create_character.php');
        if(!array_key_exists($id, $this->config->item('vocations'))) {
            $this->form_validation->set_message('_checkVocation', 'Unknown Vocation');
            return false;
        }
        else
            return true;
    }
    
    function _checkSex($id) {
        if($id != 0 and $id != 1) {
            $this->form_validation->set_message('_checkSex', 'Unknown Sex');
            return false;
        }
        else
            return true;
    }
    
    // Function which make the player more real by tatu hunter
    // Eg: elder'Druid = Locaa
    //       elder'druid = Elder'druid
    //     druid theMaster = Druid themaster
    function strFirst($name) {
        $name = explode(' ', trim($name));
        for($i=0, $t = sizeof($name); $i<$t; ++$i)
            for($j=0, $l=strlen($name[$i]); $j<$l; ++$j)
                !$j ? 
                ($name[$i][$j] = !$i ? ($name[$i][$j] == strtoupper($name[$i][$j]) ? $name[$i][$j] : strtoupper($name[$i][$j])): $name[$i][$j])  : 
                ($name[$i][$j] = ($name[$i][$j-1] == '\'' ? $name[$i][$j] : 
                strtolower($name[$i][$j])));
    
        $ret = '';
        foreach($name as $k)
            $ret .= $k . ' ';
    
        return trim($ret);
    }

        /* Controller of creating new account. New values can be hard-coded here. (only experienced users) */
        function create($ajax = 0) {
            require_once("system/application/config/create_character.php");
            $ide = new IDE;
            global $config;
            if($ajax == 1 && $ide->isLogged()) exit;
            if($ide->isLogged()) $ide->redirect(WEBSITE.'/index.php/account');
            $this->load->plugin('captcha');
            $this->load->helper('form');
            
            $vals = array(
                    'word'         => '',
                    'img_path'     => 'system/captcha/',
                    'img_url'     => WEBSITE.'/system/captcha/',
                    'font_path'     => WEBSITE.'/system/fonts/texb.ttf',
                    'img_width'     => '156',
                    'img_height' => 30,
                    'expiration' => 120
                );
            if(!$_POST && $ajax == 0) {
                $cap = create_captcha($vals);    
            }
            if($_POST) {
                $this->load->library('form_validation');
                $_POST['nickname'] = ucfirst(strtolower($_POST['nickname']));
                $this->form_validation->set_rules('name', 'Account Name', 'required|min_length[4]|max_length[32]|callback__account_exists|alpha_numeric|callback__checkDelay');
                $this->form_validation->set_rules('nickname', 'Nickname', 'required|min_length[4]|max_length[32]|callback__nicknameExists');
                $this->form_validation->set_rules('password', 'Password', 'required|matches[repeat]|min_length[4]|max_length[255]');
                $this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback__emailExists');
                $this->form_validation->set_rules('character_name', 'Character Name', 'required|min_length[4]|max_length[32]|nickname|callback__characterExists|callback__validName');
                $this->form_validation->set_rules('city', 'City', 'required|integer|callback__checkCity');
                $this->form_validation->set_rules('vocation', 'Vocation', 'required|integer|callback__checkVocation');
                $this->form_validation->set_rules('sex', 'Sex', 'required|integer|callback__checkSex');
                $this->form_validation->set_rules('captcha', 'Captcha', 'required|callback__checkCaptcha');
                if($this->form_validation->run() == TRUE) {
                    require(APPPATH.'config/ide_default.php');
                    $ots = POT::getInstance();
                    $ots->connect(POT::DB_MYSQL, connection());
                    $account = new OTS_Account();
                    $name = $account->createNamed($_POST['name']);
                    $account->setPassword(sha1($_POST['password']));
                    $account->setEmail($_POST['email']);
                    $account->setCustomField('nickname', $_POST['nickname']);
                    $account->setCustomField('premdays', PREMDAYS);
                    $account->setCustomField('lastday', $_SERVER['REQUEST_TIME']);
                    try {
                        $account->save();
                        unset($account);
                        $_SESSION['logged'] = 1;
                        $_SESSION['name'] = $_POST['name'];
                        $_SESSION['nickname'] = $_POST['nickname'];
                        $_SESSION['accountDelay'] = time();
                        
                        $account = $ots->createObject('Account');
                        $account->find($_POST['name']);
                        
                        $sample = new OTS_Player();
                        $sample->find($config['newchar_vocations'][$_POST['vocation']]);
                        if(!$sample->isLoaded()) {    show_error('Sample character could not be found!'); }
                        
                        // Create new character
                        $player = $ots->createObject('Player');
                        $player->setName($this->strFirst($_POST['character_name']));
                        $player->setAccount($account);
                        $player->setGroup($sample->getGroup());
                        $player->setSex($_POST['sex']);
                        $player->setVocation($sample->getVocation());
                        $player->setConditions($sample->getConditions());
                            $player->setRank($sample->getRank());
                            $player->setLookAddons($sample->getLookAddons());
                        $player->setTownId($_POST['city']);
                        $player->setExperience($sample->getExperience());
                        $player->setLevel($sample->getLevel());
                        $player->setMagLevel($sample->getMagLevel());
                        $player->setHealth($sample->getHealth());
                        $player->setHealthMax($sample->getHealthMax());
                        $player->setMana($sample->getMana());
                        $player->setManaMax($sample->getManaMax());
                        $player->setManaSpent($sample->getManaSpent());
                        $player->setSoul($sample->getSoul());
                        $player->setDirection($sample->getDirection());
                        $player->setLookBody($sample->getLookBody());
                        $player->setLookFeet($sample->getLookFeet());
                        $player->setLookHead($sample->getLookHead());
                        $player->setLookLegs($sample->getLookLegs());
                        $player->setLookType($sample->getLookType());
                        $player->setCap($sample->getCap());
                        $player->setPosX($startPos['x']);
                           $player->setPosY($startPos['y']);
                        $player->setPosZ($startPos['z']);
                        $player->setLossExperience($sample->getLossExperience());
                        $player->setLossMana($sample->getLossMana());
                        $player->setLossSkills($sample->getLossSkills());
                        $player->setLossItems($sample->getLossItems());
                        $player->setLossContainers($sample->getLossContainers());
                        $player->save();
                        $_SESSION['characterDelay'] = $_SERVER['REQUEST_TIME'];
                        unset($player);
                        $player = $ots->createObject('Player');
                        $player->find($_POST['character_name']);
                        if($player->isLoaded())
                        {
                            $player->setSkill(0,$sample->getSkill(0));
                            $player->setSkill(1,$sample->getSkill(1));
                            $player->setSkill(2,$sample->getSkill(2));
                            $player->setSkill(3,$sample->getSkill(3));
                            $player->setSkill(4,$sample->getSkill(4));
                            $player->setSkill(5,$sample->getSkill(5));
                            $player->setSkill(6,$sample->getSkill(6));
                            $player->save();
                            $SQL = POT::getInstance()->getDBHandle();
                            $loaded_items_to_copy = $SQL->query("SELECT * FROM player_items WHERE player_id = ".$sample->getId()."");
                            foreach($loaded_items_to_copy as $save_item)
                                $SQL->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', '".$save_item['attributes']."');");
                        
                            if($ajax == 0)
                                $ide->redirect(WEBSITE.'/index.php/account');
                            else
                                $ide->criticalRedirect(WEBSITE.'/index.php/account');
                        }
                    }
                    catch(Exception $e) {
                        error($e->getMessage());
                    }
                }
                else {
                    if($ajax == 0) $cap = create_captcha($vals);
                }
            }
            if($ajax == 0) {
                $_SESSION['captcha'] = $cap['word'];
                $data['captcha'] = $cap['image'];
            }
            #Load view of creating account
            if($ajax == 1) {
                echo error(validation_errors());
                $ide->system_stop();
            }
            else {
                $this->load->view('create', $data);
            }
        }
        
        /* Function to check if passed login and password are correct, it uses abstract database model. */
        function _check_login() {
            $this->load->model("Account_model");
            if($this->Account_model->check_login() == false) {
                $this->form_validation->set_message("_check_login", "Account name or password are incorrect.");
                return false;
            }
            else
                return true;
        }
        
        /* Login controller  */
        function login($action = 0) {
            if((int) $action == 1) success("Voc&ecirc; Deslogou.");
            if((int) $action == 2) success("Conta Recuperada com Sucesso!");
            $ide = new IDE;
            $this->load->helper("form");
            $this->load->library("form_validation");
            if($_POST) {
                $this->form_validation->set_rules('name', 'Account Name', 'required|callback__check_login');
                $this->form_validation->set_rules('pass', 'Password', 'required');
                if(in_array($_POST['name'], $GLOBALS['config']['restrictedAccounts']))
                    error("The account you try to access is restricted!");
                else {
                    if($this->form_validation->run() == true) {
                        $_SESSION['logged'] = 1;
                        $_SESSION['name'] = $_POST['name'];
                        if(!empty($_SESSION['forward'])) {
                            $forward = $_SESSION['forward'];
                            $_SESSION['forward'] = "";
                            $ide->redirect($forward);
                        }
                        else 
                            $ide->redirect(WEBSITE.'/index.php/account');
                    
                    }
                }
            }
            /* Load view of login page. */
            $this->load->view("login");
            
        }
        /* Function to logout from account. */
        function logout() {
            $ide = new IDE;
            $_SESSION['logged'] = '';
            $_SESSION['account_id'] = '';
            $_SESSION['name'] = '';
            $_SESSION['admin'] = 0;
            $_SESSION['forward'] = "";
            $ide->redirect('login/1');
        }
        
        /* Controller to generate random recovery key and save it, accessed by user, only once per account. */
        function generate_recovery_key() {
            $this->load->helper("form");
            $ide = new IDE;
            $ide->requireLogin();
            $this->load->model("Account_model");
            if($this->Account_model->getRecoveryKey($_SESSION['name'])) {
           alert("<b>Voc&ecirc; j&aacute; possui uma Recovery Key.</b>");
        return false;
}  
            if($_POST) {
                $data['info'] = '';
                $key = $this->Account_model->generateKey($_SESSION['name']);
                success("<center><font size='4'>$key</font></center>");
                alert("<b>Salve esta Recovery Key, Caso a perca n&atilde;o poder&aacute; Recuperar a sua conta.<br>ATEN&Ccedil;&Atilde;O &rsaquo; A Staff n&atilde;o se Responsabiliza por sua Recovery Key!</b>");
            }
            else
            $data['info'] = '<center id=\'info\'><b>Clique no Bot&atilde;o abaixo para Gerar uma Recovery Key.<br>ATEN&Ccedil;&Atilde;O &rsaquo; Esta Recovery Key ser&aacute; passada apenas uma vez, Recomendado guardar no seu Computador por Raz&otilde;es de Seguran&ccedil;a!</b></center><br><center><input type=\'submit\' value=\'Gerar\' name=\'submit\'></center>';
            /* Load view of generating new recovery key. */
            $this->load->view('generate_recovery_key', $data);
        
        }
        
        function _checkCurrentPassword($pass) {
            $this->load->model("account_model");
            if($this->account_model->checkPassword($pass)) 
                return true;
            else {
                $this->form_validation->set_message("_checkCurrentPassword", "Current password is incorrect.");
                return false;
            }
        }
        
        function changepassword() {
            $ide = new IDE;
            $ide->requireLogin();
            $this->load->helper("form_helper");
            if($_POST) {
                $this->load->library("form_validation");
                $this->form_validation->set_rules('current', 'Current Password', 'required|callback__checkCurrentPassword');
                $this->form_validation->set_rules('password', 'Password', 'required|matches[repeat]|min_length[4]|max_length[255]');
                if($this->form_validation->run() == true) {
                    $this->load->model("account_model");
                    $this->account_model->changePassword($_POST['password'], $_SESSION['name']);
                    success("Sua senha foi Trocada com Sucesso!");
                    $ide->redirect(WEBSITE."/index.php/account", 2);
                }
            }
            $this->load->view("changepassword");
        }
        
        function editcomment($id) {
            $ide = new IDE;
            $ide->requireLogin();
            if(empty($id)) $ide->redirect(WEBSITE."/index.php/account");
            $this->load->model("account_model");
            if(!$this->account_model->isUserPlayer($id)) $ide->redirect(WEBSITE."/index.php/account");
            $data['id'] = $id;
                if($_POST) {
                    $this->load->library("form_validation");
                        $this->form_validation->set_rules('comment', 'Comment', 'max_length[255]|alpha_ide');
                    if($this->form_validation->run() == true) {
                        if(@$_POST['hide'] == 1)
                            $this->account_model->changeComment($id, $_POST['comment'], true);
                        else
                            $this->account_model->changeComment($id, $_POST['comment'], false);
                        success("Seu Coment&aacute; foi Atualizado!");
                        $ide->redirect(WEBSITE."/index.php/account", 2);
                    }
                }
            $data['comment'] = $this->account_model->getPlayerComment($id);
            $this->load->helper("form_helper");
            $this->load->view("edit_comment", $data);
        }
        
        function deletePlayer($id) {
            $ide = new IDE;
            $ide->requireLogin();
            $id = (int)$id;
            if(empty($id)) $ide->redirect(WEBSITE."/index.php/account");
            $this->load->model("account_model");
            if(!$this->account_model->isUserPlayer($id)) $ide->redirect(WEBSITE."/index.php/account");
            $this->account_model->deletePlayer($id);
            $ide->redirect(WEBSITE."/index.php/account");
        }
        
        public function setNickname() {
            $ide = new IDE;
            $ide->requireLogin();
            if(!empty($_SESSION['nickname'])) $ide->goPrevious();
            $this->load->helper("form_helper");
                if($_POST) {
                    $_POST['nickname'] = ucfirst(strtolower($_POST['nickname']));
                    $this->load->library("form_validation");
                    $this->form_validation->set_rules('nickname', 'Nickname', 'required|min_length[4]|max_length[32]|nickname|callback__nicknameExists');
                    $this->form_validation->set_rules('rules', 'Rules', 'required');
                    if($this->form_validation->run()) {
                        $this->load->model("account_model");
                        $this->account_model->setNickname($ide->loggedAccountId(), $_POST['nickname']);
                        $_SESSION['nickname'] = $_POST['nickname'];
                        $ide->redirect(WEBSITE."/index.php/account/index/2");
                    }
                }
            $this->load->view("setNickname");
            
        }
        
        function _validKey($key) {
            $this->load->model("account_model");
            $_POST['key'] = str_replace("-", "", $_POST['key']);
            if($this->account_model->checkKey($_POST['key'], $_POST['email'])) {
                return true;
            }
            else {
                $this->form_validation->set_message("_validKey", "Could not change password. Make sure email and recovery key are valid.");
                return false;
            }
        }
        
        public function lost() {
            $ide = new IDE;
            $this->load->helper("form_helper");
                if($_POST) {
                    $_POST['key'] = str_replace("-", "", $_POST['key']);
                
                    $this->load->library("form_validation");
                    $this->form_validation->set_rules('password', 'Password', 'required|matches[repeat]|min_length[4]|max_length[255]');
                    $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
                    $this->form_validation->set_rules('key', 'Recovery Key', 'required|callback__validKey');
                    
                    if($this->form_validation->run()) {
                        $this->load->model("account_model");
                        $this->account_model->recoveryAccount($_POST['key'], $_POST['email'], $_POST['password']);
                        $ide->redirect(WEBSITE."/index.php/account/login/2");
                    }
                }
            $this->load->view("account_lost");
        }
        
    }

?>
 

provavelmente vai dar outro erro

posta que eu te ajudo


Share this post


Link to post
Share on other sites

Amigo, estava tendo o mesmo problema, vou postar a resolução.

Primeiramente vc irá precisar localizar e abrir dois arquivos, o account.php e o character.php. Os caminhos são esses:

C:\xampp\htdocs\system\application\controllers\account.php 

C:\xampp\htdocs\system\application\controllers\character.php

 

Em ambos os arquivo vc precisará inserir um simples trecho de código.

Procure pela função _validName($name) e coloque global $config; conforme mostrado abaixo:

   function _validName($name) {
        require("config.php");
        global $config; //OLHA ELE INSERIDO AQUI
        $name = explode(" ", $name);
            foreach($name as $unit) {
                if(in_array(strtolower($unit), $config['invalidNameTags'])) {
                    $this->form_validation->set_message('_validName', 'Invalid Name');
                    return false;
                }
                else if(strlen($unit) == 1) {
                    $this->form_validation->set_message('_validName', 'Invalid Name');
                    return false;
                }
                else
                    continue;
            }
    }

Espero ter sido claro e ter ajudado.


Share this post


Link to post
Share on other sites

@jefersonzc consegui arrumar, agradecido mais agora o outro erro é que o Apelido "nickname" sempre fica dando que ja existe sendo que nao existe eu posso botar "fkkdsafksd;;v;cxik48324823" como o nickname e fala que ja existe

 


Edited by Emanueldk (see edit history)

Share this post


Link to post
Share on other sites

As vezes da erro falso ( cria do msm jeito )

tenta desativar namelock na config.lua do seu server


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...