Visualizzazione dei risultati da 1 a 10 su 10

Discussione: html entities e query

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144

    html entities e query

    Salve a tutti, sono nuovo del forum e mi affaccio a questo nuovo mondo della programmazione.
    Mi sto imbattendo da giorni in un problema che non riesco a risolvere.
    in php mi recupero alcune variabili in post provenienti da un form in cui sono presenti vari campi e uno in particolare mi fa impazzire. si tratta di una textarea in cui vi è una spiegazione di una ricetta e quindi il testo è lungo e il problema è che se metto uno spazio fra le parole la query per inserire nel database dà errore altrimenti no. ho provato la funzione html entities ma non ne vuole sapere. qualcuno può aiutarmi? so che magari sarà una domanda stupida ma non riesco a uscirne.
    grazie a tutti.
    Lorenzo

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, il campo del database in cui inserisci il testo della textarea di che tipo è?

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    soluzione per inserimento del testo in una query evitando anche le injection :

    Codice PHP:

    // ESEGUIRE LA CONNESSIONE PRIMA DI QUESTA PORZIONE DI CODICE


    $testo $_POST["testo"] ;

    if( 
    get_magic_quotes_gpc() )
    {
         
    $testo stripslashes($testo) ;
    }
    $testo mysql_real_escape_string($testo) ;


    // FOrgia la query
    $q "insert into tabella ( testo )values( '".$testo."' )" ;
    // Esegui e controlla
    error_reporting(E_ALL);
    $ris mysql_query($q)or die( "ERRORE : ".mysql_error() ) ; 
    Ovviamente e' solo un codice di esempio per testare il corretto funzionamento della insert, in versione release togli l'errore reporting e il die e gestisci gli errori come diocomanda

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    grazie per le risposte. il campo nel database è di tipo varchar ...

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    mettilo text, che var char ha un limite massimo impostato da utente e al massimo di 255 caratteri (se ti bastano ok altrimeti fai un controllo lato codice altrimenti ti tronca le stringhe)

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    cambiato il campo ma il problema è che lui mi prende gli accenti, virgolette ect presenti nel testo e non riesco a toglierle nemmeno con htmlentities. se io levo e lascio il testo senza accenti e roba varia funziona perfettamente.... di per se htmlentities funziona ma leva solo gli accenti sulle lettere mentre se scrivo "l'uccelletto" la parola rimane tale.

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    htmlentities (se tu leggessi le documentazioni ufficiali) vedresti che non fa altro che ricodificare la stringha on formato html per cui ogni carattere speciale viene trasformato nel relativo codice html.
    Accenti e quant'altro restano.
    OGGI, nel 2012, trovo una cosa folle dover ricorrere a quaste procedure per dover salvare dei testi. BISOGNA ASSOLUTAMENTE inizare a familiarizzare ed untilizzare unicode, e quindi sia le tabelle che gli script che le pagine web vanno impostate per gestire i caratteri utf-8.

    Questo unitamente all'utilizzi di procedurei simili a quella che ti ho postato ti servirà per poter salvare i dati senza problemi ulteriori di cofifica o di fallimento delle query nonche' abbatte quasi completamente le probabilità che l'untente possa sfruttare le tue procedure per eseguire sql injection nel tuo sistema.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    grazie mille per le risposte. ma scusa come faccio ad impostare utf-8? sul database credo di averlo già impostato, ma sul resto?cmq al momento ho risolto con html entities e addslashes. Il mio è un sito così di prova per imparare e quindi sono all'inizio....

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5
    Ciao, io sulla pagina dove avrò il form prima di tutto, prima anche di dichiarare le varie funzioni HTML scrivo:

    Codice PHP:
    <meta http-equiv="Content-Type" 
            
    content="text/html; charset=utf8"
    e prima di eseguire, magari di inserimento do un bel:

    ("SET NAMES 'utf8'");

    Ciao.

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Html nn ha funzioni, viene chiamato linguaggio ... ma fondamentalmente e' un formato per descrivere dati e gestirne la relativa visualizzazione.

    detto questo per gestire utf in una pagina web ti basta fare 2 cose fondamentali :

    1- impostare il file html con codifica utf-8
    2- impostare gli header html <meta http-equiv="Content-Type"
    content="text/html; charset=utf-8">


    Fatto ciò potrai stamparci dentro tranquillamente i caratteri utf-8.

    Set names ? Quello ti serve quando fai le query, MA se imposti le tabelle in utf8 se sono diversi dal quanto impostato(quindi e' sempre bene impostare correttamente)e cmq leggere sempre bene la documentazione ufficiale prima :

    http://dev.mysql.com/doc/refman/5.5/...onnection.html

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.