2010-07-23 34 views
9

im bien un novato en sesiones Imaginemos que tenemos un pequeño sitio de inicio de sesión,¿Para qué se utilizan session_id, session_regenerate_id y session_name?

heres una lógica

  1. entrada
  2. si la contraseña correcta = usar $ _SESSION [isaloginuser] = 1
  3. comprobar sesión para ver si menús con $ _SESSION [isaloginuser] = 1
  4. muestran los menús
  5. el usuario quiere cerrar las
  6. sesión de desarmar
  7. destruir el sistema sesión

es lo que utilizar

session_register 
session_destroy 
session_unset 
session_start 

dónde viene el session_id & la session_regenerate o session_name va en? en el sitio php Dice

session_id() se utiliza para obtener o establecer el id sesión para la sesión actual.

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

+1

no solo la contraseña, sino también el nombre de usuario :) – Sarfraz

+1

siempre usa 'session_regenerate_id' cuando el nivel de privilegio cambia – knittl

+0

[Este enlace] (http://stackoverflow.com/questions/18262620/what-additional- value-does-session-destroy-bring-when-i-am-using-session-regener) tiene dos impresionantes respuestas en las sesiones. – CoR

Respuesta

14

No, no necesita usarlas. En general todo lo que necesita es

  • session_start para iniciar el manejo de sesión, y
  • session_destroy para destruir los datos de la 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 son para obtener y establecer el identificador de sesión y sesión de nombre de ID actual (por defecto 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.

+2

bien, pero ¿qué hace en el mundo real? ¿Lo estás usando en uno de tus proyectos? para qué ? –

+0

@ Adam Ramadhan: ¿Qué hace qué hacer en el mundo real? – Gumbo

+0

session_id, name y regenerate. –

2

Los identificadores 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.

3

session_register() se deprecia en 5.3, sugeriría que no se use.En lugar de ello sólo tiene que utilizar

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

SESSION_ID que sólo utiliza si desea obtener el identificador 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 entiendan lo que hacen (es decir, desarmar/destruir). Pero la esperanza que da alguna idea.

2

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

+2

'$ _SESSION ['cart'] = null' no funcionaría? –

10

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

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 usando session_regenerate_id() cuando inicie sesión con éxito. Ahora solo tiene la ID de sesión, y su ID de sesión anterior ya no es válida.

+0

¿deberíamos agregarlo al iniciar sesión? o en logout? –

+1

Es importante hacerlo al iniciar sesión. No creo que sea necesario hacerlo al cerrar la sesión, aunque no es una operación costosa. – Hammerite

+1

@Hammerite Buen ejemplo, pero cada vez que un usuario actualiza la página, 'session_generate_id()' genera nuevos conjuntos de sesiones, ¿no afecta esto a la sesión? – samayo

Cuestiones relacionadas