Jordan Ryan
Jordan Ryan

Reputation: 39

cant get session to save number PHP

im fairly new to PHP but I am trying to make a guessing game. the idea is you guess the number between 1-100 and the code is meant to have a randomly assigned code to guess until guessed, currently just working on the assigning the number. so it doesnt randomize everytime I attempt to guess.

<?php
session_start();
$_SESSION[var_answer] = rand (1, 100);
$var_number = $_REQUEST['number'];
if($var_number == $_SESSION[var_answer]){
    echo " That is correct ;)";
}
else if($var_number <0 || $var_number>100){
    echo " Sorry your guess has to be between 0 and 100";
}else if($var_number==" "||$var_number==""){
    echo " Please take a guess first!";
}else if($var_number < $_SESSION[var_answer]){
    echo " Smaller than mine";
}else if($var_number > $_SESSION[var_answer]){
    echo " Larger than mine";
}
echo '<br/><a href="RNGG.php"> return</a>';
?>

so far the number is randomizing but as I said isnt saving per session.

Upvotes: 2

Views: 1274

Answers (2)

user4035
user4035

Reputation: 23749

Look at this code:

$_SESSION[var_answer] = rand (1, 100);
$var_number = $_REQUEST['number'];
if($var_number == $_SESSION[var_answer]){
    echo " That is correct ;)";
}

You are overwriting the session variable every time the page is reloaded. As far as I understand, you want to store the number in session, until the person guesses it. Try this:

//put a random number into session, if the variable is not defined
if(!isset($_SESSION['var_answer']))
{
    $_SESSION['var_answer'] = rand (1, 100);
}

$var_number = $_REQUEST['number'];
if($var_number == $_SESSION['var_answer']){
    echo " That is correct ;)";
    //undefine the variable if it's guessed
    unset($_SESSION['var_answer']);
}

Upvotes: 1

웃웃웃웃웃
웃웃웃웃웃

Reputation: 11984

$_SESSION[var_answer] must be changed to $_SESSION['var_answer'] everywhere and it will solve your problem. So your code must be

<?php
session_start();
$_SESSION['var_answer'] = rand (1, 100);
$var_number = $_REQUEST['number'];
if($var_number == $_SESSION['var_answer']){
    echo " That is correct ;)";
}
else if($var_number <0 || $var_number>100){
    echo " Sorry your guess has to be between 0 and 100";
}else if($var_number==" "||$var_number==""){
    echo " Please take a guess first!";
}else if($var_number < $_SESSION['var_answer']){
    echo " Smaller than mine";
}else if($var_number > $_SESSION['var_answer']){
    echo " Larger than mine";
}
echo '<br/><a href="RNGG.php"> return</a>';
?>

Upvotes: 0

Related Questions