Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Insert testo con apici
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • A
      azocomposto User • 15 ott 2011, 13:53 ultima modifica di

      Insert testo con apici

      Ciao,
      ho la necessità di inserire in un campo della tabella mysql una frase o valori che contengono apici e caratteri speciali.
      Al momento della insert, lo script restituisce il seguente errore:
      [CODICE]
      Insert Error: 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 'a'', '22', '> Aggiungere tra i filtri: Sede - Disciplina/Reparto - Risorsa/Ambu' at line 8[/CODICE]

      Lo script è composto da:
      script di inserimento insert.php
      [php]<html><head><title>Inserisci record</title></head>
      <body>
      <?
      /* Change db and connect values if using online */
      $codice=$_POST['codice'];
      $descrizione=$_POST['descrizione'];
      $db="db01";
      $link = mysql_connect('localhost', 'aaa' , 'bbb');
      if (! $link)
      die(mysql_error());
      mysql_select_db($db , $link) or die("Select Error: ".mysql_error());
      $result=mysql_query("INSERT INTO sqlreporting (codice, descrizione) VALUES (
      '$codice',
      '$descrizione')") or die("Insert Error: ".mysql_error());
      mysql_close($link);
      print "Record added";
      ?>
      <form method="POST" action="insert_form.php">
      <input type="submit" value="Insert Another Record">
      </form>
      <br>

      <form method="POST" action="index.php">
      <input type="submit" value="Dbase Interface">
      </form>
      </body>
      </html>[/php]form html di inserimento form_insert.php
      [html]<html><head><title>Inserisci record</title>
      <style type="text/css">
      td {font-family: tahoma, arial, verdana; font-size: 10pt }
      </style>
      </head>
      <body>
      <table width="300" cellpadding="5" cellspacing="0" border="2">
      <tr align="center" valign="top">
      <td align="left" colspan="1" rowspan="1" bgcolor="64b1ff">
      <h3>Insert Record</h3>
      <form method="POST" action="insert_record.php">
      <?
      print "Enter codice: <input type=text name=codice size=20><br>";
      print "Enter descrizione: <textarea rows=10 name=descrizione cols=40></textarea><br>";
      print "<br>";
      print "<input type=submit value=Submit><input type=reset>";
      ?>
      </form>
      </td></tr></table>
      </body>
      </html>[/html]

      Come posso evitare questo errore?

      Grazie

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • S
        sandroid User Attivo • 15 ott 2011, 14:02 ultima modifica di

        Ciao azocomposto,
        in questi casi è necessario inserire un backslash per fare l'escape dei caratteri speciali.
        Ad esempio, se vuoi inserire nel campo la frase "nell'aria", dovrai scrivere: nell'aria.
        Ovviamente se hai più caratteri speciali dovrai inserire più backslash, uno prima di ogni carattere.

        Ciao.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • T
          thedarkita ModSenior • 15 ott 2011, 14:45 ultima modifica di

          Ciao azocomposto,
          lo script attualmente è vulnerabile a SQL injection.
          Dovresti almeno filtrare i dati in ingresso con mysql_real_escape prima di passarli nella query. Cosi facendo risolvi anche il problema relativo all'apostrofo che ti ha indicato sandroid.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • S
            sandroid User Attivo • 15 ott 2011, 14:56 ultima modifica di

            Ciao Thedarkita, giusto, in effetti ho dimenticato di specificarlo perché ho già attivata la funzione magic_quotes_gpc. O è comunque preferibile mysql_real_escape?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • T
              thedarkita ModSenior • 15 ott 2011, 15:05 ultima modifica di

              I magic_quotes verranno rimossi con php 6, per cui sarebbe preferibile fare un controllo e fare mysql_real_escape se necessario.
              Anche perchè se si cambia server in futuro e le impostazioni sono diverse, hai parecchio lavoro da fare per sistemare i problemi di sicurezza.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • S
                sandroid User Attivo • 15 ott 2011, 15:07 ultima modifica di

                Ok grazie del consiglio.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • A
                  andrearufo User Attivo • 15 ott 2011, 22:31 ultima modifica di

                  Io opterei per richiamare il post con una funzione come htmlentities o al massimo addslashes e quindi usare le funzioni inverse alla stampa degli elementi.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • T
                    thedarkita ModSenior • 15 ott 2011, 22:42 ultima modifica di

                    Fare le operazioni inverse è abbastanza inutile, htmlentities fà molto più di quello che è necessario e considerando che dovrebbe fare l'operazione inversa alla stampa consumerebbe più risorse.
                    addslashes è molto simile a mysql_real_escape_string non filtra tutta via i caratteri \x00, \n, \r, e \x1a considerando che mysql_real_escape_string è una funzione della libreria mysql sarebbe meglio utilizzare questa in quanto è stata realizzata appositamente per questo scopo.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • A
                      andrearufo User Attivo • 16 ott 2011, 10:05 ultima modifica di

                      Molto bene!

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      Caricamento altri post
                      Rispondi
                      • Topic risposta
                      Effettua l'accesso per rispondere
                      • Da Vecchi a Nuovi
                      • Da Nuovi a Vecchi
                      • Più Voti