aggiornamento variabile in sessione

Ciao ragazzi, ho un problemino con le sessioni,

ho una pagina dove l'utente ha la possibilità di cambiare la propria email, ma fatto questo ovviamente non deve riloggarsi per vedere i cambiamenti come faccio ad aggiornare la sessione?

<?php
if( isset($_POST['changeemail']) && (trim($_POST['changeemail']) == "Modifica indirizzo email")){
                            
$user_id=$_POST['user_id'];
$user_email=$_POST['user_email'];

mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");

}else{
?>
<form action="<?php print $_SERVER['PHP_SELF']?>" method="post">
<table id="box-impostazioni_03">
<tr>
<td colspan="2" height="10">&nbsp;</td>
</tr>
<tr>
<td><span class="font04">Nuovo indirizzo e-mail</span></td>
<td><input type="text" name="user_email" class="input_changemail" /></td>
</tr>
<tr>
<td colspan="2" height="20">&nbsp;</td>
</tr>
<tr>
<td colspan="2" valign="top" align="center">
<input name="changeemail" type="submit" id="changeEmailButton" value="Modifica indirizzo email" />
</td>
</tr>
</table>

                            
</form>
<?php
}    
?>
inviato 8 anni fa
Falco72
X 0 X

Potresti aggiornare il valore in sessione con il nuovo indirizzo email dopo l'esecuzione della query di update. Es:

$_SESSION[email] = $user_email;

 :bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

grazie Zeta sistemata!!

risposto 8 anni fa
Falco72
X 0 X

ora ho il problema di refresciare la pagina però, ho fatto una cosa del genere

<?php
if( isset($_POST['changeemail']) && (trim($_POST['changeemail']) == "Modifica indirizzo email")){ 
                     
$user_id=$_POST['user_id'];
$user_email=$_POST['user_email'];

mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");
                     
$_SESSION['user_email'] = $user_email;
                     
header("Refresh:1; URL=changemail.php");

}
?>

ma mi da questo Warning nella riga dove ho inserito "header("Refresh:1; URL=changemail.php");"

Warning: Cannot modify header information - headers already sent by

risposto 8 anni fa
Falco72
X 0 X

Zeta, gli indici alfanumerici di un array vanno sempre inseriti tra apici :

$_SESSION['email'] = $user_email;

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

L'errore che segnali indica che prima della riga

header("Refresh:1; URL=changemail.php");

viene stampato qualche valore nella pagina e questo impedisce il redirect. Ti consiglio di mettere questo codice ad inizio pagina e se l'errore persiste assegnerei ad una variabile la seguente riga di codice:

mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");

 :bye:

Zeta

P.S. x trashofmasters: cerco di essere il più preciso possibile nelle risposte e se mi sfugge qualche errore come quello da te segnalato è solo colpa della fretta! :bye:

risposto 8 anni fa
zeta80
X 0 X

nulla da fare!!!

 :tichedoff:

ti riporto esattamente la pagina

<?php
require_once('config.php');
require_once('db_vars.inc');
?>

codice html

<?php include ('include/header2.php'); ?>

<span class="voce-menu"><a href="" class="menu"><? echo $trad['chisiamo']; ?></a></span>

..........idem per altre voci di menù

..........

<?php
if( isset($_POST['changeemail']) && (trim($_POST['changeemail']) == "Modifica indirizzo email")){ 
                     
$user_id=$_POST['user_id'];
$user_email=$_POST['user_email'];

$update=mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");
                                    
$_SESSION['user_email'] = $user_email;

header("Refresh:1; URL=changemail.php");

echo "<div id=\"box-impostazioni_03\"><p>E-mail aggiornata correttamente!</p></div>"; 
                     
}else{
?>
<form action="<?php print $_SERVER['PHP_SELF']?>" method="post">
<table id="box-impostazioni_03">
<tr>
<td colspan="2" height="10">&nbsp;</td>
</tr>
<tr>
<td><span class="font04">Nuovo indirizzo e-mail</span></td>
<td><input type="text" name="user_email" class="input_changemail" /></td>
</tr>
<tr>
<td colspan="2" height="20">&nbsp;</td>
</tr>
<tr>
<td colspan="2" valign="top" align="center">
<input name="changeemail" type="submit" id="changeEmailButton" value="Modifica indirizzo email" />
</td>
</tr>
</table>
</form>
<?php
}

?>

<?php include ('include/footer.php'); ?>

risposto 8 anni fa
Falco72
X 0 X

Ciao il problema è proprio nella riga:

codice html

Ti do un consiglio: sposta questa parte di codice

if( isset($_POST['changeemail']) && (trim($_POST['changeemail']) == "Modifica indirizzo email")){ 

$user_id=$_POST['user_id'];
$user_email=$_POST['user_email'];

$update=mysql_query("update tbl_users SET user_email='$user_email' WHERE user_id='$_SESSION[user_id]'");

$_SESSION['user_email'] = $user_email;

header("Refresh:1; URL=changemail.php");

}

subito dopo le righe di "require".

La parte

echo "<div id=\"box-impostazioni_03\"><p>E-mail aggiornata correttamente!</p></div>";

deve essere settata con un altro codice "if" su una variabile che ti ritorna dalla pagina "changemail.php".

 :bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda