Immagine
 Best search engines... di Admin
\\ Home Page : Articolo
CodeIgniter: caratteri speciali e URI
Di Manuel  (del 25/02/2010 @ 11:17:11, in Web Development, linkato 1085 volte)

In questi ultimi mesi sto affrontando la realizzazione di piccoli siti dinamici, completi di pannello di amministrazione.
Il linguaggio è PHP, il database è MySQL, il server è Linux e il webserver è... Apache! Ebbene sì, si tratta del classico ambiente LAMP.
La novità è che, per affrontare i progetti, non scrivo "codice selvaggio", ma mi appoggio ad un framework open source chiamato CodeIgniter.

Il framework è versatile, comodo e accompagnato da una nutrita schiera di estimatori e programmatori.
Purtroppo, come spesso accade nel mondo delle apllicazioni web, essendo il framework una "creatura" inglese, non ha affrontato nativamente il problema dei caratteri speciali: à, è, é, ì, ò, ù (per noi italiani, ad es.).
Questo problema mi è diventato palese nel momento in cui ho cercato di trasmettere stringhe di ricerca con simili caratteri all'URI segmentato tipico di CodeIgniter (quando non si desidera utilizzare la classica querystring: pippo.php?c=prendi&m=fai&v=questo).

Il framework, infatti, per motivi di sicurezza (indiscutibili), ammette nei suoi URI questa serie di caratteri:
a-z 0-9~%.:_\-
Nel momento in cui un italiano scrive in un modulo di ricerca "gravità" appare a video un pagina bianca che riporta il seguente errore:

The URI you submitted has disallowed characters.

Per risolvere la questione ho dovuto perdere un paio di giorni di ricerche su Google e alla fine ho trovato questo salvifico articolo:

CodeIgniter 1.7: The URI you submitted has disallowed characters.

Se avete lo stesso problema, andate in system/libraries e aprite il file URI.php alla linea 189 e modificate:

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", $str))

così:

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", rawurlencode($str)))

Questa soluzione si applica a CodeIgniter 1.7.

 
TrackBack Url: (I TrackBack sono moderati)
http://www.grandisistemi.it/dblog/tb.asp?id=35

 
Articoli correlati
Buone pratiche per l'ottimizzazione del contenuto (50%)
L'enciclopedia per il web aperto (25%)
Linee guida per il web design (25%)
WordPress e le gallerie di immagini (25%)
Alcune brevi indicazioni per costruire un sito (25%)
 
Nessun commento trovato.

Anti-Spam: digita i numeri CAPTCHA Carica un nuovo codice
Testo (max 1000 caratteri)
Nome
Link (Visibile nel Blog)

Email (Visibile solo dall'amministratore)

Salva i miei dati per futuri commenti
Ricevi in email la notifica di nuovi commenti

I commenti sono moderati. Il tuo commento sarą visibile solo quando approvato.
Disclaimer
L'indirizzo IP del mittente viene registrato, in ogni caso si raccomanda la buona educazione.
One of the most famous SEO trick is link popularity. It is because of the fact that most search engines don't consider web sites that do not have links pointing to the web site. So, it is really important to link to other resources that are related to your website's niche. This will increase traffic, provide good ranking and add value to your website.

Most Famous SEO Tricks

Sondaggio

Ti piace il nuovo blog di Grandi Sistemi ?

 Fantastico!
 Carino...
 Così e così
 Bleah!

Stuff

Listening
Zoo di 105

Reading
"Essere Visibili Sui Motori Di Ricerca" di Giorgio Taverniti

Watching
Video Convegni SEO GT !

Varie

Ci sono 1 persone collegate

05/02/2012 @ 11.17.07
script eseguito in 31 ms