Ir para conteúdo

jakimif

Membro
  • Registro em

  • Última visita

Tudo que jakimif postou

  1. jakimif postou uma resposta no tópico em Suporte Tibia OTServer
    editado !
  2. Olá a todos, nesses últimos tempos andei pesquisando sobre criação de website para Open Tibia, não achei muita coisa por ai na internet, então resolvi analisar o banco de dados de um servidor de tibia,e cá pra nos os sites atuais não vão muito alem de um crud,para quem não sabe crud são operações basicas feita no banco de dados . C create (criar) R read (ler) U (update) D (delete) Pensando nisso comecei a desenvolver um website para esse fim, criei algumas classe para fazer todo esse processo e resolvi compartilhar,não vou dar muitos detalhes sobre a classe,apenas postarei exemplos de utilização A primeira classe vem com nome de banco.class.php responsavel pela conexão com banco de dados e operações CRUD <?php abstract class banco{ /*Propriedades*/ public $servidor = "localhost"; public $usuario = "root"; public $senha = "senha"; public $nomebanco = "nome"; public $conexao = NULL; public $dataset = NULL; public $extras_select = NULL; public $linhaafetadas = -1; /*Metodos*/ public function __construct(){ $this->conecta(); } public function __destruct(){ if($this->conexao != NULL): mysql_close($this->conexao); endif; } public function conecta(){ $this->conexao = mysql_connect($this->servidor,$this->usuario,$this->senha,TRUE) or die($this->trataerro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true)); mysql_select_db($this->nomebanco) or die($this->trataerro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true)); mysql_query("SET NAMES 'utf8'"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_results=utf8"); } public function inserir($objeto){ $sql = "INSERT INTO ".$objeto->tabela." ("; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores); if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= ") "; endif; next($objeto->campos_valores); endfor; reset($objeto->campos_valores); $sql .= "VALUES ("; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ? $objeto->campos_valores[key($objeto->campos_valores)] : "'".$objeto->campos_valores[key($objeto->campos_valores)]."'"; if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= ") "; endif; next($objeto->campos_valores); endfor; return $this->executaSQL($sql); }// inserir public function atualizar($objeto){ $sql = "UPDATE ".$objeto->tabela." SET "; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores)."="; $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ? $objeto->campos_valores[key($objeto->campos_valores)] : "'".$objeto->campos_valores[key($objeto->campos_valores)]."'"; if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= " "; endif; next($objeto->campos_valores); endfor; $sql .="WHERE ".$objeto->id."="; $sql .= is_numeric($objeto->valorid) ? $objeto->valorid : "'".$objeto->valorid."'"; echo $sql; return $this->executaSQL($sql); }//atualizar public function deletar($objeto){ $sql = "DELETE FROM ".$objeto->tabela; $sql .=" WHERE ".$objeto->id."="; $sql .= is_numeric($objeto->valorid) ? $objeto->valorid : "'".$objeto->valorid."'"; return $this->executaSQL($sql); }//delete public function selecionaTudo($objeto){ $sql = "SELECT * FROM ".$objeto->tabela; if($objeto->extras_select != NULL): $sql .= " ".$objeto->extras_select; endif; return $this->executaSQL($sql); }//seleciona tudo public function selecionaCampos($objeto){ $sql = "SELECT "; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores); if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= " "; endif; next($objeto->campos_valores); endfor; $sql .= " FROM ".$objeto->tabela; if($objeto->extras_select != NULL): $sql .= " ".$objeto->extras_select; endif; return $this->executaSQL($sql); }//seleciona tudo public function executaSQL($sql=NULL){ if($sql != NULL): $query = mysql_query($sql) or $this->tratarerro(__FILE__,__FUNCTION__); $this->linhasafetadas = mysql_affected_rows($this->conexao); if(substr(trim(strtolower($sql)),0,6)=='select'): $this->dataset = $query; return $query; else: return $this->linhasafetadas; endif; else: $this->trataerro(__FILE__,__FUNCTION__,NULL,'Ocorreu um erro interno,desculpe',false); endif; }// executa SQL public function retornaDados($tipo=NULL){ switch(strtolower($tipo)): case "array": return mysql_fetch_array($this->dataset); break; case "assoc": return mysql_fetch_assoc($this->dataset); break; case "object": return mysql_fetch_object($this->dataset); break; default: return mysql_fetch_object($this->dataset); break; endswitch; }//retorna dados public function trataerro($arquivo=NULL,$rotina=NULL,$numerro=NULL,$msgerro=NULL,$geraexcept=FALSE){ if($arquivo == NULL) $arquivo="Não informado"; if ($rotina == NULL) $rotina="Não informada"; if ($numerro == NULL) $numerro=mysql_errno($this->conexao); if ($msgerro == NUll) $msgerro=mysql_error($this->conexao); $resultado = 'Ocorreu um erro com os seguintes detalhes:<br /> <strong>Arquivo:</strong> '.$arquivo.'<br /> <strong>Rotina:</strong> '.$rotina.'<br /> <strong>Código:</strong> '.$numerro.'<br /> <strong>Arquivo:</strong> '.$msgerro.''; if($geraexcept = false): echo($resultado); else: die($resultado); endif; } } ?> Uma segunda classe precisou ser criada por fim de organização com o nome de base.class.php responsavel por de fato pegar o nome da tabela no banco de dado e executar as operações <?php require_once("banco.class.php"); abstract class base extends banco{ public $tabela = NULL; public $campos_valores = array(); public $id = NULL; public $valorid = NULL; public $extras_select = NULL; public function addCampo($campo=NULL,$valor=NULL){ if($campo != NULL): $this->campos_valores[$campo] = $valor; endif; } public function delCampo($campo=NULL){ if(array_key_exists($campo,$this->campos_valores)): unset ($this->campos_valores[$campo]); endif; } public function setValor($campo=NULL,$valor=NULL){ if($campo != NULL && $valor != NULL): $this->campos_valores[$campo] = $valor; endif; } public function getValor($campo=NULL){ if($campo != NULL && array_key_exists($campo,$this->campos_valores)): return $this->campos_valores[$campo]; else: return FALSE; endif; } } ?> Agora vamos preparar a classe para executar as operações desejadas na tabela "accounts" accounts.class.php <?php require_once ("base.class.php"); class accounts extends base{ public function __construct($campos=array()){ parent::__construct(); $this->tabela = "accounts"; /*Seleciona a tabela*/ if(sizeof($campos)<= 0): $this->campos_valores = array( "email" => 'andre_garehotmail.com' ); else: $this->campos_valores = $campos; endif; $this->id = "id"; } } ?> E por fim exemplo de utilização para começar a utilizar a classe precisamos importar ela na página <?php require_once ("accounts.class.php"); $accounts = new accounts(); Um exemplo pratico atualizando campos na tabela accounts,pode pegar este dados de um formulario, como geralmente é feito $accounts->valorid = 6; $accounts->setValor('name','Rodrigo'); ## Atualizando o nome 'Rodrigo' na tabela accounts ## $accounts->setValor('password','123455');## Adicionando o 'password' na tabela accounts ## $accounts->atualizar($accounts); Selecionando todos os dados da account,um exemplo disso é o characters.php onde lista as informações do personagem(este exemplo foi feito com account,poderia ser na tabela players) $accounts->extras_select = "WHERE id = 5"; /*selecionar id,name,email da account ID = 5*/ $accounts->selecionaTudo($accounts); while($res = $accounts->retornaDados()): echo $res->id .' / '.$res->name .' / '.$res->email.'<br/>'; endwhile; Deletando a account no banco de dados $accounts->valorid = 6; $accounts->deletar($accounts); Adicionando uma account, lembrando que pode pegar os dados pelo formulario,como geralmente é feito no exemplo foi feito so Account Name e Password $accounts->addCampo('name','Jakimif'); $accounts->addCampo('password','123456'); $accounts->inserir($accounts); isso não foi um tutorial e sim exemplo de utilização da classe. poderia ser feito tudo na mesma página,mas dificultaria a manutenção criando a classe você pode utilizar em qualquer página do site com uma simples linha,como feito nos exemplos acima
  3. tente ao inves de "localhost" colocar 127.0.0.1
  4. Existem 2 meneiras para fazer isso 1º - Você tem a hospedagem certo ? envie o seu site para lá, entre em contato com o suporte da hospedagem e diga que quer acessar o banco de dados por meio "externo" eles lhe passarão as informações para acessar o banco de dados,pegue essa informação e coloque no config.lua do seu servidor. 2º - A segunda maneira,é colocar seu OT e site no VPS,entrar em contato com sua hospedagem e pedirem para que mude a DNS do seu dominio para o IP do VPS.
  5. Olá a todos, venho aqui apresentar o novo website do projeto Hunters Online, onde o layout foi totalmente baseado em outro layout visto por ai na internet, não me recordo aonde. O site foi construído do zero, todas as páginas e scripts feitas por mim. No menu foi feito um dropdown, ao clicar abrirá novas opções. Ainda está em fase de desenvolvimento portanto é possível apenas, Criar Conta,Login,Highscores. O site se encontra online neste link: http://216.245.202.232 Algumas imagens abaixo: Parte 1: Parte 2: Criar Conta: Login:
  6. Não precisava da hospedagem e sim do dominio .com registrado,mas caso queira usar a hospedagem é so transferir os arquivos do seu site para o local da hospedagem via ftp,e configurar o banco de dados como fosse localhost, no config.lua do seu ot ficaria assim:
  7. Não é tão facil assim, os programa que existem não funcionam direito, o maximo que você pode consseguir e extrair o .spr , caso seja de seu interesse estudar isso a fundo poderia começar a pesquisando sobre engenharia reversa.
  8. Como as senhas estão aparecendo no banco de dados ?
  9. jakimif postou uma resposta no tópico em Suporte Tibia OTServer
    qual a hospedagem ? provavelmente no lugar de "localhost" coloque "mysql.seudominio.com"
  10. Posta o codigo da página de criar a account para que possa lhe ajudar
  11. jakimif postou uma resposta no tópico em Formação de Equipe
    Nome: André França Idade: 21 Anos Cargo: Webmaster/Programador Skype: xexelento6 Facebook: andreeavilaa Horas que podem ser dedicadas ao Projeto: Em média 4 horas por dia Conhece a série 'Supernatural'?: Apenas pelo nome Nível de Experiência: Experiência de 5 anos programando website/servidores. Algum trabalho feito (caso tenha): Varios trabalhos feitos,apresendo no proximo contato Porque quer entrar na equipe: Não gosto de fazer coisas por fazer,creio que esse é um projeto bem estruturado e inovador.
  12. jakimif postou uma resposta no tópico em Playground (Off-topic)
    tenho 19 e ja tenho bastante , ainda um poco falhada '-' OAPKFODS
  13. Pelo que vi o site de lá é configurado, acho que o problema é no servidor mesmo ..
  14. Não é possivel fazer isso . Aqui vai as sources . http://www.4shared.com/archive/rcibrb5_/trunkr3884.html
  15. Amigo, acho que o erro seria no proprio servidor senão, corra atras do suporte Otprojects.
  16. O suporte é exelente, de boa qualidade e rápido , eles também são muito flexíveis para negociações e etc ..
  17. Posso falar que LGV é muito boa, tanto quando em VPS quanto em Suporte, e recomendo, agora Onservers nunca tive a oportunidade de conhecer seus produtos porem não opinarei .
  18. jakimif postou uma resposta no tópico em Suporte Tibia OTServer
    Aconselho a deixar em console, é mais estavel mas caso queira esse me add no msn posso te ajudar ; [email protected]
  19. jakimif postou uma resposta no tópico em Suporte Tibia OTServer
    Qual webserver está usando, xampp ? caso for mude para versão 1.7.5 ou 1.6.7
  20. jakimif postou uma resposta no tópico em Formação de Equipe
    Add ai, te ajudarei bastante ; [email protected]

Informação Importante

Confirmação de Termo