¿Para qué se utilizan session_id, session_regenerate_id y session_name?

ok soy un novato en las sesiones, imaginemos que tenemos un pequeño sitio de inicio de sesión

aquí hay una lógica

  1. iniciar sesión
  2. si la contraseña es correcta = use $ _SESSION [isaloginuser] = 1
  3. compruebe la sesión para ver los menús con if $ _SESSION [isaloginuser] = 1
  4. mostrar los menús
  5. el usuario quiere cerrar la sesión
  6. sesión no establecida
  7. destruir el sistema de sesión

lo que usa

session_register session_destroy session_unset session_start 

¿dónde session_id el session_id y la session_regenerate o session_name ? en el sitio php dice

session_id () se usa para obtener o establecer la identificación de sesión para la sesión actual.

Todavía no lo entiendo, ¿por qué los necesitamos de todos modos? en el entorno real, ¿qué hace?

No, no necesitas usarlos. En general, todo lo que necesitas es

  • session_start para iniciar el manejo de la sesión, y
  • session_destroy para destruir los datos de sesión almacenados (esto no modifica $_SESSION ), y
  • session_unset para restablecer la variable $_SESSION (pero también puedes hacer $_SESSION = array() ).

session_id y session_name deben obtener y establecer la ID de la sesión actual y el nombre de ID de la sesión (el valor predeterminado es PHPSESSID ). session_regenerate_id se puede utilizar para regenerar / cambiar el ID de sesión de la sesión actual. Esto podría ser útil si, por ejemplo, desea actualizar el ID de la sesión cada 10 minutos o después de cambiar el estado de autenticidad de un usuario asociado con una sesión.

session_regenerate_id() se usa para evitar la fijación de la sesión.

La fijación de sesión significa lo siguiente: visita un sitio web y examina su ID de sesión. Luego manipula a otro usuario para que visite el sitio con su ID de sesión e inicie sesión. Ahora ha iniciado sesión como ese usuario y tiene sus privilegios, porque ambos están usando la misma sesión.

Para evitar esto, proporcione al usuario una nueva ID de sesión utilizando session_regenerate_id() cuando session_regenerate_id() sesión con éxito. Ahora solo tiene la ID de la sesión y su ID de sesión anterior ya no es válida.

session_register () se deprecia en 5.3, sugeriría que no se use. En su lugar solo usa

 $_SESSION['varname'] = "value"; 

session_id que acaba de usar si desea obtener la ID de sesión para almacenar en una base de datos, esto no es “necesario” para su uso. session_name, simplemente establece un nombre, esto no es necesario. El regenerado es si quieres hacer una nueva identificación, esto tampoco es necesario a menos que tu aplicación lo necesite, para una sesión de inicio de sesión, dudo mucho que la uses.

Los demás, espero que entiendas lo que hacen (es decir, el desarmado / destructor). Pero la esperanza que da alguna idea.

Los ID de sesión son el identificador de la sesión. La forma en que un servidor almacena datos sobre un cliente está en una cookie. Esta cookie se envía con cada solicitud HTTP al servidor por ese cliente. PHP establece una cookie para ser un token de cadena aleatorio. Este token identifica al cliente y lo relaciona con un conjunto de pares clave-valor. La idea de una variable de sesión es que las cookies se puedan alterar fácilmente. Sin embargo, las ID de sesión, al ser cadenas aleatorias, son difíciles de duplicar y, por lo tanto, agregan seguridad.

Usualmente uso session_id () al crear cestas de compras para poder rastrear lo que ese usuario ha agregado y luego, una vez que recibo una respuesta de la pasarela de pago de que el pago fue exitoso, entonces session_regenerate () para que cuando estén de vuelta en mi sitio web sus cestas anteriores no son visibles y para mí es como si un nuevo usuario hubiera “entrado” en la tienda.