NO

Criando Um Website Para Ot Xml

Por Nostradamus, 21 de jul. de 2007 em Tutoriais de Websites

otserv
5.0 (1)
45
19.5k
NostradamusN
21 de julho de 2007 às 13:32

Introdução

 

Estava observando que em 99,9 % dos casos de sites, a maioria apenas troca de layout. Pois hoje ensinarei a criar um website simples em PHP na garra!

 

Requerimentos

  • Conheçimento básico de HTML
  • Um pouco de lógica, para saber o que é possível e o que não é dentro do PHP
  • Dedicação
  • Editor de textos (Bloco de notas, notepad++, entre outros)

Lógica estruturada

 

Primeiramente, antes de entrar em qualquer linguagem, vamos planejar como o site será.

 

Formulário para account, senha, nome do char, vocação, sexo

  1. Inclur arquivo de configuração do site
  2. Pegar dados informados
  3. Verificar caso campos em branco
  4. Verificar se a account é numérica
  5. Verificar o número de dígitos da account e da senha
  6. Verificar se não foi usado caracteres especiais (*, /, \, !, @, #, $, %, entre outros)
  7. Verificar se a account existe
  8. Verificar se o char existe
  9. Criar a conta com os dados informados

Arquivo de configuração do site

  1. Configuração de diretório do servidor
  2. Configurar nome do servidor
  3. Configurar life, mana, level, skills, entre outros dos jogadores a serem criados

Rápida explicação

 

Para entender o que iremos fazer em PHP é fácil vamos trabalhar com isso no código:

  1. Variavel - Toda variável no PHP é seguida de um $ (ex: $variavel)
  2. Condições - A sintaxe das condições no PHP é: if(condição) { // executar algo }
  3. Inicialização de código - No PHP indicamos o início de um código pelas "tags": <?php e no final por ?>
  4. Comentários - No PHP indicamos um comentário simples por // texto livre ou um comentário multi-linha por /* texto
    simples */

 

 

Usaremos algumas funções nativas do PHP, são elas:

  1. file_exists('dir/arquivo.xml') - Função que checa se um arquivo existe
  2. fopen('dir/arquivo.xml', 'w') - Função para abrir/criar arquivos, nesse caso usamos "w" então criaremos um arquivo.
  3. fwrite('texto', 'dir/arquivo.xml') - Função para escrevermos num arquivo
  4. fclose('dir/arquivo.xml') - Função para fechar um arquivo
  5. is_numeric($variavel) - Função para verificar se algo é numérico
  6. IsSet($variavel) - Função para verificar se algo foi setado ou mesmo usado
  7. echo - Função para imprimir uma mensagem na tela
  8. strlen - Função para verificar o número de caracteres de uma palavra (string)

Mãos na massa!

 

Primeiramente, criemos uma variável e damos a ela um valor de um diretório, o diretório da pasta data:

 

$dir = "C:/otserv/data"; // não coloque o "/" no final

 

Agora, vamos fazer um formulário em HTML, irei fazer um bem simples para o fácil entendimento:

 

<form method="post">

Account <br />

<input type="text" name="account" /> <br />

Password <br />

<input type="text" name="password" /> <br />

Nome <br />

<input type="text" name="nick" /> <br />

Sexo <br />

<select name="sex">

<option value="0">Feminino</option>

<option value="1">Masculino</option>

</select> <br />

Vocação <br />

<select name="voc">

<option value="1">Sorcerer</option>

<option value="2">Druid</option>

<option value="3">Paladin</option>

<option value="4">Knight</option>

</select> <br />

<input type="submit" name="make" value="Criar" /> <br />

</form>

 

Vejamos agora o texto em negrito:

 

Podemos observar que demos nomes para os campos para texto e botões, podemos dar o nome disso de identificação. Usaremos isso para saber quais valores correspondem a tais lugares. Pois sem isso, como saberíamos os dados informados?

 

Observe que usamos o método (method) post para pegar os dados, que no PHP é "chamado" por $_POST['campo'];

 

Vejamos como pegamos a account, senha, nome, e dados do player com POST:

 

$account = $_POST['account'];
$password = $_POST['password'];
$name = $_POST['nick'];
$sex = $_POST['sex'];
$voc = $_POST['voc'];

 

 

Depois de tudo pronto, está na hora de por a mão na massa começando a fazer as condições de criação. Primeiramente vamos ver quais faremos:

  1. Caso a account não seja numérica, exibir mensagem de erro
  2. Caso a account senha maior ou menor que 7, exibir mensagem de erro
  3. Caso a senha seja maior que 20 ou menor que 3, exibir mensagem de erro
  4. Caso o nome não ser letras, exibir mensagem de erro
  5. Caso a account exista
  6. Caso o char exista

Vamos fazer pela ordem então:

 

1) Caso a account não seja numérica, exibir mensagem de erro

 

if(!is_numeric($account)) {
echo "Account não numérica";
}

 

2) Caso a account senha maior ou menor que 7, exibir mensagem de erro

 

