2010-06-02 17 views
26

Cualquier cuerpo puede explicarme cómo funciona la sesión en PHP. por ej. 3 usuarios iniciaron sesión en gmail. cómo el servidor identifica estos 3 uers. ¿cuál es el proceso interno detrás de eso?¿Cómo funciona la sesión?

Respuesta

22

Las sesiones se componen de dos componentes, un del lado del cliente de identificación de sesión y datos de la sesión en el servidor. Los clientes pueden enviar una identificación de sesión al servidor como parámetro de URL, cookie o incluso encabezados HTTP. El servidor utiliza esta ID de sesión para buscar los datos de sesión apropiados para devolver al cliente.

Puede modificar el comportamiento de la sesión a través de los diversos session_ functions.

+1

¿Cómo funcionan las sesiones incluso sin cookies si una sesión está "compuesta" de una cookie y datos de sesión del lado del servidor? – dendini

5

Gmail usa Python, creo, no PHP.

PHP escribe sus sesiones por defecto en el directorio /tmp. Se puede configurar para almacenar las sesiones en la base de datos.

Identifica las sesiones a través de una cookie, pero también se puede configurar para pasar una cadena de consulta, pero es muy feo.

0

Una cookie.
O un parámetro en la url. Y este proceso de internet se llama protocolo HTTP.

9

Las sesiones son muy sencillas.

Cuando inicio sesión en su sitio, PHP establecerá una cookie de navegador estándar con una "ID de sesión", generalmente una cadena alfanumérica como 63f1a67cf52b5d2bbd0cbef45e18b242.

Al igual que con todas las cookies, mi navegador enviará esa cookie a su servidor con cada solicitud que haga. Por lo tanto, su aplicación ahora sabe que todas las solicitudes que vienen con un ID de sesión de 63f1a67cf52b5d2bbd0cbef45e18b242 provienen de mí.

Por lo tanto, si necesita almacenar cualquier información sobre mí, puede realizar un seguimiento de ella en 63f1a67cf52b5d2bbd0cbef45e18b242. De forma predeterminada, PHP almacena esta información en archivos en el directorio /tmp/, aunque puede anularla y almacenarla en cualquier lugar que desee (por ejemplo, en una base de datos). Lo que importa es asociar esa ID de sesión con un usuario particular.

No quiero simplificar demasiado las cosas. Hay algunas preocupaciones (por ejemplo, ¿qué pasa si un intruso ve mi ID de sesión sin encriptar y comienza a usarla él mismo? Podría concebiblemente empezar a hacerse pasar por mí), y hay algunas formas de aliviar esas preocupaciones. Pero el mecanismo básico para almacenar una ID de sesión en una cookie y usarlo para identificar información sobre mí almacenada en el servidor es bastante universal.

+1

señor, si puedo usar la cookie de mi navegador, ¿qué sucederá? – learner

+1

Normalmente, no podrá usar sesiones. PHP tiene una configuración que reescribirá automáticamente los enlaces a medida que se escriben en la página para incluir el ID de la sesión como un parámetro adicional, que por supuesto no requiere cookies, pero requiere PHP para interpretar su contenido a medida que lo genera (que debería sentirse un poco de miedo). – VoteyDisciple

+0

señor cómo el servidor identifica la solicitud de cada usuario. ¿Ahorra en alguna parte? – learner

24

Las sesiones son una combinación de una sesión de datos del lado del servidor y una galleta del lado del cliente, con la cookie del lado del cliente que contiene nada más que una referencia a los datos correctos en el servidor. Por lo tanto, cuando el usuario visita el sitio, su navegador envía el código de referencia al servidor, que carga los datos correspondientes.

Esto puede parecer un poco más torpe que sólo tener una cookie en el cliente con todos sus datos en, pero hay algunas ventajas:

  • Su lado del servidor los datos de sesión pueden contener cantidades muy grandes de datos sin complicaciones - cookies de cliente están limitados en tamaño
  • su cookies del lado del cliente contiene otra cosa que una pequeña referencia código - como esta cookie se pasa cada vez que alguien visita una página en su sitio, usted está ahorrando una gran cantidad de ancho de banda al no transferir grandes cookies de cliente alrededor
  • datos de sesión es mucho más seguro - sólo le son capaces de manipularlo, en lugar de cookies de cliente cuales son editables por todos

