• Bem vindo à nossa comunidade - Quer se juntar ao resto dos nossos membros? Registre-se*Registros aprovados pela adminitração

Operadores lógicos no PHP com SQL do site

ShekCrowley

Honrado XPZ
Bom dia pessoal.


Estou remontando o website que baixei. Na verdade, ele é extremamente simples, e estou apenas remodelando alguns recursos que ele tem, criando um novo layout para ele. É uma investida e tanto! :D Porém, nem tudo é tão lindo, pois, estou a criar um recurso para "desbugar" os pontos. Ou seja, na ação, quando se submete o formulário, o PHP zera todos os pontos do Char cujo está na sessão do PHP. OK, funcionou tudo como esperava, mas, pensei em uma coisa que não tinha pensado.


E se alguém na barra de endereços trocar o nome do Char dele, para o nome de outro Char? Lógico, ele vai resetar os pontos do outro Char sem pertencer a conta dele (sessão dele).


O problema que enfrento e que preciso de ajuda, é como posso usar operadores lógicos para que, se o $char não pertence a $conta  de usuário, ele mostra um erro.


Sim... Eu já tentei de tudo o que tenho conhecimento no PHP, mas, não encontro essa solução. A princípio, eu fiz basicamente isso:


<?php
$verififc = mssql_query("select * from Character where Name = '$char'");
if(mssql_num_rows($verififc)>0) {
while($row = mssql_fetch_array($verififc)) {
if($_GET['s'] == 1) {
if($points_total == 0) {echo error("Não foi possível completar seu pedido. Os pontos de seu Char estão zerados!");}
elseif(!($char instanceof $user)) {echo error("Este personagem não pertence a sua conta.");}
else {echo sucess("Os pontos do personagem $char foram resetados com sucesso!");
}
}
?>


É claro... É parte do código. Mas, vejam que uso o !($char instanceof $user);


O $char retorna = "Nome do personagem", e o $user retorna = Login da conta.


Obrigado se alguém puder me ajudar. :)
 

s00x

my life, my style.
Estagiario
Não vai ser tão simples assim jovem.
Se você tem uma session, coleta os dados da session, não tem erro, mais não é apenas isso, primeiro você consulta se o usuário esta online, depois se a conta esta conectada, depois você passa para o segundo passo, que é zerar os status.

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Creio que este código te ajude, analisa bem a função, ela esta orientada é esta simples de entender.
 
 

ShekCrowley

Honrado XPZ
Oi @holeadm ! :D Hole, este procedimento eu já tecnicamente fiz, mas, ainda não apliquei porque estou fazendo tudo no BETA, entende? Depois que concluir outros processos, irei aplicar este procedimento aconselhável.


O único problema que ainda desejo buscar no momento é esse:

Código:
Por favor, Entrar ou Registrar para ver o conteúdo dos códigos!

Ok... Eu irei olhar o código. :D Obrigado por sua resposta.
 

preto157

Honrado XPZ
Até agora não entendi o que você quer fazer, você quer fazer um sistema para distribuir pontos, zerar todos os pontos ou desbugar um personagem que passou do limite para distribuir?
 

s00x

my life, my style.
Estagiario
Cara se o problema é só passar a url pelo navegador faz em ajax '-'
Nesse link tem um pouco de teoria e pratica: 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!

E nesse link aqui 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!

foi a forma usada pelo Leandro na musite, qualquer coisa pega o exemplo do Erick e veja qual é melhor para "interpretar".

Lembrando ajax é assíncrono, então ele atualiza diferentes partes do código sem recarregar a página pro completo, no caso ele só recarrega o que tiver no response.
 

ArthurQueiroz

Honrado XPZ
Código:
Por favor, Entrar ou Registrar para ver o conteúdo dos códigos!

se intendi você que que ele faça uma verificação do valor:


Se variável $char pertence a variável $user ele retorna como ok e prcegue


Se variável $char não pertence a variável $user ele retorna como erro e imprimi uma mensagem de erro


porém se trocar o char ele retorna positivo


certo mais esse código é só uma verificação via get, pra resolver isso vc teria que pensar em algo via post ou ajax como o colega citou


ou você teria que vericar via sql, se $user está na coluna dbo.MuOnline.charakter.id e quando declar deveria colocar como $user = 'id';


é não é bem isso daria mais trabalho mais e mais seguro por que ele verificaria direto do banco de dados e do valor via get
 

ShekCrowley

Honrado XPZ
Via ajax? Bem... Então, terei que aprender a linguagem também.... Obrigado :D


@ArthurQueiroz, eu entendi, mas, essa verificação seria feita fora do IF e ELSE, correto? Passando todo a função via variável, por exemplo?
 
Editado por um moderador:

s00x

my life, my style.
Estagiario

navossoc

Novato XPZ
#morri


Sugiro esquecer tudo que foi dito aqui.


1º instanceof não faz o que você imagina.


Por favor, Entrar ou Registrar para ver o conteúdo das URLs!



É usado para verificar se uma classe é instância de outro tipo de classe (herança e afins).


---


O jeito mais simples de resolver o seu problema (que é válido e deve ser corrigido) seria assim:


$verififc = mssql_query("select * from Character where Name = '$char'");


Por


$verififc = mssql_query("select * from Character where Name = '$char' and AccountId='$user'");


Estou considerando que $char seja uma string com o nome do personagem e $user seja uma string com o login do usuário (vindo da session).


Isso resolve o problema de verificar se o personagem pertence a conta ou não.


Assim, mesmo que o usuário mude o nome do personagem (propositalmente), esse personagem terá de estar na conta logada.


Detalhe: tome cuidado com dados que você recebe do usuário, se não forem devidamente tratados você abre brechas pelo site.


Fique atento também a collation (principalmente o case-sensitive) para garantir que o personagem joao não seja o mesmo que JOAO.


[]'s
 
Editado por um moderador:

ShekCrowley

Honrado XPZ
Gente... Eu agradeço muitíssimo pela ajuda de todos vocês, sinceramente. Obrigado! Eu fiquei horas sentado no PC analisando a estrutura do código, e não entendia o por quê de não funcionar. Depois de analisar, eu percebi que o erro era na Query, que não estava retornando a confirmação certa, pois, a coluna = 'nome_do_char' que eu buscava não existia no BD.


Eu executei a Query no Banco de Dados, e percebi isso, e então eu consegui resolver este grande problema com isso:


<?php
$chek = mssql_fetch_array(mssql_query("SELECT Name, AccountID FROM Character WHERE Name ='$char' AND AccountID ='$user'"));
if($chek['Name'] != $char) { echo error("Este personagem não pertence á sua conta!"); } else {
}?>


Toda hora que o ser de Deus alterar o nome na URL do site, o ERRO é emitido da forma que eu queria. :heart:


Agora... É só incluir o sistema de se segurança sobre o SQL_inject que fiz, e feito!


E... @heeladm, sobre o Ajax que você disse, me desculpe, mas, como mencionei eu não conheço nada a respeito e não sabia que era HTML, XML e JavaScript... Quero aprender a mexer com isso em breve. ;)


Meus amigos, obrigado por suas sugestões e ensinamento. :D Obrigado mais uma vez.
 
Topo Bottom