Visualizzazione dei risultati da 1 a 3 su 3

Discussione: 'addslashes' globale

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    'addslashes' globale

    Ciao ..
    come posso risolvere in maniera 'globale' il problema degli eventuali apici che vengano scritti nelle caselle dei form, usati poi per andare a scrivere nel DB ?
    Potrei farlo singolarmente per ogni campo .. ma sarebbe veramente troppo impegnativo, considerando il numero dei campi e delle pagine interessate.
    Grazie mille

    Codice PHP:
    $nominativo  trim($_POST['nominativo']);
    $nominativo addslashes($nominativo); 
    Codice PHP:
    $query "INSERT INTO anagrafe 
                 (
                  id_ana,                                                                            
                  nominativo,        
                  indirizzo,         
                  cap,                                                 
                  comune,                                                   
                  provincia,         
                  natura_giuridica,                                    
                  .....
                  .....
                  .....
                  user,            
                  flag_canc           
                  ) 
             VALUES 
                 (
                  '',
                  '
    $nominativo',                           
                  '
    $indirizzo',         
                  '
    $cap',               
                  '
    $comune',            
                  '
    $provincia',         
                  '
    $natura_giuridica',  
                  .....
                  .....
                  .....
                  '
    $user',            
                  ''                    
                  )
             "


  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ci sono diverso opzioni...

    1. Attivi magic_quotes_gpc, ma te lo sconsiglio... tra l'altro è stato rimosso da php 5.4

    2. Usi PDO/Mysqli con i prepared statements. all'escape ci pensa il driver
    es
    Codice PHP:
    $dbh = new PDO(...);
    ...
    $sth $dbh->prepare('SELECT * FROM tabella
                      WHERE campo < :campo AND campo2 = :campo2'
    );
    $sth->bindParam(':campo'$_POST['campo'], PDO::PARAM_INT);
    $sth->bindParam(':campo2'$_POST['campo2'], PDO::PARAM_STR);
    $sth->execute(); 
    3. Ti fai una funzione generica, che puoi usare ovunque
    es
    Codice PHP:
    class Query{
       public 
    $table;

       public function 
    insert($data = array()){
           
    $query 'INSERT INTO '.$this->table;
           
    $fields = array();
           
    $values = array();
           foreach(
    $data as $key => $value){
                
    $fields[] = $key;
                
    $values[] = mysql_real_escape_string($value);
           }
           
    $query .= ' ('.implode(',',$fields).') ';
           
    $query .= "VALUES ('".implode("','",$values)."')";
           
    mysql_query($query);
       }
    }

    // potresti quindi definirti

    class News extends Query{
         public 
    $table 'news_tbl';
    }

    // e richiamare

    $news = new News();
    $news->insert(array('title'=>$_POST['title'], 'body'=>$_POST['body'], ...)); 
    4. Fai un mix dei punti 2 e 3 .... cosa che ti suggerisco

    5. Affidati ad un ORM od una libreria esterna che ti gestisce il db. es doctrine

    PS: il codice in questo post potrebbe contenere errori

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Bè .. che dire ?
    Grazie !!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.