2008-12-08 18 views
11

Tengo un proyecto de código de encendido, y quería intentar depurarlo usando Zend Studio. Cuando empiezo a depurar, inmediatamente ejecuto inoEl URI que ha enviado tiene caracteres no permitidos

"El URI que ha enviado tiene caracteres no permitidos".

¿Alguien tiene alguna idea?

+0

Por curiosidad, ¿alguien sabe si los caracteres permitidos concuerdan con la especificación URI? Obviamente, el rechazo de "?" significa que no lo son, pero ¿qué pasa con los demás? Este parece ser otro ejemplo de un sistema que no implementa correctamente los conceptos básicos (funcionalidad basada en RFC). –

+0

Comprobé y PHP NO cumple con la especificación URL/URI. –

+2

Actualizamos nuestro Servidor a PHP 5.3 y nos encontramos con este problema varias veces debido a las antiguas instalaciones de Codeigniter. Puede intentar este enlace: http://riskianawulan.net/2010/11/fixed-the-uri-you-submitted-has-disallowed-characters-error-codeigniter/ – felix

Respuesta

26

(suponiendo que está utilizando la última versión de CodeIgniter (IC) que es 1.7.0)

CI es bastante estricto en cuanto a lo que los personajes se permite en las direcciones URL. Puede modificar la expresión regular que se utiliza para filtrar las URL.

En el sistema/config/config.php en la línea 126 es

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 

El comentario sobre esta línea explica casi todo, y qué valor centinela para utilizar pasar por encima de este filtro y permitir que todos los caracteres (es decir, desactivar el filtrado por completo).

En una nota lateral, encontré que CI es demasiado restrictivo (para uno no permite las solicitudes GET y quiere que todas las interacciones se realicen a través de POST. Esto me parece completamente loco y es similar a tirar al bebé con el Por lo visto, no soy el único que piensa que la IC es demasiado restrictiva, el Proyecto Kohana es una bifurcación de optimizaciones de CI +, es decir, compatibilidad pura con php5 (todas OO), (CI todavía es compatible con PHP4 a expensas de ser capaz de tomar ventaja de las capacidades PHP5 OO).

prefiero Kohana sobre CI, tu caso es distinto

http://kohanaphp.com/home

+0

Algunos caracteres que no puede agregar a la lista de exclusión . Por más que lo intentes, no puedes excluir el # char. Tendrás que quitarlo antes de enviarlo a través de http. – TARKUS

6

Si se utiliza una versión antigua de CodeIgniter y PHP 5.4 tiene que modificar

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

en

if (FALSE === preg_match("|^[" . preg_quote($this->config->item('permitted_uri_chars')) . "]+$|i", $str)) { 

en /system/libraries/URI.php

2

en el motor de Expresión podrás encuentre esto en /admin/expressionengine/config/config.php

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\\-'; 

cambio a

$config['permitted_uri_chars'] = ''; 

pero lea el comentario de la línea antes de hacer esto.

O no utilice nada basado en CI.

+1

De los documentos: * Déjelo en blanco para permitir todos los caracteres, pero solo si está loco * – MJoraid

Cuestiones relacionadas