También es importante tener en cuenta que las sesiones solo duran hasta que el usuario cierre su navegador, mientras que las cookies se pueden configurar para durar más tiempo. Sin embargo, aparte de lo anterior, no hay mucha diferencia entre los datos de la sesión y los datos de las cookies para la mayoría de los propósitos.

The following es un muy buen artículo que explica cómo funcionan las sesiones y las cookies dentro de PHP.

+0

** del lado del servidor ** archivo ** quieres decir? –

+0

Ah sí, eso es para señalar eso. Creo que los datos de la sesión, como señaló Jacob Relkin, podrían tener más sentido. Voy a editar eso ahora. Cheers –

+0

Ok, si puedo usar mi cookie, ¿mi sesión no funcionará? – learner

1

La primera vez que abre una página web (una URL) su navegador envía una solicitud a ese servidor, en este momento, el encabezado no contiene ninguna cookie o sesión para ser incluida, luego de las respuestas del servidor a la web- navegador (agente de usuario) el servidor puede enviar cookies o sesiones, en este momento, el navegador los guardó para la siguiente solicitud.

Ahora, al volver a cargar la página, el navegador devuelve la cookie al servidor (contenida en el encabezado de la solicitud), y luego, el servidor puede acceder a ella y validarla.

Para la sesión: es una cookie temporal, que se cerrará una vez que se cierre Windows.

PHP SESIÓN PHP utiliza la cookie de sesión para un par clave-valor que da nombre a PHPSESSID, el servidor depende del valor de esta clave y la búsqueda de par clave-valor equivalente utilizando el valor de PHPSESSID. El uso de este enfoque previene algún tipo de ataque, como descifrar los valores reales de la cookie, porque la cookie guarda todos los pares clave-valor en la PC de los clientes, mientras que la sesión depende de un par clave-valor.

0

La función session_start() genera un identificador de sesión aleatorio y lo almacena en una cookie en la computadora del usuario (esta es la única información de sesión almacenada en el lado del cliente). El nombre predeterminado para la cookie es PHPSESSID aunque esto puede cambiarse en los archivos de configuración de PHP en el servidor (sin embargo, la mayoría de las empresas de hosting lo dejarán en paz). Para hacer referencia al identificador de sesión en su código PHP, por lo tanto haría referencia a la variable $ PHPSESSID (es un nombre de cookie; que de las Cookies?) Su mente aguda se estará preguntando qué pasa cuando llega al segundo pase a través de su página y alcanza de nuevo la función session_start(). PHP sabe que ya hay una sesión sobre el progreso e ignora instancias posteriores de session_start()

1

La función session_start() define en la parte superior del encabezado ... esto generará un número único. La sesión es la forma de comunicarse con el servidor. Tienda de sesiones en el lado del servidor y del lado del cliente. Secuencia de la tienda del navegador en el archivo tmp o cookies.

Las cookies conservan el nombre y el valor de la sesión, no ponen los datos de la sesión. Los datos guardados por sesión en el lado del servidor. cuando el cliente envía la solicitud al servidor ... el servidor obtiene la ID de sesión y devuelve los datos al cliente. La session_id generate del lado del servidor y session_id es la forma de identificar la solicitud desde donde.

1

Cómo Does PHP Sesión Obras

  • En primer lugar PHP crea un número único identificador (una cadena aleatoria de 32 número hexadecimal, por ejemplo 3c7foj34c3jj973hjkop2fc937e3443) para una sesión individual .

  • Cookie PHPSESSID pasó ese número de identificación único al navegador de los usuarios para guardar ese número.

  • Un nuevo archivo se crea en el servidor con el mismo nombre de número de identificación único con el prefijo sess_ (es decir sess_3c7foj34c3jj973hjkop2fc937e3443.)

  • navegador Web envía la cookie al servidor con cada solicitud.

  • Si PHP obtiene ese número de identificación único de la cookie PHPSESSID (en cada solicitud), entonces busque en el directorio temporal y compare ese número y nombre de archivo. Si ambos son iguales, recupera la sesión existente; de ​​lo contrario, cree una nueva sesión para ese usuario.

Una sesión se destruye cuando el usuario cierra el navegador o abandona el sitio. El servidor también finalizó la sesión después del período predeterminado de tiempo de sesión. Estos son los mecanismos simples que usan PHP para manejar la sesión. Espero que este artículo te ayude a comprender cómo funciona PHP SESSION.

Consulte este artículo para obtener más detalles. How Does PHP Session Works

Cuestiones relacionadas