• User Attivo

    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


  • ModSenior

    Ciao antoniog2,
    hai provato a mettere l'header sotto la query?


  • User Attivo

    Scusa non ho capito cosa intendi.
    Mi sa che c'è un errore nel passaggio delle variabili.
    Vado a provare e poi ti faccio sapere.


  • ModSenior

    [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]