Ir para conteúdo

[xtwebsite] Tutorial I - Entendendo Config.inc.php E Manipulando Accounts Class


Posts Recomendados

Vamos lá galera, o primeiro tutorial relacionado ao desenvolvimento com esta API, é importante ter algum conhecimento de PHP e SQL antes de começar acompanhar os tutoriais.

 

Arquivo config.inc.php

Aqui estão algumas configurações gerais do site, conexão ao banco de dados, template, links e segurança.

 

ini_set("safe_mode", "on");

ini_set("disable_functions", "dl");

ini_set("register_globals", "off");

ini_set("register_globals_argv", "off");

ini_set("magic_quotes_gpc", "on");

 

Desabilita e habilita algumas configurações do PHP (php.ini). Estas são importantes para a segurança do mesmo. Um exemplo é o register_globals, se este estiver "on" e passarmos uma variável pelo método GET, a variável vinda pelo método GET receberá o valor enviado pelo usuário, sobrepondo um possível valor que já estivesse nesta variável.

 

Exemplo:

<?php

// define $authorized = true somente se o usuário for autenticado

if (authenticated_user()) {

$authorized = true;

}

// Porque nós não inicializamos $authorized como false, ela pode ser

// definida através de register_globals, como usando GET auth.php?authorized=1

// Dessa maneira, qualquer um pode ser visto como autenticado!

if ($authorized) {

include "/highly/sensitive/data.php";

}

?>

 

Se enviássemos a variável authorized com valor true pelo GET, faríamos login mesmo sem passar pela função de autenticação.

 

Mais informações: http://www.php.net/manual/pt_BR/security.globals.php

 

// SQL Connection Configs (MySQL ou SQLite)

$connectionType = 'mysql'; // mysql ou sqlite

 

$conParameters = array(

'host' => 'localhost', // mysql con

'user' => 'root', // mysql con

'password' => '', // mysql con

'database' => 'tfs', // mysql con

'database_file' => 'schema.sqlite' // parâmetro para sqlite

);

 

Simples configurações de banco de dados, acho que aqui não precisa comentar nada...

 

// Template Configs

$templatename = "default";

 

Define a pasta onde está localizado o template, à partir do diretório "templates", minha idéia é num futuro próximo disponibilizar diversos templates para customização do seu site ao seu gosto.

 

// Server Configs

$dir = "C:\Documents and Settings\Anderson\Meus documentos\cryingdamson4pl2-console/";

$ip = "127.0.0.1";

 

Dir define a pasta onde está localizado o .exe do seu servidor e IP não preciso nem explicar...

 

// Website Configs

$website_configs = array(

"titulo" => "XT Website",

"logo" => array(1 => "XT", 2 => "Website"),

"descricao" => "Um projeto desenvolvido com o apoio do <a href='http://www.xtibia.com/forum' target='_blank'>fórum XTibia</a>.",

"link" => "http://seuip.servegame.com:8090",

"parceiros" => array(

"XTibia" => "http://www.xtibia.com"

),

"links" => array(

1 => array(

'link' => '#',

'name' => 'Início',

'sublinks' => array(

1 => array(

'link' => '#',

'name' => 'Notícias'

),

2 => array(

'link' => '#',

'name' => 'Atualizações'

)

)),

2 => array(

'link' => '#',

'name' => 'Conta',

'sublinks' => array(

1 => array(

'link' => '#',

'name' => 'Criar Conta'

),

2 => array(

'link' => '#',

'name' => 'Acessar Conta'

),

3 => array(

'link' => '#',

'name' => 'Criar Conta'

)

)),

3 => array(

'link' => '#',

'name' => 'Comunidade',

'sublinks' => array(

1 => array(

'link' => '#',

'name' => 'Casas'

),

2 => array(

'link' => '#',

'name' => 'Guildas'

),

3 => array(

'link' => '#',

'name' => 'Rankings'

),

4 => array(

'link' => '#',

'name' => 'Biblioteca'

)

)),

4 => array(

'link' => '#',

'name' => 'Fórum',

'sublinks' => array()

),

5 => array(

'link' => '#',

'name' => 'Suporte',

'sublinks' => array(

1 => array(

'link' => '#',

'name' => 'Formulário de Contato'

),

2 => array(

'link' => '#',

'name' => 'Fórum'

),

3 => array(

'link' => '#',

'name' => 'MSN'

)

))

)

);

 

website_configs['titulo'] => refere-se ao parâmetro title do HTML;

website_configs['logo'] => refere-se ao título do topo esquerdo;

webiste_configs['descricao'] => refere-se à descrição do topo esquerdo;

website_configs['link'] => link do seu servidor;

website_configs['parceiros'] => array referente ao menu da direita;

website_configs['links'] => refere-se ao menu do topo, sendo o parâmetro sublinks opcional, e os outros 2 obrigatórios. Name refere-se ao que aparecerá na tela (label) e o link ao link propriamente dito.

 

Classes referentes à Accounts

