- Home
- Categorie
- Coding e Sistemistica
- PHP
- L'indirizzo email non viene aggiornato!
-
L'indirizzo email non viene aggiornato!
Buongiorno collegi,
ho bisogno del vostro aiuto per risolvere il problrma che vado a descrivere.
ho impostato un file PHP che estraendo l'indirizzo email dell'utente tramite il suo username gli possa consentire di aggiornarlo.
Lo script si connette al database MySQL.
Non riesco a risolvere il problema.
Ho testato la query UPDATE con MySQL Query Browser e funziona regolarmente.
Se eseguo lo script sembra che perdo il valore della nuova email ma non riesco a capire cosa causa la perdita del dato o di ambedue i dati compreso username.
Ho già impostato con successo uno script simile per modificare la password e quello funziona come mi aspettavo che accadesse e li uso una query UPDATE e ottengo il reindirizzamento alla pagina principale dell'are riservata.Codice PHP del file email.php:
[PHP]
<?php
// inizializzazione della sessione
session_start();$utente = $_GET['u'];
Global $utente;
// inclusione del file di classe (funzioni mysql)
-- omesso --
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
?>
-- parte della contenuto della pagina (HTML) --
<?php
// estrazione indirizzo email
$em_sql = $data->query("SELECT email_login FROM login WHERE username_login='".$utente."'");
// controllo sul numero di record presenti in tabella
if(mysql_num_rows($em_sql) > 0){
// estrazione dei record tramite ciclo
$em_obj = $data->estrai($em_sql);
$el = $em_obj->email_login;
Global $el;
}// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Cambia Email")){if(isset($_POST['username'])){
$username = addslashes(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
}if(isset($_POST['nuovaemail'])){
$nuovaemail = addslashes(filter_var($_POST['nuovaemail'], FILTER_SANITIZE_STRING));
}header("Location: privata.php?u=$username");
// query Update per aggiornare l'indirizzo e-mail
$data->query("UPDATE login SET email='$nuovaemail' WHERE username='$username'");
echo "<p>Indirizzo e-mail aggiornato con successo.</p>";}
else
{
// form per cambio email
?><div id="email">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div class="eti1">Username:</div>
<div class="cam1"><input name="username" type="text" class="irosso" value="<?php echo $utente; ?>" readonly="readonly" /></div>
<div class="cam2"> </div>
<div class="so1"></div>
<div class="eti1">E-mail attuale:</div>
<div class="cam1"><input name="email" type="text" class="irosso" value="<?php echo $el; ?>" /></div>
<div class="so1"></div>
<div class="eti1">Nuova E-mail:</div>
<div class="cam1"><input name="nuovaemail" type="text" class="irosso" /></div>
<div class="so2"></div>
<div class="pul1"><input name="submit" type="submit" value="Cambia E-mail" class="submit2" /></div>
</form>
</div><?php
}
?></div>
<?php
// chiusura della connessione a MySQL
$data->disconnetti();
?>
-- resto della pagina --Grazie a tutti voi! Buon 2013
-
Ciao antoniog2,
hai provato a mettere l'header sotto la query?
-
Scusa non ho capito cosa intendi.
Mi sa che c'è un errore nel passaggio delle variabili.
Vado a provare e poi ti faccio sapere.
-
[php]
// query Update per aggiornare l'indirizzo e-mail
$data->query("UPDATE login SET email='$nuovaemail' WHERE username='$username'");
echo "<p>Indirizzo e-mail aggiornato con successo.</p>";header("Location: privata.php?u=$username");
[/php]