Visualizzazione risultati 1 fino 18 di 18

Discussione: Problema con le lettere accentate

  1. #1
    Guest

    Angry Problema con le lettere accentate

    salve raga.. avrei un piccolo problemino..

    qui su altervista ho caricato le pagine necessatie per una taggoard scorrevole..
    http://www.folliacity.net/portal.for...b65d785c256032

    e con questo codice l'ho implementata nel mio forum..
    Codice:
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="24"><img src="http://i60.servimg.com/u/f60/13/80/01/02/destra14.gif"></td>
    <td style="background-image:url(http://i60.servimg.com/u/f60/13/80/01/02/centro13.gif); background-repeat:repeat-x;"><iframe frameborder="0" width="100%" height="20" src="http://folliacity.altervista.org/testoscorrevole/minibox.php" scrolling="no"></iframe></td>
    <td width="43"><a href="http://www.folliacity.net/portal.forum?pid=12&sid=b11de55d6e926a5299b65d785c256032" target="_blank"><img src="http://i60.servimg.com/u/f60/13/80/01/02/destra13.gif" alt=""/></a></td>
    </tr>
    </table>
    <br>
    <FORM name="modulo" method="post" action="http://folliacity.altervista.org/testoscorrevole/mess.php"> 
    <table border="0" cellspacing="0" class="posting-table"><tr><td align="left"> Sono connesso con il nick:- <input type="text" name="autore" size="15" maxlength="50"  value="{USERNAME}" readonly></td><td align="left"> Messaggio:- <input type="text" name="testo"  size="30" maxlength="200"> </td><td align="left"><input type="submit" value="Invia!!" name="invia"> </td></tr></table></form>
    se inserisco i messaggi da qui http://folliacity.altervista.org/tes...evole/mess.php non c'è alcun problema, ma se li inserisco i messaggi con il codice riportato li sopra non mi prende le lettere accentate.. Dove sbaglio?

  2. #2
    zortar non è connesso Neofita
    Data registrazione
    10-04-2010
    Messaggi
    8

    Predefinito

    xke ti serve un str_replace cosi:
    Codice PHP:
    $testo = $_POST['testo'];
    str_replace(array("è", "é", "É", "È", "à" ecc....), array("&egrave;", "&eacute;", ecc....), $testo);

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    htmlentities()
    Codice PHP:
    $testo = htmlentities($_POST['testo']);

    Ciao!

  4. #4
    Guest

    Predefinito

    sarebbe? dove li dovrei mettere quei pezzi di codice?
    nella pagina per l'invio dei messaggi?

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Citazione Originalmente inviato da folliacity Visualizza messaggio
    sarebbe? dove li dovrei mettere quei pezzi di codice?
    nella pagina per l'invio dei messaggi?
    Sì, certo: nella pagina "mess.php" ufilizzerai senz'altro $_POST['testo'] per prelevare il testo immesso, no?

    prima di utilizzarlo e salvarlo in un'altra variabile, quindi, dovresti fargli una passata con htmlentities()

    Se non riesci posta il contenuto di "mess.php" che cercheremio di aggiornarlo

    Ciao!

  6. #6
    Guest

    Predefinito

    se lo metto esce..
    Codice:
    Parse error: syntax error, unexpected '{' in /membri/folliacity/testoscorrevole/mess.php  on line 19
    eccovi il testo..
    Codice PHP:
    <?

    define
    ('DBHOST', "localhost");
    define('DBNAME', "my_folliacity");
    define('DBUSER', "folliacity");
    define('DBPASS', "non te la dico");

    $conn=mysql_connect(DBHOST,DBUSER,DBPASS)
    or die(
    "Errore nella connessione");
    mysql_select_db(DBNAME)
    or die(
    "Database non trovato");

    // TI CONSIGLIO VIVAMENTE DI CAMBIARE GLI STYLES!!!!!!!!

    $body = "color:white;font-family:verdana;font-size:20;margin:3px";

    //inserisci
    if ($_POST["invia"])
    {
    foreach(
    $_REQUEST as $key => $value)
    $
    $key=$value;

    $data=time();

    $testo=str_replace("\"", "&quot;", $testo);
    $testo=str_replace("<", "&lt;", $testo);
    $testo=str_replace(">", "&gt;", $testo);
    $testo=str_replace("& ", "&amp; ", $testo);
    $testo=addslashes($testo);

    $query="
    INSERT INTO `effebox` (`id` , `data` , `autore` , `testo`)
    VALUES
    (
    '',
    '
    $data',
    '
    $autore',
    '
    $testo'
    );"
    ;

    $esegui=@mysql_query($query);

    if (
    $esegui) $stato="Messaggio inserito<br>[ <a href=\"javascript:self.close();\">Messaggio inviato! clicca qui per chiudere!</a> ]";
    else die(
    "ERRORE!!");

    mysql_close($conn);


    echo
    "<html>
    <head>
    <title>Invia un messaggio</title>
    </head>

    <body style=\"
    $body\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>
    $stato</b></td>
    </tr>
    </table></body></html>
    "
    ;


    }

    else


    //pagina inserimento
    {
    echo
    "
    <html>
    <head>
    <title>Invia un messaggio</title>
    <style type=\"text/css\">
    <!--
    a:link {
    color:blue; text-decoration: none;
    }
    a:visited {
    color:blue; text-decoration: none;
    }
    a:hover {
    color:red; text-decoration: underline;
    }
    a:active {
    color:blue; text-decoration: none;
    }
    -->
    </style>
    <script language=\"JavaScript\">
    <!--
    function calcCharLeft(f,l1) {
    var msgLen;
    var MaxLength;
    MaxLength = 100;
    msgLen=document.modulo.testo.value.length;
    if (msgLen >= MaxLength ){
    document.modulo.charsleft.value= \"0\";
    window.alert(\"Messaggio troppo lungo!\");
    document.modulo.testo.value=document.modulo.testo.value.substring(0,MaxLength);
    }
    else {
    document.modulo.charsleft.value = MaxLength - msgLen;
    }
    }
    // -->
    </script>
    </head>

    <body style=\"
    $body\">


    <!-- INIZIO CODICE TESTO SCORREVOLE -->
    <FORM name=\"modulo\" method=\"post\" action=\"mess.php\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>Pubblica il tuo messaggio!</b></td>
    </tr>
    <tr>
    <td align=center>
    Autore: <input type=\"text\" name=\"autore\" size=\"30\" maxlength=\"15\"></td>
    </tr>
    <tr>
    <td align=center>
    <textarea name=\"testo\" rows=\"3\" cols=\"20\" OnKeyUp=\"calcCharLeft()\" OnChange=\"calcCharLeft()\"></textarea>
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"text\" readonly name=\"charsleft\" size=\"3\" value=\"100\"> caratteri rimanenti.
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"submit\" value=\"Invia!!\" name=\"invia\"></td>
    </tr>
    </table>

    </body>
    </html>
    "
    ;

    }

    ?>

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    provalo così:
    Codice PHP:
    <?
    define
    ('DBHOST', "localhost");
    define('DBNAME', "my_folliacity");
    define('DBUSER', "folliacity");
    define('DBPASS', ""); //questo campo lascialo vuoto!

    $conn=mysql_connect(DBHOST,DBUSER,DBPASS)
    or die(
    "Errore nella connessione");
    mysql_select_db(DBNAME)
    or die(
    "Database non trovato");

    $body = "color:white;font-family:verdana;font-size:20;margin:3px";

    //inserisci
    if ($_POST["invia"])
    {
    foreach(
    $_REQUEST as $key => $value)
    $
    $key=$value;

    $data=time();

    $testo=htmlentities($testo);
    $testo=addslashes($testo);

    $query="
    INSERT INTO `effebox` (`id` , `data` , `autore` , `testo`)
    VALUES
    (
    '',
    '
    $data',
    '
    $autore',
    '
    $testo'
    );"
    ;

    $esegui=@mysql_query($query);

    if (
    $esegui) $stato="Messaggio inserito<br>[ <a href=\"javascript:self.close();\">Messaggio inviato! clicca qui per chiudere!</a> ]";
    else die(
    "ERRORE!!");

    mysql_close($conn);
    echo
    "<html>
    <head>
    <title>Invia un messaggio</title>
    </head>

    <body style=\"
    $body\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>
    $stato</b></td>
    </tr>
    </table></body></html>
    "
    ;
    }
    else
    //pagina inserimento
    {
    echo
    "
    <html>
    <head>
    <title>Invia un messaggio</title>
    <style type=\"text/css\">
    <!--
    a:link {
    color:blue; text-decoration: none;
    }
    a:visited {
    color:blue; text-decoration: none;
    }
    a:hover {
    color:red; text-decoration: underline;
    }
    a:active {
    color:blue; text-decoration: none;
    }
    -->
    </style>
    <script language=\"JavaScript\">
    <!--
    function calcCharLeft(f,l1) {
    var msgLen;
    var MaxLength;
    MaxLength = 100;
    msgLen=document.modulo.testo.value.length;
    if (msgLen >= MaxLength ){
    document.modulo.charsleft.value= \"0\";
    window.alert(\"Messaggio troppo lungo!\");
    document.modulo.testo.value=document.modulo.testo.value.substring(0,MaxLength);
    }
    else {
    document.modulo.charsleft.value = MaxLength - msgLen;
    }
    }
    // -->
    </script>
    </head>

    <body style=\"
    $body\">


    <!-- INIZIO CODICE TESTO SCORREVOLE -->
    <FORM name=\"modulo\" method=\"post\" action=\"mess.php\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>Pubblica il tuo messaggio!</b></td>
    </tr>
    <tr>
    <td align=center>
    Autore: <input type=\"text\" name=\"autore\" size=\"30\" maxlength=\"15\"></td>
    </tr>
    <tr>
    <td align=center>
    <textarea name=\"testo\" rows=\"3\" cols=\"20\" OnKeyUp=\"calcCharLeft()\" OnChange=\"calcCharLeft()\"></textarea>
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"text\" readonly name=\"charsleft\" size=\"3\" value=\"100\"> caratteri rimanenti.
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"submit\" value=\"Invia!!\" name=\"invia\"></td>
    </tr>
    </table>

    </body>
    </html>
    "
    ;
    }
    ?>
    Ciao!
    Ultima modifica di alemoppo : 30-05-2010 alle ore 13.24.17

  8. #8
    Guest

    Predefinito

    niente.. come prima..

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    come prima come? Da l'errore oppure le lettere non sono accentate?

  10. #10
    Guest

    Predefinito

    come prima.. se metto "èèèèèèèèèè" mi esce..
    30/5/2010 » Diego: èèèèèèèèè
    Ultima modifica di folliacity : 31-05-2010 alle ore 19.09.32

  11. #11
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma hai provato ad impostare un charset al documento HTML?
    Puoi anche evitare di convertire il testo in entità html prima di inserirlo nel database, tutto dipende dal charset del documento e da quello della tabella!

    La conversione in entità si fa quando si stampano a video i dati.

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    La conversione in entità si fa quando si stampano a video i dati.
    Vero, ma io nello script dopra non ho trovato dove viene stampata la variabile $testo

    Ciao!

  13. #13
    Guest

    Predefinito

    può essere questa parte?
    Codice PHP:
    //inserisci
    if ($_POST["invia"])
    {
    foreach(
    $_REQUEST as $key => $value)
    $
    $key=$value;

    $data=time();

    $testo=str_replace("\"", "&quot;", $testo);
    $testo=str_replace("<", "&lt;", $testo);
    $testo=str_replace(">", "&gt;", $testo);
    $testo=str_replace("& ", "&amp; ", $testo);
    $testo=addslashes($testo);

  14. #14
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    No quella parte non invia nessun output e comunque al posto di tutti quei replaces avresti potuto usare htmlentities come ti ha detto alemoppo.
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Vero, ma io nello script dopra non ho trovato dove viene stampata la variabile $testo

    Ciao!
    Forse in un altra pagina, questa la usa solo per salvare i dati (almeno credo).

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    ok.

    @folliacity: dove visualizzi le lettere accentate?? In che pagina??

    Ciao!

  16. #16
    Guest

    Predefinito

    il tutto è composto da 2 file.. uno per l'inserimento e uno per il prelievo dei messaggi..

    Pagina di inserimento (mess.php):-
    Codice PHP:
    <?
    define
    ('DBHOST', "localhost");
    define('DBNAME', "my_folliacity");
    define('DBUSER', "folliacity");
    define('DBPASS', ""); //questo campo lascialo vuoto!

    $conn=mysql_connect(DBHOST,DBUSER,DBPASS)
    or die(
    "Errore nella connessione");
    mysql_select_db(DBNAME)
    or die(
    "Database non trovato");

    $body = "color:white;font-family:verdana;font-size:20;margin:3px";

    //inserisci
    if ($_POST["invia"])
    {
    foreach(
    $_REQUEST as $key => $value)
    $
    $key=$value;

    $data=time();

    $testo=htmlentities($testo);
    $testo=addslashes($testo);

    $query="
    INSERT INTO `effebox` (`id` , `data` , `autore` , `testo`)
    VALUES
    (
    '',
    '
    $data',
    '
    $autore',
    '
    $testo'
    );"
    ;

    $esegui=@mysql_query($query);

    if (
    $esegui) $stato="Messaggio inserito<br>[ <a href=\"javascript:self.close();\">Messaggio inviato! clicca qui per chiudere!</a> ]";
    else die(
    "ERRORE!!");

    mysql_close($conn);
    echo
    "<html>
    <head>
    <title>Invia un messaggio</title>
    </head>

    <body style=\"
    $body\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>
    $stato</b></td>
    </tr>
    </table></body></html>
    "
    ;
    }
    else
    //pagina inserimento
    {
    echo
    "
    <html>
    <head>
    <title>Invia un messaggio</title>
    <style type=\"text/css\">
    <!--
    a:link {
    color:blue; text-decoration: none;
    }
    a:visited {
    color:blue; text-decoration: none;
    }
    a:hover {
    color:red; text-decoration: underline;
    }
    a:active {
    color:blue; text-decoration: none;
    }
    -->
    </style>
    <script language=\"JavaScript\">
    <!--
    function calcCharLeft(f,l1) {
    var msgLen;
    var MaxLength;
    MaxLength = 100;
    msgLen=document.modulo.testo.value.length;
    if (msgLen >= MaxLength ){
    document.modulo.charsleft.value= \"0\";
    window.alert(\"Messaggio troppo lungo!\");
    document.modulo.testo.value=document.modulo.testo.value.substring(0,MaxLength);
    }
    else {
    document.modulo.charsleft.value = MaxLength - msgLen;
    }
    }
    // -->
    </script>
    </head>

    <body style=\"
    $body\">


    <!-- INIZIO CODICE TESTO SCORREVOLE -->
    <FORM name=\"modulo\" method=\"post\" action=\"mess.php\">
    <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"5\">
    <tr>
    <td align=center><b>Pubblica il tuo messaggio!</b></td>
    </tr>
    <tr>
    <td align=center>
    Autore: <input type=\"text\" name=\"autore\" size=\"30\" maxlength=\"15\"></td>
    </tr>
    <tr>
    <td align=center>
    <textarea name=\"testo\" rows=\"3\" cols=\"20\" OnKeyUp=\"calcCharLeft()\" OnChange=\"calcCharLeft()\"></textarea>
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"text\" readonly name=\"charsleft\" size=\"3\" value=\"100\"> caratteri rimanenti.
    </td>
    </tr>
    <tr>
    <td align=center>
    <input type=\"submit\" value=\"Invia!!\" name=\"invia\"></td>
    </tr>
    </table>

    </body>
    </html>
    "
    ;
    }
    ?>

    pagina per il prelievo (minibox.php):-
    Codice PHP:
    <?

    define
    ('DBHOST', "localhost");
    define('DBNAME', "my_folliacity");
    define('DBUSER', "folliacity");
    define('DBPASS', "password");

    /*
    CONFIGURAZIONE DELLA TAG BOARD
    ------------------------------

    Modifica questi parametri a tuo piacimento! :)
    */

    //default: sfondo=bianco, testo:nero, font=verdana, dimensione=11, margini=2px
    $body = "color:black;font-family:verdana;font-size:10;margin:2px";

    //default: ritardo=100 - diminuire per velocizzare...
    $marquee = "scrolldelay=\"1\"";

    //numero max di messaggi da mostrare
    $messaggi = 50;

    echo
    "<html><head><title>EffeBox - messaggi</title></head>

    <body style=\"
    $body\">
    <marquee onmouseover=this.stop() onmouseout=this.start() scrollamount=3 direction=left
    $marquee width=\"100%\">";

    $conn=mysql_connect(DBHOST,DBUSER,DBPASS)
    or die(
    "Errore nella connessione");
    mysql_select_db(DBNAME)
    or die(
    "Database non trovato");

    $sql = mysql_query("select * from effebox order by `id` DESC limit 0, $messaggi");

    while (
    $result=mysql_fetch_array($sql))
    {
    $timestamp=$result['data'];

    $d = date("j", $timestamp);
    $mn = date("n", $timestamp);
    $y = date("Y", $timestamp);

    $hr = date("H", $timestamp);
    $min = date("i", $timestamp);
    $sec = date("s", $timestamp);

    $data="$d/$mn/$y";

    $user=$result['autore'];
    $messaggio=$result['testo'];


    echo
    "<u>$data</u> &raquo; <b>$user</b>: $messaggio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    }

    echo
    "</marquee></body></html>";

    ?>
    se uso solo e soltanto quelle due pagine le lettere le prende alla perfezione.. (inserendole usando i box originali contenuti nel file mess.php) le lettere nelle tabelle vengono memorizzate alla perfezione, di conseguenza vengono visualizzate correttamente..


    ma come succedeva in passato con un'altra tag, gli utenti cambiavano il proprio nick inserendo sporannomi allo scopo di offendere, causare litigi, ecc.. quindi ho scritto un altro codice di inserimento per l'inserimento dei messaggi (ovviamente esso lo ho posizionato dove voglio che sia presente il box per l'inserimento dei messaggi):-
    Codice HTML:
    <FORM name="modulo" method="post" action="http://folliacity.altervista.org/testoscorrevole/mess.php"> 
    <table border="0" cellspacing="0" class="posting-table"><tr><td align="left"> Sono connesso con il nick:- <input type="text" name="autore" size="15" maxlength="50"  value="{USERNAME}" readonly></td><td align="left"> Messaggio:- <input type="text" name="testo"  size="30" maxlength="200"> </td><td align="left"><input type="submit" value="Invia!!" name="invia"> </td></tr></table></form>
    ma se li metto con il codice scritto da me le lettere accentate non le prende..



    EDIT:- allego anche il codice per creare la tabella nel database..
    Codice:
    CREATE TABLE `effebox` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `data` varchar(16) NOT NULL default '',
      `autore` varchar(20) NOT NULL default '',
      `testo` text NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Ultima modifica di folliacity : 31-05-2010 alle ore 22.32.03

  17. #17
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    bene.

    Sostituisci il minibox in questo modo:

    Codice PHP:
    <?

    define
    ('DBHOST', "localhost");
    define('DBNAME', "my_folliacity");
    define('DBUSER', "folliacity");
    define('DBPASS', "password");

    /*
    CONFIGURAZIONE DELLA TAG BOARD
    ------------------------------

    Modifica questi parametri a tuo piacimento! :)
    */

    //default: sfondo=bianco, testo:nero, font=verdana, dimensione=11, margini=2px
    $body = "color:black;font-family:verdana;font-size:10;margin:2px";

    //default: ritardo=100 - diminuire per velocizzare...
    $marquee = "scrolldelay=\"1\"";

    //numero max di messaggi da mostrare
    $messaggi = 50;

    echo
    "<html><head><title>EffeBox - messaggi</title></head>

    <body style=\"
    $body\">
    <marquee onmouseover=this.stop() onmouseout=this.start() scrollamount=3 direction=left
    $marquee width=\"100%\">";

    $conn=mysql_connect(DBHOST,DBUSER,DBPASS)
    or die(
    "Errore nella connessione");
    mysql_select_db(DBNAME)
    or die(
    "Database non trovato");

    $sql = mysql_query("select * from effebox order by `id` DESC limit 0, $messaggi");

    while (
    $result=mysql_fetch_array($sql))
    {
    $timestamp=$result['data'];

    $d = date("j", $timestamp);
    $mn = date("n", $timestamp);
    $y = date("Y", $timestamp);

    $hr = date("H", $timestamp);
    $min = date("i", $timestamp);
    $sec = date("s", $timestamp);

    $data="$d/$mn/$y";

    $user=$result['autore'];
    $messaggio=htmlentities($result['testo']);


    echo
    "<u>$data</u> &raquo; <b>$user</b>: $messaggio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    }

    echo
    "</marquee></body></html>";

    ?>
    Ciao!
    Ultima modifica di alemoppo : 31-05-2010 alle ore 22.48.01

  18. #18
    Guest

    Predefinito

    adesso lo stesso messaggio citato prima..
    30/5/2010 » Diego: &Atilde;&uml;&Atilde;&uml;&Atilde;&uml;&Atilde;&um l;&Atilde;&uml;&Atilde;&uml;&Atilde;&uml;&Atilde;& uml;&Atilde;&uml;

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •