2011-12-29 3 views
0

Bonjour les gars et les filles J'ai construit un script de combat mais maintenant j'ai remarqué quand j'essaye d'ajouter une nouvelle mise à jour SQL qui ne stocke pas le leader du gym dans une variable de session. Alors l'utilisateur va à battle.php? Gymleader = nickVariable de session non réglée

Ensuite, je prends le pseudo et le stocke dans une variable de session après l'avoir effacé pour l'injection de sql etc .. Puis je recherche le db pour savoir quels monstres " nick "montre alors le monstre et le script de la bataille principale entre en jeu. Quand ils vont à la salle de gym, ils les emmènent à battle.php? gymleader = nick mais une fois qu'ils entrent dans la bataille, ils les emmèneront au combat. php donc je pense que son stockage le "nick" puis l'utilisateur choisit un mouvement puis il les redirige juste à battle.php puis il stocke le vairable n'a encore rien?

Le côté bataille fonctionne parfaitement ne semble pas stocker $ _SESSION ['gymleader'] a dit que je pense qu'il stocke ti deux fois. Lorsque l'utilisateur vient d'abord à la page, il le définit correctement et puis ils choisissent un mouvement et les redirige vers battle.php et non battle.php? Gymleader = nick alors il met le gymleader n'a rien à deviner?

Voici le script de bataille

<?php 
include 'config.php'; 

print_r ($_SESSION); 
/// Here we unset the win/lost status 
unset($_SESSION['battle_won']); 
unset($_SESSION['battle_lost']); 



$_SESSION['gymleader'] = mysql_escape_string($_GET['gymleader']); 


//// here we get the users first monster 
$sql = "SELECT * FROM user_pokemon WHERE belongsto='".$_SESSION['username']."' AND slot=1"; 
$result = mysql_query($sql) or die(mysql_error()); 
$battle_get = mysql_fetch_array($result); 

$sql23 = "SELECT * FROM gyms WHERE leader='".$_SESSION['gymleader']."'"; 
$result23 = mysql_query($sql23) or die(mysql_error()); 
$battle_get23 = mysql_fetch_array($result23); 




/// Here we get the image of the pokemon and any other info we need 
$sql2 = "SELECT * FROM `pokemon` WHERE `name` = '" . $battle_get['pokemon'] . "'"; 
    $result = mysql_query($sql2) or die(mysql_error()); 
    $values = mysql_fetch_array($result); 




////// Now we make there hp up from there level 
$a = $battle_get['level'] ; 
$b = 5; 
$hpofuserpokemon = ($a * $B) ; 
///// We make a random number up to take the hp down by 
srand ((double) microtime()*1000000); 
$random_number = rand(0,10); 

srand ((double) microtime()*1000000); 
$random_number2 = rand(0,13); 
?> 
    <?php 
unset($_SESSION['battle_won']); 
unset($_SESSION['battle_lost']); 
///// now we check to see if user is all ready in a battle we don't want to fill up database with fake battles 

$sql12 = "SELECT * FROM battle WHERE username='".$_SESSION['username']."'"; 
$result12 = mysql_query($sql12) or die(mysql_error()); 
$battle_get12 = mysql_fetch_array($result12); 

/// Here we do if there is a result we echo out nothing. Else if there is no battles stored we make one for them seen has were nice 
if ($battle_get12['win'] == 1) 
    echo " "; 
else 

mysql_query("INSERT INTO battle 
(username, hp, win, pokemon1name, pokemon_pic, gympokemon1, gympokemon1hp, gympokemon1pic, levelofgym) VALUES('".$_SESSION['username']."','".$hpofuserpokemon."', 1,'".$battle_get['pokemon']."','http://www.pokemontoxic.net/Geodude.png' ,'".$battle_get23['gympokemon1']."','".$battle_get23['gympokemon1hp']."','".$battle_get23['gympokemon1pic']."','".$battle_get23['level']."') 
") or die(mysql_error()); 

$_SESSION['gymlevel'] = mysql_escape_string($battle_get23['level']); 

?> 
    <?php 
//// Here we check if users hp is under 0 or 0 meaning there dead 
if ($battle_get12['hp'] < 0) 
{ 
    echo "You Lost the battle !!"; 


    mysql_query("DELETE FROM battle WHERE username='".$_SESSION['username']."'") 
or die(mysql_error()); 
$_SESSION["battle_lost"] = 1 ; 
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=battle_select.php?type=gym">'; 

    die(); 

} 
else { 
print (""); 
} 
?> 
    <?php 
/// Here is the most inport thing if the gyms pokemon has less than 0hp we give them the money etc.... 
if ($battle_get12['gympokemon1hp'] < 0) 
{ 
    $result3123123 = mysql_query("UPDATE users SET money=money+60 WHERE username = '".$_SESSION['username']."'") 
or die(mysql_error()); 

$result3132131321 = mysql_query("UPDATE user_pokemon SET level=level+1 WHERE belongsto = '".$_SESSION['username']."' AND slot=1 AND pokemon = '".$battle_get['pokemon']."'"); 

    $result31231236 = mysql_query("UPDATE battle SET onpokemon=onpokemon+1 WHERE username = '".$_SESSION['username']."'") 
or die(mysql_error()); 



$blah = mysql_query("UPDATE users SET '".$_SESSION['gymleader']."'='1'WHERE username = '".$_SESSION['username']."'") 
or die(mysql_error()); 



echo"You have won the battle. Please go back to the gym list to battle again."; 
$_SESSION["battle_won"] = 1 ; 
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=battle_select.php?type=gym">'; 

    exit;  


    die(); 

} 
else 
    echo ""; 
?> 
    <?php 
//// Now we wanna check to see if user has pressed the button to attack i wonder if they have ? 

if(isset($_POST["action"])) 
{ 
    /// we take hp from the player 
    $hpdown = mysql_query("UPDATE battle SET hp=hp-".$random_number." WHERE username = '".$_SESSION['username']."'") 
or die(mysql_error()); 
    /// at the same time we take hp from the enermy 

    $enermy = mysql_query("UPDATE battle SET gympokemon1hp=gympokemon1hp-".$random_number2." WHERE username = '{$_SESSION['username']}'") 
or die(mysql_error()); 



    } 

?> 

a-t-on peut voir im régler la session de gymleader virable en haut de la page

$_SESSION['gymleader'] = mysql_escape_string($_GET['gymleader']); 

Mais quand ils se battent contre il va juste rafraîchir la la page vue a tout sur 1 page et re le regler?

et im obtenir une erreur sur le nouveau bit du code que j'ai ajouté

$blah = mysql_query("UPDATE users SET '".$_SESSION['gymleader']."'='1'WHERE username = '".$_SESSION['username']."'") 
or die(mysql_error()); 

Mais je suppose que c'est parce que rien est à côté de la session virable gymleader?

session a commencé en config.php avec le sql connecter

+0

Que dit exactement l'erreur? – Zefiryn

Répondre

0

Vous devez commencer la session d'abord pour enregistrer les données en elle. Utilisez php session_start

+0

La session est démarrée dans config.php – user1121083

0
session_start(); //Insert this here. 

print_r ($_SESSION); 
/// Here we unset the win/lost status 
unset($_SESSION['battle_won']); 
unset($_SESSION['battle_lost']); 

Vous devez commencer première session avant de l'utiliser, détruire ou il MHS.

+0

La session est démarrée dans config.php – user1121083