if(strlen($account) != 7) {
echo "Account deve conter 7 números";
}

 

3) Caso a senha seja maior que 20 ou menor que 3, exibir mensagem de erro

 

if(strlen($password) > 20 or strlen($password) < 3) {
echo "Senha deve ser entre 3 a 20 dígitos";
}

 

4) Caso o nome não ser letras, exibir mensagem de erro

 

 

 

5) Caso a account exista

 

if(file_exists("$dir/accounts/$account.xml") {
echo "A account já existe em nosso banco de dados";
}

 

6) Caso o char exista

 

if(file_exists("$dir/players/$name.xml") {
echo "O jogador já existe em nosso banco de dados";
}

 

Agora depois de todas as condições, faremos a parte de criação da account:

 

$arquivo = fopen("$dir/account/$account.xml");
fwrite($arquivo, '
	  <?xml version="1.0"?>
		<account pass="'.$password.'" premDays="0" premEnd="0">
			<characters>
			<character name="'.$name.'"/>
			</characters>
		</account>
	');
fclose($arquivo);

 

OBS: Lembrando que estou me baseando no Evolutions.

 

Agora vamos fazer a criação do player:

 

$arquivoII = fopen($dir/players/$name.xml");

fwrite($arquivoII, '

<?xml version="1.0" encoding="UTF-8"?>

<player name="'.$name.'" account="'.$account.'" sex="'.$sex.'" lookdir="2" exp="3200" voc="'.$voc.'" level="8" access="1" cap="300" maglevel="0" soul="100" maxdepotitems="1000" lastlogin="0">

<spawn x="300" y="300" z="7"/>

<temple x="300" y="300" z="7"/>

<health now="100" max="100" food="0"/>

<mana now="0" max="0" spent="0"/>

<skull redskulltime="0" redskull="0"/>

<look type="128" head="20" body="30" legs="40" feet="50" addons="0"/>

<skills>

<skill skillid="0" level="10" tries="0"/>

<skill skillid="1" level="10" tries="0"/>

<skill skillid="2" level="10" tries="0"/>

<skill skillid="3" level="10" tries="0"/>

<skill skillid="4" level="10" tries="0"/>

<skill skillid="5" level="10" tries="0"/>

<skill skillid="6" level="10" tries="0"/>

</skills>

<addons/>

<deaths>

</deaths>

<blessings>

<blessings/>

<spells>

</spells>

<inventory>

<slot slotid="5">

<item id="2431"/>

</slot>

<slot slotid="6">

<item id="2160" count="99"/>

</slot>

<slot slotid="10">

<item id="2152" count="48"/>

</slot>

</inventory>

<depots>

<depot depotid="1">

<item id="2590">

<inside>

<item id="2594">

<inside>

<item id="2152" count="50"/>

</inside> </item>

</inside>

</item>

</depot>

</depots>

<storage/>

</player>

');

fclose($arquivoII);

 

OBS: Eu apenas peguei o player padrão que vem no servidor do Evolutions, caso queira modificar, é simples.

 

Agora, vamos para a última parte: iremos juntar tudo que foi feito.

 

<form method="post">

Account <br />

<input type="text" name="account" /> <br />

Password <br />

<input type="text" name="password" /> <br />

Nome <br />

<input type="text" name="nick" /> <br />

Sexo <br />

<select name="sex">

<option value="0">Feminino</option>

<option value="1">Masculino</option>

</select> <br />

Vocação <br />

<select name="voc">

<option value="1">Sorcerer</option>

<option value="2">Druid</option>

<option value="3">Paladin</option>

<option value="4">Knight</option>

</select> <br />

<input type="submit" name="make" value="Criar" /> <br />

</form>

 

<?php

$dir = "C:/otserv/data";

if(IsSet($_POST['make'])) {

$account = $_POST['account'];

$password = $_POST['password'];

$name = $_POST['nick'];

$sex = $_POST['sex'];

$voc = $_POST['voc'];

 

if(!is_numeric($account)) {

echo "Account não numérica";

}

 

 

else if(strlen($account) != 7) {

echo "Account deve conter 7 números";

}

 

else if(strlen($password) > 20 or strlen($password) < 3) {

echo "Senha deve ser entre 3 a 20 dígitos";

}

 

else if(file_exists("$dir/accounts/$account.xml") {

echo "A account já existe em nosso banco de dados";

}

 

 

else if(file_exists("$dir/players/$name.xml") {

echo "O jogador já existe em nosso banco de dados";

}

 

else {

$arquivo = fopen("$dir/account/$account.xml");

fwrite($arquivo, '

<?xml version="1.0"?>

<account pass="'.$password.'" premDays="0" premEnd="0">

<characters>

<character name="'.$name.'"/>

</characters>

</account>

');

fclose($arquivo);

 

$arquivoII = fopen($dir/players/$name.xml");

fwrite($arquivoII, '

<?xml version="1.0" encoding="UTF-8"?>

<player name="'.$name.'" account="'.$account.'" sex="'.$sex.'" lookdir="2" exp="3200" voc="'.$voc.'" level="8" access="1" cap="300" maglevel="0" soul="100" maxdepotitems="1000" lastlogin="0">

<spawn x="300" y="300" z="7"/>

<temple x="300" y="300" z="7"/>

<health now="100" max="100" food="0"/>

<mana now="0" max="0" spent="0"/>

<skull redskulltime="0" redskull="0"/>

<look type="128" head="20" body="30" legs="40" feet="50" addons="0"/>

<skills>

<skill skillid="0" level="10" tries="0"/>

<skill skillid="1" level="10" tries="0"/>

<skill skillid="2" level="10" tries="0"/>

<skill skillid="3" level="10" tries="0"/>

<skill skillid="4" level="10" tries="0"/>

<skill skillid="5" level="10" tries="0"/>

<skill skillid="6" level="10" tries="0"/>

</skills>

<addons/>

<deaths>

</deaths>

<blessings>

<blessings/>

<spells>

</spells>

<inventory>

<slot slotid="5">

<item id="2431"/>

</slot>

<slot slotid="6">

<item id="2160" count="99"/>

</slot>

<slot slotid="10">

<item id="2152" count="48"/>

</slot>

</inventory>

<depots>

<depot depotid="1">

<item id="2590">

<inside>

<item id="2594">

<inside>

<item id="2152" count="50"/>

</inside>

</item>

</inside>

</item>

</depot>

</depots>

<storage/>

</player>

');

fclose($arquivoII);

 

// Para não perder tempo, usaremos minha função de adicionar itens ao players.xml

 

function players_xml(&$nick) {

if(!file_exists("$dir/players/players.xml") {

$fp = fopen("$dir/players/players.xml", "w");

fwrite($fp, '

<?xml version="1.0"?>

<players>

</players>

');

fclose($fp);

}

else {

$xml = new SimpleXMLElement(file_get_contents("$dir/players/players.xml"));

$xml->players->addChild('player');

 

$player = end($xml->xpath('/players/player'));

$nextGuid = (int) $player['guid'] + 1;

$newPlayer = end($xml->xpath('/players'))->addChild('player');

$newPlayer->addAttribute('guid', $nextGuid);

$newPlayer->addAttribute('name', $nick);

 

$xml->asXML("$dir/players/players.xml");

}

}

 

players_xml($name);

 

 

echo "Char criado com sucesso";

}

}

?>

 

OBS: O fórum acabou com minha estruturação do código.

 

E chegamos ao fim de mais um tutorial, qualquer dúvida, é só postar aqui.

Editado Julho 21 por Nostradamus

-LMS--
21 de julho de 2007 às 13:51

First Post :D

OMG, quem não aprender com isso, pode se matar!

Belo tutorial Parabéns ^^

Editado Julho 21 por -LMS-

JeloukosJ
21 de julho de 2007 às 14:25

Se Naum Aprender Agora c Joga da Ponte!!!

 

Parabens Nostradamus ;)

 

TeH +

HeNnetH
25 de julho de 2007 às 15:25

Ótimo tutorial tio nostra, pena que só cria um char por conta x]

 

 

PARABÉNS! x]

 

 

Abraços HeNnEt B)\\

1 mês depois...
JvchequerJ
06 de agosto de 2007 às 11:10

Olá Xtibiano,

 

Parabéns, seu tutorial foi aprovado.

 

Estarei movendo ele para a área de tutoriais.

 

Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho.

 

 

Atenciosamente,

JV Chequer *Diretor Xtibia.com*

godbatiG
06 de agosto de 2007 às 13:15

Nuss...

TUTO MTO BOM...

 

parabens... pela eficiencia, esforço e paciencia!!!!

 

vlw... mi ajudo mto!!!

Dare DevilD
06 de agosto de 2007 às 18:19

~Nostra, estou aqui para avisar que adicionei seu tutorial no meu listão de tutoriais relacionados a websites.

 

~Topic

 

Muito bom 100% ORGANIZADO.

 

Atenciosamente,

~DD ou ~DarezinhUu - Campeão da 1ª MDS Xtibia

adolpho11A
11 de agosto de 2007 às 13:44

Belo post.

RoguiR
13 de agosto de 2007 às 15:06

Ai Nostra

 

Pode da uma ajuda?

Eu não to hostando o site, to fazendo isso usando o 110mb

Dai o que eu coloco nessa parte:

$dir = "C:/otserv/data"; // não coloque o "/" no final

O endereço normalmente?

Eu fiz isso e não deu certo...

2 semanas depois...
10618151
22 de agosto de 2007 às 12:45

Boas... desculpa o icomodo...

mas eassim eu n touy percebendo como hei de fazer isso... o 1º code k vc deu num bloko de notas... mas n sei como fazer apartir dai... lxs me ajude..

10618151
22 de agosto de 2007 às 12:52

Ñ e k oseu tutorial teja mal feito pk por akilo k vi e consegui perceber ate ta mt bem explicado eu e k n tou conseguindo perceber como faço para meter todos os codigos k vc deu.. n sei se meto tudo jundo no mesmo bloco de notas se meto separado.... me ajude por favor.. bgd ...

GMauriG
22 de agosto de 2007 às 21:30

tipo eu tenhu o easyphp 2.0, e baxei um layout que vc (nostradamus) coloco aki no forum, so que eu naum sei aonde colocar os arkivos

10618151
23 de agosto de 2007 às 17:09

meu amigfo no easyphp e facil vc deve la ter uma pasta a dzer WWW... e so vc colocar a os arquivos..

HunterHeroH
24 de agosto de 2007 às 06:16

Kiurtu, não faça double post*

Espero que não volte a acontecer.

 

Legenda:

*Double post = dois posts seguidos, sem necessidade, pois pode usar o botão editar.

 

@Tópico:

Realmente nunca me dei bem com websites, mas vou tentar seguir esse tuto. THX ;)

Editado Agosto 24 por HunterHero

10618151
24 de agosto de 2007 às 06:48

ok desculpa... obrigado pelo aviso...