Session variable "balance" does not update

1

I have a problem that has never happened to me before. My balance session variable does not update on the .php page. It is updated in the database after an UPDATE. But the page is only updated if I log out and re-enter. What will be the problem?

These are my session pages

//init.php
<?php   
session_start(); 
mysql_connect('localhost','root','usbw');   
mysql_select_db('cern_cn');     
date_default_timezone_set('Europe/Lisbon'); 

?>
//login.php
<?php   
include ('init.php');
include ('con_cern_db.php');    
session_regenerate_id();

//CONSULTA DO UTILIZADOR    
$consulta="Select * from login where username='" . $_POST['username'] . "' and password='" . $_POST['password'] . "' AND saldo AND id";     
$resultado=mysql_query($consulta);  

if (mysql_num_rows($resultado)>0) //SE O EMAIL E A PASSWORD COINCIDIREM     
{       
    //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA         
    $linha=mysql_fetch_array($resultado); 
    //COLOCA O EMAIL EM SESSAO 

    $_SESSION['username']=$linha['username'];
    $username=$_SESSION['username'];

    $_SESSION['modo']=$linha['modo'];

    $_SESSION['saldo']=$linha['saldo'];
    $saldo=$_SESSION['saldo'];

    $_SESSION['id']=$linha['id'];
    $id=$_SESSION['id'];

    //REDIRECCIONA A PAGINA PARA A PAGINA SECRETA       
    header("location: index.php");      
}   
else //CASO NAO COINCIDAM   
{   
    //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
    header("location: index.php?erro=1");  
}        
?>

That's what I call it

<?php            

if (isset($_SESSION['username'])) //SE EXISTIR AUTENTICAÇÃO            
 {              

    echo ' Olá ' . $_SESSION['username'] . '.<br/>';        

    echo '  ' . $_SESSION['saldo'] . '.Créditos<br/>';          
    //echo ' Modo ' . $_SESSION['modo'] . '.<br/>';     
   echo " ";

    //--------------------------//              
    //TODO O CODIGO PRIVADO AQUI//              
    //--------------------------//                               

}             
else //CASO NÃO ESTEJA AUTENTICADO             
{               
    echo 'Esta é uma àrea reservada, só utilizadores podem ter acesso.';             
 }      
?> 
//logout.php
<?php   
include ('init.php');   
session_destroy();  
header("location: index.php"); 
?>
    
asked by anonymous 26.09.2015 / 19:19

1 answer

2
##########login.php##############
<?php 
include('init.php');
session_start(); 

//CONSULTA DO UTILIZADOR    
$consulta="Select * from login where username='" . $_POST['username'] . "' and password='" . $_POST['password'] . "' AND saldo AND id";     
$resultado=mysql_query($consulta);  

    if (mysql_num_rows($resultado)>0) //SE O EMAIL E A PASSWORD COINCIDIREM     
    {       
    //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA         
    $linha=mysql_fetch_array($resultado); 
    //COLOCA O EMAIL EM SESSAO 

    $_SESSION['username']=$linha['username'];
    $username=$_SESSION['username'];

    $_SESSION['modo']=$linha['modo'];

    $_SESSION['saldo']=$linha['saldo'];
    $saldo=$_SESSION['saldo'];

    $_SESSION['id']=$linha['id'];
    $id=$_SESSION['id'];

    //REDIRECCIONA A PAGINA PARA A PAGINA SECRETA       
    header("location: index.php");      
    }   
    else //CASO NAO COINCIDAM   
    {   
    //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
    session_destroy();
    header("location: index.php?erro=1");  
    }        
?>


##########privada.php############

<?php            
session_start(); 

    if (isset($_SESSION['username'])) //SE EXISTIR AUTENTICAÇÃO            
    {              

    echo ' Olá ' . $_SESSION['username'] . '.<br/>';        
    $_SESSION['saldo'] = '300,00'; #exemplo de receber novo saldo.

    echo '  ' . $_SESSION['saldo'] . '.Créditos<br/>';          
    //echo ' Modo ' . $_SESSION['modo'] . '.<br/>';     
    echo " ";

    //--------------------------//              
    //TODO O CODIGO PRIVADO AQUI//              
    //--------------------------//                               

    }             
    else //CASO NÃO ESTEJA AUTENTICADO             
    {               
    echo 'Esta é uma àrea reservada, só utilizadores podem ter acesso.'; 

    $_SESSION = array();
    session_regenerate_id();
    session_unset();
    session_destroy(); #apenas com esse já resolve tudo mas teste com os outros pra analisar o comportamento
    header("location: login.php"); #voltar para a tela de login 
    }      
?> 



#########logout.php##############

//logout.php
<?php   
session_start(); 
    $_SESSION = array();
    session_regenerate_id();
    session_unset();
    session_destroy(); #se der certo pode remover os anteriores
    header("location: index.php"); 
?>

Fiz um projeto onde tem um var_dump da session e a  alteração de um pagina pra outra

http://sistemasti.16mb.com/david_concha/index.php

Segue código solicitado:



#########index.php###############
<?php
session_start();

$_SESSION['saldo']='450,00';
    echo 'var_dump($_SESSION) vai retornar o resultado abaxixo</br></br>';
    echo '<pre>'.var_dump($_SESSION).'</pre></br>';
    echo '<pre> Id da session: '.session_id().'</pre></br>';
?>
<a href="index2.php">alterar session na index2</a>



###########index2.php##################
<?php
session_start();

$_SESSION['saldo']='300,00';
    echo 'var_dump($_SESSION) vai retornar o resultado abaxixo</br></br>';
    echo '<pre>'.var_dump($_SESSION).'</pre></br>';
    echo '<pre> Id da session: '.session_id().'</pre></br>';
?>
<a href="index.php">voltar session com valor anterior na index</a>
    
28.09.2015 / 01:19