Ir para conteúdo
Entre para seguir isso  
maxsi

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

Recommended Posts

maxsi    0
maxsi

bem aqui começa a 3 parte do tutorial caso não tenha lido a parte ^^

continuação:

 

bem como avia dito antes irei mostra e explicar agora o mostra_acc.php

em partes.

<?php 
   session_start();
   if(IsSet($_SESSION["nacc"])){
?>

iniciamos a secção para podermos pegar o valor da variável de secção e depois verificamos se ela tem um valor. se não tiver o Jogador vai de volta pra pagina de login para fazer isso no final da pagina colocaremos o seguinte código:

<?php
   }
   else{
       echo("<script>location=\"formulario_login.html\";</script>");
   }
?>

2° isso fica logo após fecharmos a tag do php no inicio do código.

<table border="1">
   <tr>
       <td>Nome</td>
       <td>Excluir?</td>
   </tr>

esse é o inicio da tabela que mostraremos ao jogador após ele se logar.

<?php
       $acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");

caregamos novamente a conta do jogador.

foreach($acc->characters->character as $char){
       echo("
       <tr>
           <td>
               ".$char["name"]."
           </td>
           <td><a href=\"apaga_char.php?char=".$char["name"]."\">Excluir</a></td>
       </tr>
       ");
       }

agora tem coisa nova: já que um jogador pode ter mais de um personagem por conta( e tag do que guarda o nome tem sempre o mesmo nome <character name=""> ) então usamos a função foreach(){} para guardar os parâmetro da tag <character> dentro da variável $char, e essa função ira ficar em LOOP ate que que não tenha mais valores fazendo isto linha a linha. ou seja no primeiro LOOP termos dentro da variável $char["name"] o nome do primeiro personagem no segundo LOOP o do segundo personagem e assim por diante ate que que não aja + personagem.

Depois escrevemos o corpo da nossa tabela e colocamos um link para excluir o personagem, ?char=".$char["name"]." e para sabermos na proxima pagina que vamos apagar.

?>
<table>
<a href="Formulario_personagem.php">criar novo personagem</a>
<a href="sair.php">sair</a>

agora fechamos a tag do php, concluimos a tabele e colocamos 2 link 1 é para o Jogador poder criar um novo personagem e o outro é para fazer LOGOUT.

 

agora juntando tudo temos o seguinte código no arquivo mostra_acc.php

<?php 
   session_start();
   if(IsSet($_SESSION["nacc"])){
?>
<table border="1">
   <tr>
       <td>Nome</td>
       <td>Excluir?</td>
   </tr>
<?php
       $acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");
       foreach($acc->characters->character as $char){
       echo("
       <tr>
           <td>
               ".$char["name"]."
           </td>
           <td><a href=\"apaga_char.php?char=".$char["name"]."\">Excluir</a></td>
       </tr>
       ");
       }
?>
<table>
<a href="Formulario_personagem.php">criar novo personagem</a>
<a href="sair.php">sair</a>
<?php
   }
   else{
       echo("<script>location=\"formulario_login.html\";</script>");
   }
?>

bem agora vamos criar o arquivo Formulario_personagem.php , mas por que ele primeiro e não apaga_char.php? por que para apagar primeiro tem que criar...^^

 

o código de arquivo é simples é a parte em php serve apenas para que pessoas não logas não vejam essa pagina.(e já foi usado na pagina mostra_acc.php e vai ser usado também na apaga_char.php)

<?php 
   session_start();
   if(IsSet($_SESSION["nacc"])){
?>
<html>
   <head>
       <title>criar personagem</title>
   </head>
   <body>
       <form method="POST" action="cria_char.php">
           Nome<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">
       </form>
   </body>
</html>
<?php
   }
   else{
       echo("<script>location=\"formulario_login.html\";</script>");
   }
?>

certo agora vamos a parte interessante que é como fazer para criar o personagem novo.

arquivo cria_char.php

<?php 
session_start();
if(IsSet($_SESSION["nacc"])){
include("config.inc.php");

inicimanos a secção, verificamos se ele esta logado e incluimos o arquivo de configuração.

if(IsSet($_POST["name"])){
if(!@strpbrk($_POST["name"],"*/\!@#$%")){
if(!file_exists($serverdata."players/".$_POST["name"].".xml")){

verificamos se o nome do personagem foi digitado, se não contem carcters especiais e se o personagem ja esiste.

/* coloca o personagme na conta */
$acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");
$char = $acc->characters->addChild('character');
$char->addAttribute('name',$_POST["name"]);
$char->addAttribute('worldid',"1");
file_put_contents($serverdata."accounts/".$_SESSION["nacc"].".xml", $acc->asXML());

carregamos o XML da conta, adicionamos o personagem e depois actualizamos o XML com a função file_put_contents()

/* cria o personagem */
$CharBase = simplexml_load_file($bases."Char_Base.xml");
$CharBase["name"] = $_POST["name"];
$CharBase["account"] = $_SESSION["nacc"];
$CharBase["sex"] = $_POST["sex"];
$CharBase->spawn["x"] = $spawn["x"];
$CharBase->spawn["y"] = $spawn["y"];
$CharBase->spawn["z"] = $spawn["z"];
$CharBase->temple["x"] = $temple["x"];
$CharBase->temple["y"] = $temple["y"];
$CharBase->temple["z"] = $temple["z"];
$char = fopen($serverdata."players/".$_POST["name"].".xml", "x");
fwrite($char,$CharBase->asXML());
fclose($char);
echo("<script>alert(\"Seu novo personagem foi criado, Divritase\");location=\"mostra_acc.php\";</script>");

aqui fasemos basicamente o mesmo que fisemos quando criamos a conta( ja que criamos um personagem junto)

 

juntando tudo no cria_char.php temos

<?php 
   session_start();
   if(IsSet($_SESSION["nacc"])){
       include("config.inc.php");
       if(IsSet($_POST["name"])){
           if(!@strpbrk($_POST["name"],"*/\!@#$%")){
               if(!file_exists($serverdata."players/".$_POST["name"].".xml")){
                   /* coloca o personagme na conta */
                   $acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");
                   $char = $acc->characters->addChild('character');
                   $char->addAttribute('name',$_POST["name"]);
                   $char->addAttribute('worldid',"1");
                   file_put_contents($serverdata."accounts/".$_SESSION["nacc"].".xml", $acc->asXML());
                   /* cria o personagem */
                   $CharBase = simplexml_load_file($bases."Char_Base.xml");
                   $CharBase["name"] = $_POST["name"];
                   $CharBase["account"] = $_SESSION["nacc"];
                   $CharBase["sex"] = $_POST["sex"];
                   $CharBase->spawn["x"] = $spawn["x"];
                   $CharBase->spawn["y"] = $spawn["y"];
                   $CharBase->spawn["z"] = $spawn["z"];
                   $CharBase->temple["x"] = $temple["x"];
                   $CharBase->temple["y"] = $temple["y"];
                   $CharBase->temple["z"] = $temple["z"];
                   $char = fopen($serverdata."players/".$_POST["name"].".xml", "x");
                   fwrite($char,$CharBase->asXML());
                   fclose($char);
                   echo("<script>alert(\"Seu novo personagem foi criado, Divritase\");location=\"mostra_acc.php\";</script>");
               }
               else{
                   echo("<script>alert(\"Este Personagme Já exite\");location=\"Formulario_personagem.php\";</script>");
               }
           }
           else{
               echo("<script>alert(\"o nome do Personagme não pode ter caracters especiais\");location=\"Formulario_personagem.php\";</script>");
           }
       }
       else{
           echo("<script>alert(\"digite um nome para seu Personagme\");location=\"Formulario_personagem.php\";</script>");
       }
   }
   else{
       echo("<script>location=\"formulario_login.html\";</script>");
   }
?>

certo prosima parte apagado o personagem....

arquivo apaga_char.php

/* apaga o personagem da conta */
$acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");
$i=0;

caregamos o arquivo da conta

e criamos uma variavel com valor 0

foreach($acc->characters->character as $char){
   if($char["name"] == $_GET["char"]){
       unset($acc->characters->character[$i]);
       break; 
   }
   $i++;
}

o foreach de novo, agora verificamos se a linha que estanos e a do personagem que quemos apagar se for usamos a função unset para apagar essa linha e a função break; para para o foreach (pois ja apagamos a linha que queriamos enão não presisamos + dele), o $i++ fais o mesmo que $i = $i + 1; e serve para sabermos o numero da linha que estamos.

 

file_put_contents($serverdata."accounts/".$_SESSION["nacc"].".xml", $acc->asXML());
unlink($serverdata."players/".$_GET["char"].".xml");
echo("<script>alert(\"o personagem ".$_GET["char"]." foi apagado\");location=\"mostra_acc.php\";</script>");

atutalizamos o XML da conta e usamos a função unlink para apagar o XML do personagem.

 

e juntando tudo no arquivo apaga_char.php temos:

<?php 
   session_start();
   if(IsSet($_SESSION["nacc"])){
       /* apaga o personagem da conta */
       $acc = simplexml_load_file($serverdata."accounts/".$_SESSION["nacc"].".xml");
       $i=0;
       foreach($acc->characters->character as $char){
           if($char["name"] == $_GET["char"]){
               unset($acc->characters->character[$i]);
               break; 
           }
           $i++;
       }
       file_put_contents($serverdata."accounts/".$_SESSION["nacc"].".xml", $acc->asXML());
       unlink($serverdata."players/".$_GET["char"].".xml");
       echo("<script>alert(\"o personagem ".$_GET["char"]." foi apagado\");location=\"mostra_acc.php\";</script>");
   }
   else{
       echo("<script>location=\"formulario_login.html\";</script>");
   }
?>

e agora o arquivo mais simples de todos o sair.php

<?php 
   session_start();
   session_destroy();
   echo("<script>location=\"formulario_login.html\";</script>");
?>

onde iniciamos a seção, depois destrimos seu contedudo e mandomos o Jogador para a pagina do formulario de LOGIN.

 

 

PARABENS agora você (teoricamente) SABE faser um saite para criar contas personagem e apagalos para um OT XML.

 

A sim verifique se a pasta esta organisada da seguinte maneira:

WWW/
   -site_ot/
       config.inc.php
       -formulario_acc.html
       -cria_acc.php
       -formulario_login.html
       -loga_acc.php
       -mostra_acc.php
       -Formulario_personagem.php
       -cria_char.php
       -apaga_char.php
       -sair.php
       -bases/
           -Char_Base.XML
           -Acc_base.XML

se não estiver organise ela sim para não dar erros

 

e é só.

:bye:

Compartilhar este post


Link para o post
Pedroddcunha    3
Pedroddcunha

Obrigado pela contribuição

 

 

- Aprovado -

Compartilhar este post


Link para o post
SpaceChimps    0
SpaceChimps

^^Boa Ty pelo post:)

Compartilhar este post


Link para o post
gugusinbansai    0
gugusinbansai

Ou vlw mais eu fiz todos e até configurei mas quando você cria conta ou char e clica submit fica a pagina em branco.

Compartilhar este post


Link para o post
akro    0
akro

Muito bom vlw ai!!

Compartilhar este post


Link para o post
maxsi    0
maxsi

gugusinbansai verifica se o javascrip do seu navegador não esta desativado.

Compartilhar este post


Link para o post
Lord' Raynex    0
Lord' Raynex

Cara, muito bom parabéns...

Dessa vez eu consigo criar um site pra um OT...

Abraços valew

Compartilhar este post


Link para o post
LFK    0
LFK

Estou mefu com esses php pra xml, mas agora com esse tuto devo conseguir.

parabéns ;p

Compartilhar este post


Link para o post
Nussaaa    0
Nussaaa

O Tutorial Ta Rox Mais E Muito Dificil De Entender..

 

Mesmo Assim

 

Obrigado Por Compartilhar.

Compartilhar este post


Link para o post
Celephyx    0
Celephyx

Muito bom o Tuto, Me ajudou bastante.. ;x

 

Celephyx~

Compartilhar este post


Link para o post
malboro2009    0
malboro2009

Lawl, hj em dia quem usa um server XML? :o

1 entre 50

Compartilhar este post


Link para o post
BadBR    0
BadBR

man não entendi nd eu li e re-li mais mesmo assim nd!

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.

×