Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Caratteri speciali con XMLHttpRequest

    Salve a tutti..
    Non riesco a risolvere solo se compilo con il carattere & o ì è ò à ù #, non funzionano..
    Perchè?

    Ecco il codice ajax

    function modulo_aggiorna()
    {

    var titolo = document.form1.titolo.value;

    // code for IE7+, Firefox, Chrome, Opera, Safari
    if(window.XMLHttpRequest)
    {

    xmlhttp5 = new XMLHttpRequest();

    } else {

    // code for IE6, IE5
    xmlhttp5 = new ActiveXObject("Microsoft.XMLHTTP");

    }

    xmlhttp5.onreadystatechange = function()
    {

    if(xmlhttp5.readyState == 4 && xmlhttp5.status == 200)
    {

    document.getElementById("avvisi").innerHTML = xmlhttp5.responseText;

    modulo();

    }

    }

    xmlhttp5.open("GET", "prova.php?titolo="+ titolo, true);

    xmlhttp5.send();

    }

    pagina prova.php

    $sql = "UPDATE nomedb SET titolo='". $_GET['titolo'] ."' WHERE id='1'";

    if(mysql_query($sql, $connessione))
    {

    echo"OK";

    }

  2. #2
    eh... encodeURIComponent sul valore stringa passato ad ajax
    Il fatto è che i valori come & o # vengono fraintesi come separatori di query o hash, per assicurarsi che non vengano letti come tali devi fargli l' encodeURIComponent - per capire in cosa vengono trasformati:

    alert('&#='+encodeURIComponent('&#'))

    in questo modo non si presenta più il problema

    ps: SET titolo = $_GET['titolo']
    spero sia solo esemplificativo - mysql_escape

  3. #3
    Ciao, funziona...però si vedono caratteri che non li conosco, tipo sono trasformati così
    é&Ã_òù#=???????ùÃ_ò

    Non c'è modo che, per esempio l'apostrofo (') deve diventare & acute;, anche perchè se un giorno volessi fare una pagina modificando il title sul meta tag e facendo questa funzione con encodeURIComponent e diventa é&Ã_òù#=???????ùÃ_ò, su internet e su title diventa così é&Ã_òù#=???????ùÃ_ò, solo sulla pagina li mette corretto..

  4. #4
    Mh non ho capito bene dove vedi questi caratteri, se sul db o sulle pagine html.
    A regola dipende da php, PHP si prende cura nella risposta di effettuare la riconversione. Se invece ti riferisci al tuo DB, deve accettare UTF-8.

    Mi pare di capire che il problema a cui sei andato incontro POTREBBE essere più vasto: il tuo server e il tuo php e il tuo DB (o almeno qualcuno di questi) non è settato per l' utf-8 o almeno potrebbe trattarsi di questo.

    SET NAMES 'utf8' COLLATE 'utf8'
    SET CHARACTER_SET 'utf8'

    sono istruzioni che il tuo DB dovrebbe passare a php charset sql - potrebbe dipendere da questo, come da altro, non so dovrei conoscere cose del tuo server che non conosco.

  5. #5
    si parla sul DB, cioè il PHP che ti ho mandato poco fa è questo...
    Ma mi spieghi a cosa serve mettere mysql_real_escape_string?

    Sto provando e esercitando sul LOCALE con XAMPP..

    Allora, sul ajax ho messo questo codice

    xmlhttp5.open("GET", "prova.php?titolo="+ encodeURIComponent(titolo), true);

    Sul campo titolo inserisco
    &/é§°ç

    una volta salvato, registra sul db così

    &/é§°ç

  6. #6
    eh troppa carne al fuoco Cri.
    Comunque mysql_real_escape_string è essenziale: se un utente immette degli apici singoli nella stringa di testo che tu invii al database, questo ti può causare la troncatura della stringa SQL - nel migliore dei casi la query non è eseguita,nel peggiore l'utente lo fa apposta per poi fare seguire istruzioni che danneggiano il tuo db.

    mysql_real_escape_string pone un carattere di escape davanti a tutti gli apici, così che non possano essere fraintesi come chiusure premature della stringa: sql injection o sql attacks o in italiano

    ps che sul db sia &/é§°ç è normale. L'imnportante è che quando stampi dal db su php ti ridia i caratteri latini.

  7. #7
    Ah ok...
    Rida il carattere usando ECHO? O devo mettere un codice PHP che rida il carattere?

    Poi, un problema..
    Non inserisci l'apostrofo, doppievirgolette, etc...
    :-(

  8. #8
    Beh sì tu prelevi dal DB con una query, e la stampi su php con un echo: ridà il carattere se il tuo db era settato per utf-8 (penso lo sia).

    Non ho capito cosa intendi con non inserisce apostrofo e virgolette (cosa, e dove?) - ad ogni modo devi usare mysql_real_escape_string prima di aggiornare il tuo DB, e quello ti porrà un carattere di escape prima degli apostrofi.

  9. #9
    CIoè, se scrivo sul campo

    OGGI L'ANNO PIU BRUTTO
    oppure
    OGGI "FESTA DELLA DONNA"

    l'apostrofo e doppie virgolette non li inserisce..

  10. #10
    sì ma dove, nel db o sulla pagina php quando fai l'echo?
    Se è quet' ultimo potrebbe essere solo una questione di usare stripslashes prima dell' echo

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.