www.programadoresdejogos.com

[P D J - Programadores e Desenvolvedores de Jogos]
Bem-vindo: Qua Set 08, 2010 8:32 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 14 mensagens ] 
Autor Mensagem
 Título: [ DUVIDA - PHP ] Alguem ajuda? (Resolvido)
MensagemEnviado: Sex Fev 05, 2010 2:09 am 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
Oi pessoal, sou novo por aqui e meus conhecimentos em PHP e MySQL são pequenos ainda.

Vou tentar explicar da melhor forma o meu problema para que possam me ajudar, blz?

1 - Eu estou seguindo o tutorial aqui do PDJ.com sobre Web Games ...

2 - Esta tudo funcionando .. (http://paum.sytes.net:8080) Se estiver OFF é pq meu PC está desligado xD

3 - O problema eh o seguinte, qnd vc ataca um bixo, vc ganha DINHEIRO + EXPERIECIA, até ai tudo bem, só que se você ficar atualizando a página (F5) vc continua ganhando DINHEIRO e XP, e assim qualquer 1 fica MILHONARIO e lvl MAXIMO ne? ^^


É só ficar segurando o F5 dhasuduhas

Gostaria de saber, se tem alguma forma de fazer com que dps q o usuario matou o bixo (ou apanho do bixo) ele seja redirecionado para a pagina de inicio, ou entao que simplismente o F5 n funcione.

Abaixo o código da página Batalha.php (Para vcs analizarem, blz?)

http://paum.sytes.net:8080/batalha2.rar

Se alguem quiser dar um HELP pelo meu MSN eu agracederia ...

sapoboisk8@msn.com

Obs: Se eu corrigir esse problema eu vou longe, dps de estruturar o game vou começar a parte gráfica, Abraço galera!

Problema RESOLVIDO galera, obrigado pelas respostas ... afim de contribuir ao forum vou postar a solução que eu encontrei, blz?

A página batalha.php utilizava $_GET para transportar os dados (updates) para o servidor, então para que os espertinhos não ficassem apertando F5 e enviando 1000 vezes o mesmo update para o servidor eu utilizei apenas um comando: unset($_SESSION);

Este unset($_SESSION); desmonta o conjunto que acabou de ser criado pelos usuarios ... (o URL permanece igual, mas mesmo que vc re-atualize a pagina, o update é feito somente 1 vez no servidor)

Abraço a todos.[/b]


Editado pela última vez por Gatuno2 em Seg Fev 08, 2010 1:19 am, em um total de 1 vez.

Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 7:34 am 
Offline
Administrador
Administrador
Avatar do usuário

Registrado em: Seg Abr 21, 2003 7:02 pm
Mensagens: 923
Localização: Minas Gerais - Brasil
Não sei se ajuda, você pode redirecionar para uma página pelo PHP usando isso aqui:
Código:
header("Location: enderecodapagina.html|php|asp|htm|qqcoisa");


Abraços


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 8:01 am 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sáb Jan 10, 2004 5:58 pm
Mensagens: 791
Localização: My House
nao acompanhe o tuto mas:

1.
Nao user header pra isso
use:
include("index.php");
exit();

assim, vc desvia o fluxo do processamento pra outra pagina. oq gera menos sobrecarga de minimiza erros com os dados.

2.
A pessoa pode voltar a pag e dar f5 de novo, q continuara ganhando do msm geito
use o recurso de SESSIONS do PHP, assim vc tem controle das variaveis envolvidas no servidor
e
tipo, matou o monstro com id tal, tal monstro n pode + morrer! (detalhe, nunca use INT nod DB, pra esses tipos de id use BIGINT)
Fazendo isso e atrelando os monstros ao usuario em sessão corrente, vc mata qualquer possibilidade de um F5 ou um ataque elaborado funcionarem.

_________________
The_Eu ^_^ (www.8arte.net)
"Give me your hands, please leave here you fears!"

http://www.wildwitchproject.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 10:16 am 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
The_Eu escreveu:
nao acompanhe o tuto mas:

1.
Nao user header pra isso
use:
include("index.php");
exit();

assim, vc desvia o fluxo do processamento pra outra pagina. oq gera menos sobrecarga de minimiza erros com os dados.

2.
A pessoa pode voltar a pag e dar f5 de novo, q continuara ganhando do msm geito
use o recurso de SESSIONS do PHP, assim vc tem controle das variaveis envolvidas no servidor
e
tipo, matou o monstro com id tal, tal monstro n pode + morrer! (detalhe, nunca use INT nod DB, pra esses tipos de id use BIGINT)
Fazendo isso e atrelando os monstros ao usuario em sessão corrente, vc mata qualquer possibilidade de um F5 ou um ataque elaborado funcionarem.


Blz, vlw pelas respostas ... o problema é que ainda sou muito iniciante no PHP ^^

Eu consigo intender muito bem os códigos, porem n consigo modificalos muito ainda ...

Mas vou dar uma estudada, se alguem tiver algo + easy manda ai, abraço...


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 10:29 am 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
Obs: no finao do arquivo batalha.php existe uma função chamada:

mysql_close($con);

Ela me parece ok (acho que essa opção deveria fechar a conexao e impedir q a pagina ficasse sendeo re-atualizada neh?)

Estou errado?


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 11:20 am 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sáb Jan 10, 2004 5:58 pm
Mensagens: 791
Localização: My House
nao. essa funcao fecha o banco e nao tem relacao nenhuma com a conexao.

Recomendo vc pegar um manual (de preferencia um livro) sobre o basico do PHP 5

_________________
The_Eu ^_^ (www.8arte.net)
"Give me your hands, please leave here you fears!"

http://www.wildwitchproject.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 3:10 pm 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
The_Eu escreveu:
nao. essa funcao fecha o banco e nao tem relacao nenhuma com a conexao.

Recomendo vc pegar um manual (de preferencia um livro) sobre o basico do PHP 5


Ok, vo da uma estudade ... o problema é que eu não consigo "nomear este problema" para ir atras de uma solução ...

Acho que tem a ver com $_GET?


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 3:50 pm 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sáb Jan 10, 2004 5:58 pm
Mensagens: 791
Localização: My House
... n, n tem a ver com $_GET.
é questão de engenharia de soft msm.

quando se faz um algoritmo que opere entre cliente e servidor a coisa fica complicada assim msm.
Vc ta atribuindo o problema ao PHP, e não é ai. o servidor esta fazendo o trabalho dele correto, a falha foi na manipulação dos dados.

Sugiro vc pular esse problema, e ir em frente.
Estude algoritmo
E estude um pouco mais como funciona a transação de dados entre cliente e servidor. Talvez deixando esse tuto q vc esta seguindo de lado e fazendo um mais simples.
Acho melhor esquecer os tutorias de internet e comprar um livro de PHP

_________________
The_Eu ^_^ (www.8arte.net)
"Give me your hands, please leave here you fears!"

http://www.wildwitchproject.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 8:26 pm 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sex Jan 18, 2008 4:58 pm
Mensagens: 867
Localização: Brazil
Conseguiu? Eu te mandei o email assim que pude:
Citação:
Certo, faz assim
eu estou mudando o Desenvolverdores Online de hosting... To meio muuito sem tempo agora, na verdade ja era pra eu estar no metro indo pro trampo!

cria uma tabela asssim:

campo1: id do jogador
campo2: id da quest (isso ai se chama quest)

Ai quando o espertinho do jogador tentar fazer a quest, voce faz um select assim
select count(1) from tb_alguma_coisa where jogador = jogador que esta jogando AND quest = numero desta quest
Ai voce verifica se é maior que 0, se for, ele ja ganhou, se nao for, voce da o premio e adiciona nesta tabela um registro.


A proposito, o site ja esta no ar, talvez, se acessar uma pagina de erro, o DNS ainda nao atualizou onde voce mora...

_________________
Procurando por artigos?
Imagem
http://www.desenvolvedoresonline.com

Imagem
http://www.renatocron.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Fev 06, 2010 12:07 pm 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
rento escreveu:
Conseguiu? Eu te mandei o email assim que pude:
Citação:
Certo, faz assim
eu estou mudando o Desenvolverdores Online de hosting... To meio muuito sem tempo agora, na verdade ja era pra eu estar no metro indo pro trampo!

cria uma tabela asssim:

campo1: id do jogador
campo2: id da quest (isso ai se chama quest)

Ai quando o espertinho do jogador tentar fazer a quest, voce faz um select assim
select count(1) from tb_alguma_coisa where jogador = jogador que esta jogando AND quest = numero desta quest
Ai voce verifica se é maior que 0, se for, ele ja ganhou, se nao for, voce da o premio e adiciona nesta tabela um registro.


A proposito, o site ja esta no ar, talvez, se acessar uma pagina de erro, o DNS ainda nao atualizou onde voce mora...


Obrigado, tentarei ....

Mais alguma sugestão pessoal?


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Fev 06, 2010 12:35 pm 
Offline
Iniciante PDJer
Iniciante PDJer
Avatar do usuário

Registrado em: Qua Dez 28, 2005 7:57 pm
Mensagens: 28
@Gatuno2: uma possível solução é você fazer um log toda vez que ocorrer uma atualização (ganho de dinheiro + experiência) desse tipo e guardando a data (data em que o servidor recebeu esta requisição).

Assim na próxima atualização você pode comparar a data da nova requisição com a última requisição efetuada pra saber se é possível ou não fazer a atualização (talvez até dando uma diferença de tempo mínimo).

Nesse caso você vai precisar resolver alguns problemas:

- associar este log a um determinado usuário;
- fazer a função para guardar os dados no "log" e comparar se é possível ou não fazer uma nova atualização.

Tem n maneiras de fazer isso, você pode guardar este log em um cookie no próprio cliente, guardar em um bd no servidor ou até mesmo em um arquivo texto.

O x da questão mesmo é saber quando você fez esta última atualização e quando você pode fazer a próxima.

_________________
Vitor Almeida da Silva

Lead Programmer
MyPlay Mobile
http://www.myplaymobile.com

VSoftGames - programação, jogos e um pouco mais.
http://www.vsoftgames.com


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Fev 06, 2010 12:43 pm 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sex Jan 18, 2008 4:58 pm
Mensagens: 867
Localização: Brazil
Lancelot, nada de guardar informações no lado do cliente.
Nunca confie nele, muito menos no javascript para validar campos.

_________________
Procurando por artigos?
Imagem
http://www.desenvolvedoresonline.com

Imagem
http://www.renatocron.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Fev 06, 2010 10:48 pm 
Offline
Iniciante PDJer
Iniciante PDJer

Registrado em: Sex Fev 05, 2010 1:58 am
Mensagens: 8
Mais alguém?

Preciso de uma explicação bem detalhada ...

Pois sou iniciante no PHP :)

Abraço galera e obrigado as respostas anteriores.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Dom Fev 07, 2010 4:15 pm 
Offline
Membro PDJer
Membro PDJer
Avatar do usuário

Registrado em: Ter Jul 22, 2008 1:09 pm
Mensagens: 123
Localização: Paraná
Faça oq o The_Eu já falou, use session e estude PHP.


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 14 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Procurar por:
Ir para:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB