Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Escape campi form recuperati tramite POST

    Raga, sto impazzendo con l'insert di alcuni campi nel database, in effetti se nella form di inserimento scrivo ad esempio una parola con l'apostrofo tipo "MANO D'OPERA" nel database viene correttamente registrata, apostrofo compreso, mentre in fase di lettura con il file "visualizza.php" viene recuperato solamente "MANO D" troncando di fatto tutti i caratteri dopo l'apostrofo


    Codice PHP:

    //Preparo la query di visualizzazione

    $sql "SELECT * , DATE_FORMAT(Commesse.data,'%d/%m/%Y') as data FROM Commesse WHERE id='$_SESSION[id]'";


    // Lanciamo la query:$result = mysql_query($sql);

     
    if (mysql_num_rows($result) == 0

    { echo 
    "Non ho trovato niente con questo id: ".$_SESSION['id']; 

    echo 
    "<br />"; echo "La query eseguita è: ".$sql; exit; 

    }

    $dati mysql_fetch_assoc ($result);

    foreach (
    $_POST as $key => $value

    {    
    $_POST[$key] = addslashes($value);

    }

    $id $dati ['id'];
    $veicolo $dati['veicolo'];
    $targa $dati['targa']; 
    $km $dati['km'];$telaio $dati['telaio']; 
    $cliente $dati['cliente'];

    eccecc 

    Dove sbaglio secondo voi ?
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Che te ne fai del ciclo foreach e dell'addslashes?

    Per fare l'escape dei dati da inserire nel db si usa mysql_real_escape_string(), prova ad inserire i dati nel db facendo l'escape con questa funzione, quindi se nel form hai il campo veicolo, per l'insert userai

    Codice PHP:
    $sql "INSERT INTO commesse (veicolo, ...) VALUES ('".mysql_real_escape_string($_POST['veicolo']).', ... "); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Che te ne fai del ciclo foreach e dell'addslashes?

    Per fare l'escape dei dati da inserire nel db si usa mysql_real_escape_string(), prova ad inserire i dati nel db facendo l'escape con questa funzione, quindi se nel form hai il campo veicolo, per l'insert userai

    Codice PHP:
    $sql "INSERT INTO commesse (veicolo, ...) VALUES ('".mysql_real_escape_string($_POST['veicolo']).', ... "); 

    Ciao Alhazred,
    in realtà ho risolto con l'insert, il problema però mi è rimasto con la query di update, mi da errore

    questa la query

    codice:
    $sql = "UPDATE Commesse SET veicolo = UPPER ('$veicolo'), targa = UPPER ('$targa'), km = UPPER ('$km'), telaio = UPPER ('$telaio'), cliente = UPPER ('$cliente'), indirizzo = UPPER ('$indirizzo'), piva = ('$piva'), tel = ('$tel'), itr1 = UPPER ('$itr1'), itr2 = UPPER ('$itr2'), itr3 = UPPER ('$itr3'), itr4 = UPPER ('$itr4'), itr5 = UPPER ('$itr5'), itr6 = UPPER ('$itr6'), itr7 = UPPER ('$itr7'), itr8 = UPPER ('$itr8'), itr9 = UPPER ('$itr9'), itr10 = UPPER ('$itr10'), itr11 = UPPER ('$itr11'), itr12 = UPPER ('$itr12'), itr13 = UPPER ('$itr13'), itr14 = UPPER ('$itr14'), itr15 = UPPER ('$itr15'), for1 = UPPER ('$for1'), for2 = UPPER ('$for2'), for3 = UPPER ('$for3'), for4 = UPPER ('$for4'), for5 = UPPER ('$for5'), for6 = UPPER ('$for6'), for7 = UPPER ('$for7'), for8 = UPPER ('$for8'), for9 = UPPER ('$for9'), for10 = UPPER ('$for10'), for11 = UPPER ('$for11'), for12 = UPPER ('$for12'), for13 = UPPER ('$for13'), for14 = UPPER ('$for14'), for15 = UPPER ('$for15'), imp_1 = $imp_1, imp_2 = $imp_2, imp_3 = $imp_3, imp_4 = $imp_4, imp_5 = $imp_5, imp_6 = $imp_6, imp_7 = $imp_7, imp_8 = $imp_8, imp_9 = $imp_9, imp_10 = $imp_10, imp_11 = $imp_11, imp_12 = $imp_12, imp_13 = $imp_13, imp_14 = $imp_14, imp_15 = $imp_15, totale = $totale, n_tecnico = UPPER ('$n_tecnico'), data = STR_TO_DATE('$data', '%d/%m/%Y') WHERE id = '".$_SESSION['id']."'";
    questo l'errore

    codice:
    WHERE id = '66': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''), km = UPPER ('125000'), telaio = UPPER ('1212121212'), cliente = UPPER ('PROV' at line 1
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il campo id penso sia di tipo numerico, quindi gli apici attorno al valore non ci vanno: WHERE id=".$_SESSION['id'];

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    ho sistemato l'id, ma il problema è che se recupero dal db dei campi stringa che contengono l'apice, in fase di update la query fallisce
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il fatto di usare la funzione mysql_real_escape_string() al posto di addslashes() te l'ho consigliato proprio perché dovrebbe risolverti quel problema.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Ma sulla query di insert ho usato mysql_real_escape_string() infatti riesco correttamente ad effettuare l'insert che prima falliva, adesso dovrei implementare mysql_real_escape_string() anche sulla query di update ma non so come fare
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Risolto...

    codice:
    foreach ($_POST as $key => $value) {
        $_POST[$key] = addslashes($value);
    } 

    Grazieeeeee milleeeeeee
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

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.