Foros del Web » Programando para Internet » PHP »

Sesiones como

Estas en el tema de Sesiones como en el foro de PHP en Foros del Web. Estoy trabajando una cosa con sesiones. Ahora las sesiones las creo de forma normal. La duda que tengo es si se le puede dar un ...
  #1 (permalink)  
Antiguo 21/06/2004, 15:05
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Sesiones como

Estoy trabajando una cosa con sesiones. Ahora las sesiones las creo de forma normal. La duda que tengo es si se le puede dar un nombre a esa sesión, por ejemplo, session1 cosa que a la hora de destruirla pueda destruir solo esa y no todas. Lo que deseo almacenar en la sesion de forma temporal son los datos de un usuario que trata de registrarse en mi sitio, porque si ocurrieron errores mientras se trataba de registrar entonces puedo redireccionar al usuario al formulario de registro con algunos campos ya llenos con los datos que el había puesto. Sería algo engorroso que si se equivoca en cualquier dato tener que llenarlos todos de nuevo. Así de esa forma si se realizo bien el proceso pues simplemente destruyo esa variable de session y ya. Creo que con este código:
Código PHP:
session_start();
session_unset();
session_destroy(); 
se destruyen todas las sesiones existentes o me equivoco?
Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 21/06/2004, 15:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si trabajas las variables de sesión con el array superglobal $_SESSION .. a la hora de destruir X variables de sesión concretas sólo tienes que hacer:

Código PHP:
<?
session_start
();
unset(
$_SESSION['variable']);
unset(
$_SESSION['variable2']);
unset(
$_SESSION['variableN']);
Si haces un "session_destroy()" borraras toda la sesión activa (con todas sus variables y el SID que se creó para esa sesión pasará al estado "garbage" en espera de que sea borrado físicamente ...)

Se puede poner nombre a sesiones con session_name() (antes de tu session_start() habría que usarlo). Si usas nombre de sesión deberías "matar" la sesión entera tipo:

Código PHP:
<?
session_name
("nombre");
session_start();
// todo el array ...
unset($_SESSION);
session_destroy();
cada grupo de session_name("nombre") y session_start() que hagas en teoría sería una sesión independiente . .pero, no puedes crear en un mismo script dos sesiones completas con nombres diferentes. Lo que si que puedes hacer es trabajar con arrays en tus sesiones y crear por ejemplo arrays bidimensionales para "hacer" un unset() a un array concreto que ya no necesites ese grupo de varaibles .. (creo que es complicarse la vida con eso cuando hay que ver el enfoque útil y sencillo al tema...)

Un saludo,
  #3 (permalink)  
Antiguo 21/06/2004, 18:56
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Gracias

Cluster entendí muy bien lo que me dices. Aclaré mi duda pero no abra una posibilidad de que yo cree una variable de sesión con x datos, pueden ser 3 o más y que esa sesión tenga un nombre, porque las sesiones las construyo en dependencia de la cantidad de datos que vaya a salvar y sería algo engorroso hacer unset desde 1 hasta 15 por ejemplo. Que me recomiendas. Ese método que me dices de arreglos podría ser una alternativa pero no lo entendí muiy bien.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 22/06/2004, 07:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Vamos a ver ...

Principalmente tienes que comprender que es "una sesión" como se identifica y a que asocia ..

Como ya te comenté. La sesión es única ... puedes darle nombre si quieres pero iguamente sólo puedes crear una sesión a la vez que creará su correspondiente SID (nombre que le des o el que php dá por defecto + ID de sesión (único y aleatório)).

Dentro de una sesión guardas "variables" .. estas variables pueden ser de cualquier tipo: normales o bien arrays (podrías meter objetos también .. pero se pierden los métodos).

Si quieres "agrupar" X variables puedes usar arrays bidimensionales tipo:
$datos[elemento][grupo]

Ejemplo:
Código PHP:
$datos['variables_usuarios']['id_usuario']="1";
$datos['variables_usuarios']['nombre_usuario']="pepe";

$datos['otras_variables']['nose']="valor"
Como ves .. todavía no he metido por médio nada de "sesiones" .. por qué una vez que tienes claro como "diseñar" tu array sólo toca "llevarlo" a una sesion:

Código PHP:
$_SESSION['variables']=$datos
Esto te permitiría hacer algo tipo:
Código PHP:
unset ($_SESSION['variables']['variables_usuarios']); 
y así eliminar esas X "variables" referentes a usuarios ..

pero como veras .. se empieza a complicar el hecho simple de definir esas variables en el array y gestionarlo ..

Puedes usar también técnicas de "Variables variables" para "componer" dinámicamente nombres de variables tipo

