El protocolo HTTP (*) especifica cómo el navegador debe enviar la solicitud.
HTTP consiste básicamente en un conjunto de encabezados en texto sin formato, separados por alimentaciones de línea, seguidos por los datos que se transmiten. Dentro de la solicitud HTTP, los datos POST en realidad tienen el mismo formato que los datos GET; solo está en una parte diferente de los encabezados HTTP.
Puede usar herramientas como Firebug o Fiddler para ver exactamente cómo se formatean los encabezados y los datos para las solicitudes HTTP entrantes y salientes. En realidad, es bastante simple de leer, por lo que debería poder resolverlo solo con mirar.
Una vez que llega al servidor, el intérprete de PHP es responsable de traducir los datos de solicitud HTTP sin procesar a sus variables estándar $ _GET, $ _POST, etc. Esto es algo que PHP hace por ti.
Otros idiomas (por ejemplo, Perl) no tienen esta funcionalidad incorporada, por lo que un programador de Perl debería tener código en su programa para analizar los datos de la solicitud entrante en variables útiles. Afortunadamente, incluso Perl tiene una biblioteca estándar que se puede incluir que hace el trabajo, por lo que incluso los programadores de Perl generalmente no tienen que escribir el código ellos mismos más.
La forma en que PHP y cualquier otro lenguaje lo hace es simplemente manipulación de cadenas. Como ya he dicho, los datos HTTP son texto plano y se reciben en formato de cadena simple, por lo que solo se trata de dividirlos en signos de interrogación e iguales.
Como PHP lo hace todo detrás de las escenas, probablemente no tenga que preocuparse por los mecanismos exactos que utiliza, pero el código fuente de PHP está disponible si realmente desea averiguarlo.
Dije que todo está en texto sin formato. HTTPS, por supuesto, está encriptado. Sin embargo, cuando PHP se apodera de él, el servidor Apache ya ha realizado el descifrado, por lo que, en lo que respecta a PHP, sigue siendo texto sin formato.
(*) Antes de que alguien me explique, sí, sé que decir "protocolo HTTP" es una redundancia, como "cajero automático" o "número PIN".
para qué sirve.) – abel
Lo convierte en '_' – Quentin
Convierte' .' en '_' (por razones históricas, solía ser que cada variable en el formulario se convertía en una variable real. Google para" register_globals "para detalles sobre esa última parte). – cHao