phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Sistemare lettere accentate

Supporto per phpBB 3.1.x.
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Sistemare lettere accentate

Messaggio da Micogian » 11/10/2015, 12:53

Ma tu devi inserire il testo in un post o in una tabella personalizzata?
Per i testi destinati al post phpbb usa la funzione generate_text_for storage che probabilmente sistema il testo per essere archiviato.
Per inserire il testo di una textarea in una tabella io non ho particolari problemi se non quelli legati all'apostrofo e al segno & che risolvo come detto prima.

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 11/10/2015, 13:18

devo inserire il testo della textarea nella tabella del topic...e uso appunto la funzione che hai detto

Codice: Seleziona tutto

$my_subject   = utf8_normalize_nfc($titolo, '', true);	
$my_text = utf8_normalize_nfc($testo, '', true);
generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
facendo un echo prima di questa funzione per il testo "caffè all'alba" mi restituisce "caff?? all'alba"
già prima di metterlo nella tabella predefinita dei post.

più avanti dopo un controllo se il topic è stato già inserito con lo stesso titolo ho quest'altra funzione

Codice: Seleziona tutto

submit_post('post', $my_subject, $user->data['username'], POST_NORMAL, $poll, $data);
se l'errore sui caratteri me lo da prima non credo centrino le funzioni di inserimento...è così?
c'è forse qualche errore quando prelevo il testo?

Codice: Seleziona tutto

$testo1 = mysql_real_escape_string(request_var('Testo', ''));
$testo= str_replace("\\n", "<br />",$testo1);
$testo= str_replace("\'", "' ",$testo);
con la funzione str_replace riesco a rimpiazzare i ritorni d'accapo e gli apostrofi...ma non le lettere accentate

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Sistemare lettere accentate

Messaggio da Micogian » 11/10/2015, 15:30

Hai provato con latin1 al posto di utf-8? mysql_query("SET NAMES latin1");

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 14/10/2015, 15:00

Micogian ha scritto:Hai provato con latin1 al posto di utf-8? mysql_query("SET NAMES latin1");
no, non sortisce effetto....non so più cosa provare: le tabelle del db sono settate bene (utf general ci) metto qualsiasi caracter set nel file php e solo impostando UTF8 almeno riesco a far postare il testo anche se le lettere accentate appaiono con ?? (si perchè se non imposto UTF8 il testo della textaerea non viene messo nella tabella del db)

ripeto...c'è qualcosa di sbagliato da come prendo il testo dalla textarea? appena prelevato, inviando un 'print' appaiono già i ?? al posto delle lettere accentate....quindi non è nè un problema di funzione di post automatica nè altro...secondo me è l'acquisizione del testo

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Sistemare lettere accentate

Messaggio da Sir Xiradorn » 14/10/2015, 15:48

Ricordo che avevo un problema similare quando feci la mia mod per la form di inseriento di un post personalizzata (che vorrei trasformare in estensione).

Hai provato a cercare se ci sono funzioni alternative per il prelievo del testo? Magari il parsing_text. Ti rimando a questa guida ( https://wiki.phpbb.com/Parsing_text ) magari riesci a fare qualcosa. Faro anche io qualche test
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 15/10/2015, 12:59

grazie sir Xiradorn ma purtroppo non posso usare un unica INSERT magari per inserire nella tabella dei topic...
uso già il modello di inserimento illustrato nell'esempio....

MOD: Ho risolto!!!! grazie a tutti per l'impegno. Vi illustro come, così è utile per chi si ritrova impantanato come me:
Il problema stava nell'acquisizione del testo come avevo intuito...ma non tanto la modalità, piuttosto la sintassi, cioè io acquisivo il testo così:

Codice: Seleziona tutto

$testo=mysql_real_escape_string(request_var('Testo', ''));
e sbagliavo la sintassi, anche se il debug non restituiva errori manca una parola fondamentale nell'istruzione: TRUE
grazie al link che mi ha linkato sir Xiradorn mi sono accorto dell'errore di sintassi...praticamente va aggiustato così:

Codice: Seleziona tutto

$testo=mysql_real_escape_string(request_var('Testo', '',true));
con il TRUE alla fine...tutto il resto andava bene, mancava solo quella benedetta parolina magica....
non ho però capito perchè quel true fa si che gli accenti si inseriscono e visualizzino correttamente

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Sistemare lettere accentate

Messaggio da Sir Xiradorn » 18/10/2015, 18:18

La risposta sta nella definizione di request_var la funzione creata da phpbb per sostituire il $_REQUEST e purificare le stringhe. Quella parolina TRUE è una delle opzioni della funzioni che abilita questa cosa che cito

[quote=phpbb wiki](optional, default is false) request_var does allow multibyte characters to return in requests unless you explicitly set this to true for the variable you request.[/quote]

In sostanza permette di estrapolare caratteri multibyte che da soli non verrebbero fuori. Quindi vengono fuori tutti quei caratteri che sono filtrati perchè ritenuti a rischo. Questo implica che quando si gestisce il tutto va fatta attenzione a cosa poi viene inserito o gestito perchè può creare vulnerabilità
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Rispondi

Torna a “[3.1.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 71 ospiti