Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    57

    passaggio variabile dopo pulsante "Aggiorna"

    Ciao a tutti, ho il seguente codice, dove recupero con successo l'id da una pagina php: in un'altra pagina cerco di fare l'Update in un db recuperando la riga dall'id dello stesso database in questa maniera

    <?php
    $id = $_GET['id'];
    if (isset($_POST["cmdAggiorna"])) {
    $cognome = $_POST["txtCognome"];
    $sql = "UPDATE alunni SET COGNOME = '".$cognome."' WHERE id_PERSONA = '".$id."'";
    $result = $conn->query($sql);
    if($result){
    header("Location: inserimento-ok.php");
    } else {
    echo("<br>Inserimento non eseguito");
    }
    }
    ?>

    il problema è che dopo che clicco su "Aggiorna", la variabile $id non mantiene il suo valore ma "scompare" qualcuno potrebbe gentilmente darmi qualche dritta?

    GRAZIE

  2. #2
    Il codice mostrato è un rischi di sicurezza a causa di SQL Injection.

    Detto ciò, passa la variabile $id come parametro nella querystring alla pagina dove ti serve oppure (meno pulito ma a seconda della struttura del sito, forse unica soluzione praticabile) salvala in sessione e recuperala dalla sessione dove ti serve.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    57
    Grazie, ci provo e verifico!

  4. #4
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    C'è qualcosa di perverso in quello che hai detto.

    Aggiorna che vuol dire? Io ho inserito dei dati che sono stati registrati, quindi Aggiorna che vuol dire?

    Vuol dire che devo ricominciare da capo ad inserire nuovi dati?

    Perché se è così l'ID di cui parli è parte di un login? Cioè è l'identificativo di chi sta inserendo i dati o solo del record da aggiornare?

    Se è l'ID di chi ha effettuato il login, non può stare in una GET è folle. Piuttosto mettilo in una sessione, così ad ogni aggiornamento della pagina comunque ti rimane.

    Inoltre così non sei costretto ad usare nella stessa pagina sia GET che POST.

    Poi mi pare di capire che usi PDO, è stato creato per impedire di inserire nelle query dati direttamente provenienti dai campi di un form, non prima di un controllo.

    Questa roba è folle:
    Codice PHP:
    $sql "UPDATE alunni SET COGNOME = '".$cognome."' WHERE id_PERSONA = '".$id."'";
    $result $conn->query($sql); 
    molto meglio:
    Codice PHP:
    $sql 'UPDATE alunni SET COGNOME = :cognome WHERE id_PERSONA = :id';
    $statement $conn->prepare($sql);
    $statement->bindValue(':cognome'$cognomePDO::PARAM_STR);
    $statement->bindValue(':id', (int)$idPDO::PARAM_INT);
    if (
    $statement->execute))
      echo 
    'Perfetto, il record è stato aggiornato';
    else
      echo 
    'Qualcosa è andato storto e il record non è stato aggiornato.'
    Più lungo ma immensamente più sicuro, programmare in PHP a volte può essere più lungo che scrivere un romanzo, ma non dobbiamo farci prendere dalla fretta.

    E scusami se sembro cattivo, ma come dice Filippo Toso, quel codice è un rischio.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    57
    grazie Marcolino,s in effetti era un po' contorto, oltre che rischioso....comunque ho fatto come mi hai consigliato ed ho risolto...non senza fatica!
    Grazie a tutti!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.