Código PHP:
$usuarios_variables=array("id"=>"1","nombre"=>"pepe");
foreach (
$usuarios_variables as $variable=>$valor){
$variable_nombre=$usuarios_{$variable};
   
$_SESSION{$variable_nombre}=$valor;

así te quedaría
$_SESSION['usuarios_id']="1";
$_SESSION['usuarios_nombre']="pepe";

Usando el mismo bucle .. (foreach) y "varaibles variables" (el {} en la variable) podrías aplicar un:

Código PHP:
foreach (....){
unset(
$variable_nombre);

Si es que tanto te "molesta" hacer un unset() a 15 variabels que por otro lado las has definido igualemente "a mano".

Un saludo,

Última edición por Cluster; 22/06/2004 a las 07:38
  #5 (permalink)  
Antiguo 23/06/2004, 09:51
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa pregunta sesiones

Disculpa que les pregunte soy nuevo en sesiones y este ejemplo me ha ayudado a enterderlas, lo que quiero saber es como hago si en usuario le da una obcion de la pagina y llama otra pagina para conservar los datos de la secion, se los paso por el post o que debo hacer, y si las tengo en la otra pagina se siguen llamando igual.
Muchas gracias
  #6 (permalink)  
Antiguo 23/06/2004, 10:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entendí nada jtguti ..

cuando dices "secion" (te refieres a sesión?) y lo de "obcion" ? (será opción?).

En principio si tienes un formulario (con cualquier elmento de formulario) la selección que haga o datos que introduzca tu usuario seguiran pasando al scirpt que apuntes en tu action del formulario (o bien a la página que indiques si haces el submit por javascript) y por el método que indiques en ese formulario (method=POST o GET . .si fuese por el URL en un link ..sería GET). Una vez que tus datos llegan a "PHP" (al script de proceso) .. ahí si quieres puedes guardar esos datos en una variable(s) de sesión y podrás usarlos (llamarlos, accederlos) desde las páginas (mejor dicho scripts PHP) que lo necesites por el método de acceso a variables de sesión: (ejemplo): $_SESSION['nombre_variable'] .. Pero, el proceso de "hacer llegar" esos datos desde el cliente (formulario) al servidor (PHP tu script ..) se hace por los métodos tradicionales.

Un saludo,
  #7 (permalink)  
Antiguo 23/06/2004, 10:42
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa pregunta

Disculpa Cluster mis errores ortograficos, es que estoy tipeando rapido. lo que te quiero en si preguntar, vamos a suponer que inicio una session:
session_start();
declaro una variable que quiero conservar
$_SESSION['nombre']="xxxx";
necesito pasarle el SID a la pagina que llamo ya sea por el metodo accion o cualquiera que use para poder usar la variable $_SESSION['nombre'];
Gracias
  #8 (permalink)  
Antiguo 23/06/2004, 11:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, el SID se lo tienes que pasar al script/página que saltes .. Pero para eso PHP te ayuda en esa taréa (para que no tengas que hacerlo tu manualmente en todo link que uses para pasar a la siguiente página o formulario .. o redirección en general).

PHP te ofrece dos formas de propagar el SID de forma automática:
1) COOKIES
2) Reescribiendo ciertos Tag's HTML

Si usas cookies (php.ini: session.use_cookies = ON o 1 ..) te olvidas del tema "SID" .. sólo asegurate de usar navegadores que acepten cookies. El SID viajará en la cookie y así es como PHP lo leerá para asociar el archivo de sesión (Con tus sesiones) que se crea en el servidor (con tus datos).

Si no quieres propagar el SID en cookies y quieres hacerlo por el URL; si lo haces "automático" tendras que usar: (php.ini) session.use_trans_sid = 1 u ON .. de esta forma PHP "reescribirá" tag's HTML tipo links (<a href ..) para insertar el SID en ellos de forma automática (cosa que tendrías que hacer tu a mano si no usas esa configuración de PHP ni la otra sobre cookies para propagar el SID). Esta forma de propagar plantea algunos problemas: PHP no reescribe redireccionamientos de javascript (window.open .. window.location ... y algunos más) .. tampoco etiquetas <meta> de refresh .. ni redireccionamientos vía PHP con header("Location ..."). En esos casos particulares hay que hacerlo a mano (la propagación del SID).

SID es una "constante" y como tal puedes ver su valor o usarla para componer como variable más extra en tus links si tienes que propagar el SID en ellos.

De la configuración de PHP sobre ese tema . .así podras "asumir" que el SID ya se está propagando "sólo" o tendras que hacerlo tu a mano (o cambiar la configuración de PHP que no sólo (para este caso) se puede hacer desde el php.ini sino que se puede hacer vía ini_set() función por ejemplo ..)

Un saludo,
  #9 (permalink)  
Antiguo 23/06/2004, 12:14
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa pregunta

Muchas gracias ya he entendido y ya he hecho varia pruebas y me resultaron ,una duda al utilizar estas opcion no tendre problemas con mi seguiridad, tengo que eliminar las variables y destruir la sesion., otra cosa clustes, sabes que ahora estoy usando una base de datos en oracle 9i, pero no se como configurar mi servidor ni que necesito ya que la base de datos esta en un servidor el cual tengo su ip y el servidor web esta en otro, pero no se como configurar el apache, el servidor web es linux para realizar la conexion sin problemas.
  #10 (permalink)  
Antiguo 23/06/2004, 14:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
una duda al utilizar estas opcion no tendre problemas con mi seguiridad, tengo que eliminar las variables y destruir la sesion.,
No sé a que te refieres. Como estás propagando el SID?

Cita:
otra cosa clustes, sabes que ahora estoy usando una base de datos en oracle 9i, pero no se como configurar mi servidor ni que necesito ya que la base de datos esta en un servidor el cual tengo su ip y el servidor web esta en otro, pero no se como configurar el apache, el servidor web es linux para realizar la conexion sin problemas.
Inicia un nuevo tema (y de paso antes usa el buscador del foro .. ). Intenta no mezclar cosas en mensajes de otra temática ..

Un saludo,
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 01:54.