track tag attribute php

php - tag - tooltip title



Cómo identificar la página solicitada en PHP (5)

  1. parse_url($_SERVER[''REQUEST_URI'']) y luego pathinfo($path) para obtener el nombre de archivo solicitado
  2. $_SERVER[''PHP_SELF''] para obtener un nombre de archivo real
  3. $_SERVER[''SCRIPT_NAME''] para obtener un nombre de archivo real

¿Hay alguna forma fácil de identificar el archivo que maneja inicialmente la solicitud, ignorando obtener argumentos y manejando (al menos lo básico) las asignaciones como / a /index.php ?

Idealmente, lo que estoy buscando es algo como $_SERVER[''REQUEST_URI''] , excepto que devuelve el mismo valor independientemente de los argumentos de obtención y ese valor es el archivo solicitado, no el URI, ni el archivo en ejecución actualmente ( $_SERVER[''PHP_SELF''] ). En otras palabras, un $_SERVER[''REQUESTED_FILE''] o algo así. No he visto nada de eso. ¿Existe, o necesito escribir algo manualmente?

Actualización Aquí hay algunos ejemplos de URL combinadas con lo que me gustaría que fuera el resultado:

example.com/mypage.php : /mypage.php example.com/ : /index.php example.com/foo/?hello=world : /foo/index.php

Y estos valores de retorno son verdaderos incluso en los archivos incluidos. Vea mi respuesta a continuación antes de responder, creo que he encontrado lo que estaba buscando.


Decidí probarlo yo mismo. La variable $_SERVER[''SCRIPT_NAME''] sirve la ruta al archivo solicitado, incluso si es un archivo de índice, y sin obtener parámetros o cualquier otra cosa. La documentación de PHP indica que contiene la ruta del archivo, pero parece ser relativa a la raíz del documento, al igual que PHP_SELF , pero sin la vulnerabilidad de seguridad.

Aquí está el código que usé para probar esto: https://gist.github.com/dimo414/5484870

La salida al solicitar example.com/?foo=bar :

__FILE__: /var/www/index.php PHP_SELF: /index.php SCRIPT_NAME: /index.php REQUEST_URI: /?foo=bar parse_url(REQUEST_URI): / __FILE__: /var/www/pathtest.php PHP_SELF: /index.php SCRIPT_NAME: /index.php REQUEST_URI: /?foo=bar parse_url(REQUEST_URI): /

Y la salida al solicitar example.com/index.php/<strong>XSS</strong> :

__FILE__: /var/www/index.php PHP_SELF: /index.php/XSS # note the XSS exploit (this is bold in browser) SCRIPT_NAME: /index.php # No exploit here REQUEST_URI: /index.php/%3Cstrong%3EXSS%3C/strong%3E parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E __FILE__: /var/www/pathtest.php PHP_SELF: /index.php/XSS SCRIPT_NAME: /index.php REQUEST_URI: /index.php/%3Cstrong%3EXSS%3C/strong%3E parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E

Como puede ver, $_SERVER[''SCRIPT_NAME''] siempre devuelve el archivo que originalmente manejó la solicitud, es decir, el archivo en la URL, sin ningún riesgo de XSS.


Es una pregunta muy antigua y no muy clara también. Lo que entendí es que desea saber qué página está enviando la solicitud GET / POST. Esto puede ser implementado por:

$ _SERVER [''HTTP_REFERER'']

Ahora, para obtener el nombre real de la página, escriba como: = nombre base ($ _ SERVER [''HTTP_REFERER'']);

Esto resolverá su preocupación.


Vaya a obtener el nombre del archivo de la URL solicitada, use el siguiente código.

basename($_SERVER[''URL'']); basename($_SERVER[''REQUEST_URI'']); basename($_SERVER[''SCRIPT_NAME'']); basename($_SERVER[''SCRIPT_FILENAME'']); basename($_SERVER[''REQUEST_URI'']); basename($_SERVER[''PATH_TRANSLATED'']); basename($_SERVER[''PHP_SELF'']);

use cualquiera de todos los que estén en la condición anidada si así no perderá ningún nombre de archivo.