Foros del Web » Programando para Internet » PHP »

Variables de sesion?

Estas en el tema de Variables de sesion? en el foro de PHP en Foros del Web. Que son exactamente las sesiones, y las variables de sesion? en que consisten y para que sirven? he leido algo al respecto pero no me ...
  #1 (permalink)  
Antiguo 18/05/2004, 04:45
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 6 meses
Puntos: 4
Variables de sesion?

Que son exactamente las sesiones, y las variables de sesion? en que consisten y para que sirven? he leido algo al respecto pero no me aclaro mucho...
  #2 (permalink)  
Antiguo 18/05/2004, 06:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Tal vez será mejor explicarte lo que no entendistes o aclararte dudas si nos comentas que "entiendes tu sobre sesiones y variables de sesión"

Por qué .. a lo mejor te repetimos las mismas frases que has leido y nunca comprendistes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/05/2004, 07:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 6 meses
Puntos: 4
ejem... totalmente cierto, fui demasieado escueto...
Pues a ver... yo las variables de sesion las veo como variables que cuando navegas de una pagina a otra, el ordenador, o mejor dicho, la aplicacion por la que navegas, se sirva de ellas para tenerte identificado.
¿Ando muy alejado? que utilidad tienen, o pueden tener?
  #4 (permalink)  
Antiguo 18/05/2004, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Si, en su base es lo que significa.

La sesión en sí es un "contenedor" de "varaibles" (de sesión) que se crea y gestina -en el servidor- (no como una cookie que sería en el "cliente=> PC usuario").

La útilidad que tienen por ejemplo la más usada es para sistemas de autentificación de usuarios; donde al ingresar tu usuario a tu aplicación y autentificarlo (contra tu Base de datos, sistema de archivos o variables simples donde almacenas su par: usuario/contraseña) .. creas una variable de sesión (en una sesión nueva que se crea automáticamente si no existía ninguna para ese cliente) donde guardas algún dato tipo "el nombre del usuario". Esto te servirá para que tu sistema (tu aplicación) sepa ante cada acción (bajo ese valor de esa variable) quien está "autentificado" en ese instante y usarlo para registro de acciones que pueda hacer en la aplicación.

Esa sería la aplicación "estrella" donde más se usan las sesiones, pero .. las sesiones no quedan ahí solo (su uso). Imagina una série de N formularios que tienes que ir recolectando datos que van ingresando (el usuario) y .. al final del proceso del último formulario tienes que procesar esos datos para almacenarlos en una Base de datos por ejemplo. Bien .. entre el formulario 1 al 2 .. del 2 al 3 .. del N al N vas guardando tus variables en una sesión y al final del proceso del último formulario .. las tomas de la sesión para realizar el proceso que corresponda.

Recuerda que en PHP las variables sólo tienen el ambito del script que las toma o procesa . .Nada más .. por eso en los momentos que necesites de unas variables "compartidas" (para ese usuario "sesión)" tienes que usarlas (o bien cookeis). Podrías "propagar" esas variables que requieras por el URL (en links . en campos hidden de formularios) .. Pero si usas sesiones realmente resulta "comodo" y sobre todo seguro ir usando sesiones para almacenar esos datos.

Ejemplo de "seguridad" .. esas variables de sesión permanecen en el servidor .. así que no son alterables como lo podrían ser alguna variable que propagues en el URL (en un link por ejemplo).

Otro ejemplo: El "carrito de compra" .. done navegas por tu sitio "añadiendo" variables a la sesión (serían tus identificadores de tus productos) y cuando le das a "comprar" lo que haces es leer esas variables de sesión para procesar tu pedido.

A nivel de implementación de "sesiones" . Las sesiones son únicas para el cliente que las crea. Se les asigna un "SID" (identificador único de sesión) a cada sesión que se inicia (es único) y se usa el mismo siempre y cuando este SID llege propagado al script que necesite accder/crear alguna variable de sesión para esa sesión activa.

La "propagación" del SID puede ser por el URL (manual o automático por parte de PHP), o por cookies siendo más segura hacerlo por cookies (sólo la propagación del SID .. los datos siguen estando en el servidor y es grácias a ese SID que se mantiene la relación con el "archivo" físico que se crea en el servidor que sirve de "contenedor" a esas variables.

Si se tel olvida o hay problemas en la propagación del SID .. la sesión se pierde (la que estabas usando) y se crea una nueva .. así que los datos "fisicos" estarían bajo otro SID .. Este suele ser el principal problema a la hora de implementar un sistema que use sesiones: no se suele prestar atención al tema IMPORTANTISIMO de propagación del SID y .. luego llegan los problemas.

El tiempo que dura una "sesión" se configura normalmente desde configuración de PHP (por php.ini y alterable con ini_set() en muchos casos u otros médios). Por eso es importante saber que directivas de configuración intervienen en la forma o comportamiento de las sesiones para comprende cosas como "me dura la sesión una sóla página .. " o "no tienen valor mis variables de sesión" .. o "paso con un link a otra página y me funcionan las sesiones .. pero hago un redireccionamiento por javascript o un window.open o un header("location" .. ) etc y se me pierden las variables de la sesión". Todo esto (y mucho más) siempre suele ser el mismo problema: propagación del SID.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/05/2004, 11:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 10 meses
Puntos: 0
Sonrisa

Hola:

Aprovecho esta conversación para hacer una pregunta.

Se trata de saber si puede definir una variable y registrarla para la sesión en una página que establece conexión con base de datos, pero que no solicita las variables que quiero registrar para la sesión.

Dicho con un ejemplo sería, la ´lásica validaci´n en que se selecciona de la tabla de la BD en usuario y la contraseña, para procesarlas y dar acceso o no. Pués bien lo que me gustaría saber es si en esta página puedo definir y registrar otras variales y usarlas en otras páginas tomando su valor en la conexión de estas otras páginas.

Con elo pretendo que todas las variables que vaya a usar las pueda registrar de entrada en la primera página.


gracias por vustras opiniones
  #6 (permalink)  
Antiguo 18/05/2004, 11:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Como mencionaba más arriba . .una "sesión" es un simple "contenedor" de variables .. así que puedes crear cualquier tipo de variable en la sesión. Pueden ser variables nomales .. o arrays (y hasta objetos pero serializados: ahí pierdes los métodos ...)

Ejemplo:

Código PHP:
<?
session_start
();
$_SESSION['una_variable']="algo";
$_SESSION['otra_variable']="otra cosa";
$_SESSION['otra_mas_variable']=array(1,2,3); // esto sería un array ..
?>
Y para accederlas:

Código PHP:
<?
session_start
();
// Para el caso de variables simples ...
echo $_SESSION['una_variable'];

// para el caso de arrays . .tratarlos como un array común:
foreach ($_SESSION['otra_mas_varible'] as $indice=>$valor){
    echo 
$indice." => ".$valor."<br>";
}
?>
En una sesión (como variable) no podemos meter "links" de conexión a BD, sockets, archivos (fopen ...) y similares

algo tipo:

<?
session_start();

$conexion=mysql_conncet(....);
?>

// y hacer
$_SESSION['conexion']=$conexión;
?>

O por lo menos no lo he probado y no he visto trabajar así un "link" de conexión bajo una sesión (si lo prueban.. avisan de los resultados).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 18/05/2004 a las 11:50
  #7 (permalink)  
Antiguo 18/05/2004, 11:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 10 meses
Puntos: 0
Muchas gracias por tu respuesta.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:28.