2012-10-07 33 views
6

Por lo que he leído, parece que $_SERVER['REQUEST_URI'] no siempre devuelve las cadenas de consulta correctamente, pero ¿alguien tiene una buena idea de cuál es la tasa de éxito? ¿Funcionará en la mayoría de los casos para un cliente promedio?

Lo que, en todo caso, podría causar REQUEST_URI a no estar ocupados o no incluir la cadena de consulta?

+6

Típicamente Es o 0% o 100%. Depende del servidor. –

+1

¿Qué pasa con '$ _GET'? –

+0

@WesleyMurch: ¿Entonces depende completamente del servidor? Parece estar funcionando para mí. ¿Eso significa que es seguro asumir que debería funcionar para cualquier usuario? –

Respuesta

6

Se preguntó:

Lo que, en todo caso, podría causar REQUEST_URI a no ser poblada?

respuestas que se me ocurren:

  1. El servidor web proporciona todos los valores $_SERVER a PHP, por lo que si el servidor no proporciona ellos, entonces ellos no pueden establecer. Esto es muy poco probable con cualquier servidor web decente, pero es posible.

  2. Si ejecuta un programa PHP desde la línea de comandos, no tendrá ningún valor $_SERVER. (En caso de que no está preocupado por esto, ten en cuenta que las pruebas unitarias normalmente se ejecutan desde una línea de comandos, por lo que no importa si está siguiendo las mejores prácticas y pruebas de la unidad de escritura)

1

¿Qué, en todo caso, provocaría que REQUEST_URI no se completara?

Una búsqueda de Google parece indicar que este ha sido el caso con IIS (pero lo que era cierto, entonces, tal vez no sea el momento):

https://bugs.launchpad.net/xibo/+bug/654536 

(hay un artículo acerca de una corrección para IIS : http://davidwalsh.name/iis-php-server-request_uri)

, así como otros casos en los que el "servidor" no era su servidor web (por ejemplo plugin del servidor de depuración estándar, etc.).

Se detectó pero se consideró un error en versiones menos conocidas o antiguas de servidores web (lighthttpd, iPlanet Web Server 7.0).

por lo que creo que puede estar razonablemente seguro de que la variable siempre va a ser poblada. Por supuesto, sería aconsejable preparar un script de prueba muy pequeño para que se ejecute en el sitio del cliente lo antes posible a fin de ser advertido.

Cuestiones relacionadas