Agora irei comentar e dar alguns exemplos utilizando os métodos das 2 classes referentes às accounts. É interessante você perceber, que para cada objeto manipulado, fiz 2 classes. Uma para listagem, e a outra que é o objeto propriamente dito. As listas sempre têm a importância em retornar objetos de seu tipo.

 

Vamos lá, vamos analisar o que cada método faz.

 

*** Classe: Account **

 

Lista de Métodos

Account::Account(SQLConnection $con, int $accountid) void

Account::getId(void) int

Account::getField(string $field) string

Account::setField(string $field, string $value) void

Account::getPlayers(void) Players Obj Array

Account::create(array $parameters) void

 

*** Classe: AccountsList **

 

Lista de Métodos

AccountsList::AccountsList(SQLConnection $con, array/string $parameters, array/string $extra) void

AccountsList::getAccounts(void) Account Obj Array

 

Classe Account

  1. Account::Account - refere-se ao construtor da classe Account, isto é, quando você chamar esta classe, terá que passar um parâmetro do tipo SQLConnection e um número inteiro sendo o id da conta que deseja manipular.
  2. Account::getId - não têm parametros, retorna o id da conta.
  3. Account::getField - retorna o valor do banco de dados referente à coluna $field.
  4. Account::setField - altera o valor no banco de dados referente à coluna $field para $value.
  5. Account::getPlayers - retorna um array com objetos do tipo Player, veremos melhor no próximo tutorial.
  6. Account::create - todo método referente a inserção no banco de dados pede um único parâmetro, um array, que deve conter todos os campos que deseja inserir e seus respectivos valores. Veremos um exemplo à seguir.

 

Classe AccountsList

  1. AccountsList::AccountsList - outro constutor, este pede 3 parâmetros, um objeto SQLConnection, um parâmetro que pode ser um array, ou uma string, que refere-se à clausula WHERE do SQL, e outro que permite você adicionar algo a mais no SQL, pode ser um ORDER BY, ou um LIMIT, ou qualquer outra dessas. Veremos um exemplo à seguir também.
  2. AccountsList::getAccounts - retorna um array com todos objetos do tipo Account selecionados no construtor.

 

Exemplos:

 

Exibindo uma lista simples, sem uso de template, de no máximo 10 contas ordenadas pelo ID de forma descrecente.

 

<?php

include 'config.inc.php';

include 'XT_API/index.php';

 

$con = new SQLConnection($connectionType,$conParameters);

 

$accounts = new AccountsList($con, null, "ORDER BY `id` DESC LIMIT 10"); // seleciona no máximo 10 accounts, ordenado pelo ID em forma descrecente

$accountsObjects = $accounts->getAccounts(); // pega todos os objetos do tipo Account

 

if (sizeof($accountsObjects) > 0) // verifica se foi retornada alguma conta na consulta

{

foreach($accountsObjects as $account) {

// manipula cada objeto retornado pela consulta na variável $account

echo "ID da Conta: ".$account->getField("id")." Password: ".$account->getField("password")."<br>";

}

}

else

{

echo "Nenhuma conta retornada pelo objeto AccountsList!"; // exibe um erro caso o número de contas retornadas seja <= 0

}

?>

 

Exemplo de manipulação de uma única conta (exibe algumas informações da mesma).

 

<?php

include 'config.inc.php';

include 'XT_API/index.php';

 

$con = new SQLConnection($connectionType,$conParameters);

 

$account = new Account($con, 1); // indexa no construtor o objeto SQLConnection e a conta com o ID 1

 

if ($account->getId() != 0) // verifica se a conta existe (quando não existe, o método retornará 0)

{

// exibe algumas informações da conta

echo "<b>Informações da Conta:</b> ".$account->getId()."<br>";

echo "Password: ".$account->getField("password")."<br>";

echo "Email: ".$account->getField("email")."<br>";

echo "Recovery Key: ".$account->getField("key")."<br>";

echo "Group ID: ".$account->getField("group_id")."<br>";

}

else

{

echo "Erro! A conta desejada não existe."; // exibe erro se não existir

}

?>

 

Criação de Conta:

 

<?php

include 'config.inc.php';

include 'XT_API/index.php';

 

$con = new SQLConnection($connectionType,$conParameters);

 

$account_id = 456894;

$newemail = "anderson@anderson.com.br";

 

$account = new Account($con, $account_id); // indexa no construtor o objeto SQLConnection, com a conta que desejamos criar, assim verificamos se ela existe ou não

if ($account->getId() == 0)

{

// conta não existente

$parametros = array("id" => $account_id,"password" => "123456"); // faz um array contendo as informações necessárias para criação

$account->create($parametros); // cria a conta e já permite utilizar os métodos em cima da conta criada

$account->setField("email",$newemail); // altera o campo email

echo "Conta ".$account_id." criada. Password: ".$account->getField("password")."! Seu novo e-mail é ".$account->getField("email")."."; // exibe informações da nova conta criada

}

else

{

// conta existente

echo "A conta ".$account_id." já existe!";

}

?>

 

Bom, é isso, qualquer dúvida só postar que eu responderei assim que ver.

 

Até o próximo tutorial galera!

Editado por noobinhu
×
×
  • Criar Novo...