Ir para conteúdo
Entre para seguir isso  
maxsi

fazendo site para ot XML[outro método]p1

Recommended Posts

maxsi    0
maxsi

Bem basicamente nesse tutorial pretendo ensinar um método diferente de se:criar uma conta, criar um personagem, apagar um personagem, fazer LogIn e LogOut em uma conta para quem tem um Sever baseado em XML PS: algumas ideias foram baseadas no tutorial do usuário

Eltrus (Criando um Website para OT XML)

Dificuldade:

Intermediaria

Requisitos:

1°Conhecer html

2°Saber um pouco de lógica de programação

php
5 (o seu servidor web tem quer o
php
5 senão esse código não funciona, aconselho usar o
Vertrigo
pois a versão do
easyphp
com
php
não é muito estável...)

4°Um editor de teste (bloco de notas serve...)

5°Dedicação claro

 

Inicio:

 

Bem primeiro abra a pasta do seu www do seu servidor

e crie uma pasta para podermos trabalhar.Ex: site_ot

agora vamos fazer 2 arquivos XML que serão nossa base, o Acc_base.XML

<?xml version="1.0" encoding="UTF-8"?>
<account [b][color=Navy]pass="" premDays="0" premEnd="0"[/color][/b]>
 <characters>
 </characters>
</account>

Azul escuro: isto é chamado de parâmetro.

e o Char_Base.XML

<?xml version="1.0" encoding="UTF-8"?>
<player name="" account="" sex="" lookdir="1" exp="4200" voc="" level="8" access="0" cap="380" maglevel="0" soul="0" maxdepotitems="1000" lastlogin="0" married="" stamina="1660">
 <spawn x="" y="" z=""/>
 <temple x="" y="" z=""/>
 <health now="190" max="190" food="0"/>
 <mana now="40" max="40" spent="0"/>
 <skull redskulltime="0" redskull="0"/>
 <look type="128" head="0" body="94" legs="126" feet="81" 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/>
 <spells/>
 <blessings/>
 <inventory>
   <slot slotid="1">
     <item id="2475"/>
   </slot>
   <slot slotid="2">
     <item id="2173"/>
   </slot>
   <slot slotid="3">
     <item id="1988">
       <inside>
         <item id="2456"/>
         <item id="2190"/>
         <item id="2182"/>
         <item id="2160" count="2"/>
         <item id="2120"/>
       </inside>
     </item>
   </slot>
   <slot slotid="4">
     <item id="2476"/>
   </slot>
   <slot slotid="5">
     <item id="2516"/>
   </slot>
   <slot slotid="6">
     <item id="2392"/>
   </slot>
   <slot slotid="7">
     <item id="2477"/>
   </slot>
   <slot slotid="8">
     <item id="2643"/>
   </slot>
   <slot slotid="10">
     <item id="2544" count="1"/>
   </slot>
 </inventory>
 <depots>
   <depot depotid="1">
     <item id="2590">
     </item>
   </depot>
 </depots>
 <storage>
 </storage>
</player>

obs: o Char_Base.XML

que esta acima é um exemplo se quiser que o personagem no inicio seja diferente mude o que quiser mas deixe os campos que estão em branco do jeito que estão.

Agora devemos ter as pastas + ou - assim

WWW/

-site_ot/

-bases/

-Char_Base.XML

-Acc_base.XML

certo agora vamos criar na pasta site_ot/ crie o arquivo config.inc.php

ele guarda algumas configuração que iremos usar varias vezes por isso vamos guarda-los em um único arquivo:D

 

config.inc.php

<?php
 $bases = "./bases/";   //local onde estão as bases tanto das contas como dos personagens
   $serverdata = "./";     /*endereso da pasta data do seu servidor. ex: C:/ot/data/   */
   /* Cordenadas de onde o jogador ira aparecer ao se logar */
 $spawn["x"] = "793";    // X
 $spawn["y"] = "1014";  // Y 
 $spawn["z"] = "7";       // Z
 /* Cordenadas do tenplo inicial */
 $temple["x"] = "793";    // X
 $temple["y"] = "1014";  // Y
 $temple["z"] = "7";       // Z
?>

Vermelho:onde estamos abrindo e fechando a Tag do php.

Azul:As variaveis que usaremos varias vezes no próximos arquivos.

Sublinhado :Os valores atribuídos as variáveis

Verde:Os comentários que explicam para que cada variável será usada.(eles não surtem efeito nenhum no código)

osb: na hora de colocar o caminho para a pasta data do seu servidor não esquece de que se você colocar C:\ot\data\ ocorrera um erro pois para o php / é diferente de \

 

Certo agora fazer o nosso primeiro formulário o pra criar a conta e o personagem junto (quase igual ao que o Eltrus fez no seu tutorial) com o nome:

formulario_acc.html

<html>
   <head>
       <title>Criar conta</title>
   </head>
   <body>
       <form[color=Blue] method="post" [/color]action="cria_acc.php">
           Numero da conta<br/>
           <input type="text" name="acc"/><br/>
           Senha<br/>
           <input type="password" name="pass"/><br/>
           Nome(personagem)<br/>
           <input type="text" name="name"/><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" /><br/>
       </form>
   </body>
<html>

Azul:O jeito que o formulario será enviado o post é o mais segura pois o usuário não poderá muda-los depois.

Vermelho:para onde esse formulario será enviado.

agora veremos o grandioso(é grande mesmo) cria_acc.php ,iremos velo em partes pois ele é muito grande....

1°parte

