php - Destroy most sessions -
i'm trying make simple battle script game, after battle , all, don't want player able click refresh , fight monster again.. or able hit submit on , on keep getting rewards winning.. need after person hit's attack button , battle shows results, make can't happen? if try session_destroy() logs player out aswell fixing problem :/
here's code help?
if(isset($_post['submit'])) { $player=$_session['username']; $playerstats1="select * users username='$player'"; $playerstats2=mysql_query($playerstats1) or die ("could not find player"); $playerstats3=mysql_fetch_array($playerstats2); $pokemonstat1="select * user_pokemon belongsto='$player' , slot='1'"; $pokemonstat2=mysql_query($pokemonstat1) or die ("could not find pokemon"); while($row = mysql_fetch_array($pokemonstat2)){ $yourmonster="select * pokemon name='".$row['pokemon']."'"; $yourmonster2=mysql_query($yourmonster) or die ("cannot select battle pokemon"); $yourmonster3=mysql_fetch_array($yourmonster2); $monstername=$_session['pokemon']; $monstername=strip_tags($monstername); $selmonster="select * pokemon name='$monstername'"; $selmonster2=mysql_query($selmonster) or die ("cannot select battle pokemon"); $selmonster3=mysql_fetch_array($selmonster2); $totalskill=$yourmonster3[att] * $row['level'] + $selmonster3[att] * 5; $randomnumber=rand(1,$totalskill); if($randomnumber<=$yourmonster3[att] * $row['level']) { echo "<center>"; echo "you have won!"; echo "</center>"; } else { echo "<center>"; echo "you have lost!"; echo "</center>"; } } } updated again.
$battle_id = md5(uniqid(rand(), true)); echo $battle_id; // $battle_id 9a8ab59df7079208843086e9b49a7862 // initialise battle log if(!isset($_session['battle_log']) || !is_array($_session['battle_log'])) { $_session['battle_log'] = array(); } // check if battle hasn't been played if(!in_array($battle_id, $_session['battle_log'])) { // add played battle log // ... battle code goes here if(isset($_post['submit'])) { $player=$_session['username']; $playerstats1="select * users username='$player'"; $playerstats2=mysql_query($playerstats1) or die ("could not find player"); $playerstats3=mysql_fetch_array($playerstats2); $pokemonstat1="select * user_pokemon belongsto='$player' , slot='1'"; $pokemonstat2=mysql_query($pokemonstat1) or die ("could not find pokemon"); while($row = mysql_fetch_array($pokemonstat2)){ $yourmonster="select * pokemon name='".$row['pokemon']."'"; $yourmonster2=mysql_query($yourmonster) or die ("cannot select battle pokemon"); $yourmonster3=mysql_fetch_array($yourmonster2); $monstername=$_session['pokemon']; $monstername=strip_tags($monstername); $selmonster="select * pokemon name='$monstername'"; $selmonster2=mysql_query($selmonster) or die ("cannot select battle pokemon"); $selmonster3=mysql_fetch_array($selmonster2); $totalskill=$yourmonster3[att] * $row['level'] + $selmonster3[att] * 5; $randomnumber=rand(1,$totalskill); if($randomnumber<=$yourmonster3[att] * $row['level']) { echo "<center>"; echo "you have won!"; echo "</center>"; } else { echo "<center>"; echo "you have lost!"; echo "</center>"; } } } $_session['battle_log'][] = $battle_id; }else { echo "don't try cheat..."; }
simply set value in session indicating battle has been played user. can check against value see if user has played battle already.
the value save in session unique, battle id. if don't have can create unique battle reference making signature of unique values in battle. so:-
$battle_id = md5($player.$row['pokemon'].$monstername); // $battle_id 9a8ab59df7079208843086e9b49a7862 at start of script initialise log of battles played:-
// initialise battle log if(!isset($_session['battle_log']) || !is_array($_session['battle_log'])) { $_session['battle_log'] = array(); } then before start of battle check if hasn't been played
// check if battle hasn't been played if(!in_array($battle_id, $_session['battle_log'])) { // ... battle code goes here // add played battle log $_session['battle_log'][] = $battle_id; } so along these lines should work:-
// initialise battle log if(!isset($_session['battle_log']) || !is_array($_session['battle_log'])) { $_session['battle_log'] = array(); } if(isset($_post['submit'])) { $player=$_session['username']; $playerstats1="select * users username='$player'"; $playerstats2=mysql_query($playerstats1) or die ("could not find player"); $playerstats3=mysql_fetch_array($playerstats2); $pokemonstat1="select * user_pokemon belongsto='$player' , slot='1'"; $pokemonstat2=mysql_query($pokemonstat1) or die ("could not find pokemon"); while($row = mysql_fetch_array($pokemonstat2)) { $yourmonster="select * pokemon name='".$row['pokemon']."'"; $yourmonster2=mysql_query($yourmonster) or die ("cannot select battle pokemon"); $yourmonster3=mysql_fetch_array($yourmonster2); $monstername=$_session['pokemon']; $monstername=strip_tags($monstername); $selmonster="select * pokemon name='$monstername'"; $selmonster2=mysql_query($selmonster) or die ("cannot select battle pokemon"); $selmonster3=mysql_fetch_array($selmonster2); // generate battle id based on unique battle details $battle_id = md5($player.$row['pokemon'].$monstername); $totalskill=$yourmonster3[att] * $row['level'] + $selmonster3[att] * 5; $randomnumber=rand(1,$totalskill); if($randomnumber<=$yourmonster3[att] * $row['level']) { echo "<center>you have won!</center>"; } else { echo "<center>you have lost!</center>"; } // check if battle hasn't been played if(!in_array($battle_id, $_session['battle_log'])) { // code below run once per battle // ... // add played battle log $_session['battle_log'][] = $battle_id; } } } note: bare in mind session temporary once session destroyed history of battles played lost persist data. create battle table this.
Comments
Post a Comment