include("config.inc.php");

a função include vai adicionar no inicio do nosso arquivo o conteúdo do arquivo config.inc.php assim não precisamos defini-las aqui de novo e se precisarmos mudar alguma mudamos no config.inc.phpif

 

2°parte: if que não acaba mais ^^

if(IsSet($_POST["acc"]) && IsSet($_POST["pass"])){
if(!is_nan($_POST["acc"])){
if(strlen($_POST["pass"]) < 20 || strlen($_POST["pass"]) > 3){
if(!file_exists($serverdata."accounts/".$_POST["acc"].".xml")){
if(IsSet($_POST["name"])){
if(!@strpbrk($_POST["name"],"*/\!@#$%")){

if(!file_exists($serverdata."players/".$_POST["name"].".xml")){

linha2: verifica se o numero da conta é numérico, mas por algum motivo ela a função is_nan diz SIM se acc$_POST["acc"](que é a variável que agora guarda o numero da conta) não for um numero, mas queremos que elas diga SIM se for um numero, por isso colocamos uma ! antes da função para que ela diga a respostas oposta ou seja se ela quiser dizer sim ela diz não ^^.(o mesmo vale para todas as vezes que o ! aparecer antes da função)

linha3:verificamos se a senha tem um mínimo de digito e um maximo com a função

strlen(obs: $_POST["pass"]e onde esta guardada a senha ) que nos diz quantos dígitos tem o que esta dentro daquela variável.

obs: o || tem o mesmo significado que OR(ou).

linha4: vamos ate a pasta do servidor ver se já tem uma conta com esse numero e 3 linha mais em baixo verificamos a mesma coisa só que com o Jogador. lembra da variável $serverdataque definimos antes olha onde estamos usando elas.

linha1: aqui usamos a função IsSet pra ver se o numero da conta e a senha estão preenchidos ou não e na ante-penultima linha fazemos o mesmo com o nome do personagem($_POST["nome"]).

linha5:estamos verificando se o nome do personagem não possui caracteres especiais, a @ esta manipulado a função strpbrkpois elas não serve par dizer verdade caso ache um daqueles caracteres ela apenas diz falso se não achar,por isso usamos a @ para fazer ela dizer verdade caso consiga.

3°criando o xml da conta(Para entender melhor essa parte tenha a vista o arquivo:

Acc_base.xml)

/*Cria a Conta*/
$AccBase = simplexml_load_file($bases."Acc_base.xml");
$AccBase["pass"] = $_POST["pass"];
$char = $AccBase->characters->addChild('character');
$char->addAttribute('name',$_POST["name"]);
$char->addAttribute('worldid',"1");
$acc = fopen($serverdata."accounts/".$_POST["acc"].".xml", "x");
fwrite($acc,$AccBase->asXML());
fclose($acc);

agora sim conplica(nem tanto)

linha1 :bem nessa linha nos pegamos o arquivo Acc_base.xml e gardamos de uma forma muito dinamica na variavel $AccBase

Linha2:bem sabe a tag <account>que é a tag do XML da conta, agora ela esta na variavel $AccBase, então para colocarrmos a senha so presisamos atribuir um valor a um parametro basta faser como fisemos na linha 2 do codigo acima.

linha3: na linha 3 nois adicionamos uma nova tag chamda <character>(é a que garda que personagem a conta tem) dentro da tag <characters> que esta dentro da tag <account>(representada agora por $AccBase) e gardamos isso em uma nova variavel (para facilitar).

linha4 e 5: adicionamos a tag do personagem o atributo que garda seu nome e seu repectivo valor, asim como o atriboto que dis em qual mundo esta o personajem

linha 6: bem aqui comesamos a gravar a conta do jogador.a função fopen abre o arquivo(no caso o xml cojo nome é o numero da conta) nesse caso ele cria o arquivo e o abre.

linha 8: bem aqui gravamos dentro do arquvio da conta o seu conteudo.

mas por que usar $AccBase->asXML() é não só $AccBase? simples a variavel $AccBase não é uma cadei de carcters que representa um arquivo xml + sim um objeto que representa um xml por isso temos que usar $AccBase->asXML() que o que seja gravado no aquivo da conta seja uma cadeia de caracters que representa um XML.

linha9:fecha o arquivo e pronto o arquivo da conta foi criado con suseso.

 

Bem irei ficar por aqui com o tutorial pois o Post ja esta muito grade

na prosima parte do tutorial explicarei a parte que cria o XML do personagem.:bye:

Editado por maxsi
erros ao submeter o post

Compartilhar este post


Link para o post
Pedroddcunha    3
Pedroddcunha

Obrigado pela contribuição

 

 

- Aprovado -

Compartilhar este post


Link para o post
kleyne    0
kleyne

ei.. vc nao tem tutorial ou sabe algums lugar de tutorial explicado como faz ativação de e-mail

 

por exemplo:

 

qt a pessoa cria conta.. e receber a sena de baixo pelo e-mail... e ativa e dps receber outro e-mail e loga pelo site tu nao sabe?

Compartilhar este post


Link para o post
The Funto    0
The Funto

Valeu manin!

 

Muito bom seu tutorial....

 

Vai ajudar bastante gente!

Compartilhar este post


Link para o post
gugu995    0
gugu995

bom tutorial

 

Vai ajuda muita gente com isso

 

Vlws :D

Compartilhar este post


Link para o post
hiquizera552200    0
hiquizera552200

Vlws.. ótimo Tópico Muahaha' :P

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×