Foros del Web » Programando para Internet » PHP »

Sesiones en forma de sistema de usuarios

Estas en el tema de Sesiones en forma de sistema de usuarios en el foro de PHP en Foros del Web. debido a que no le entendi mucho acerca del Sistema de Usuarios de Cluster. Me atrevi mejor a hacer mi sistema de usuarios. y me ...
  #1 (permalink)  
Antiguo 04/01/2003, 21:12
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Exclamación Sesiones en forma de sistema de usuarios

debido a que no le entendi mucho acerca del Sistema de Usuarios de Cluster. Me atrevi mejor a hacer mi sistema de usuarios. y me resulta mucho mejor, aunque casi se parece al de Cluster, en cuanto a la forma, el modo es totalmente distinto.

Ahora lo siguiente:

Código PHP:
<?php 
session_name
('misesion');
session_register('contador');
echo 
'<a href="'.$PHP_SELF.'?'.SID.'">Contador vale: '.++$contador.'</a><br>';
echo 
'Ahora el nombre es '.session_name().' y la sesión '.$misesion.'<br>';
?>
Influenciandome acerca de este microprograma de sesion, como lo puedo centrar: corrijanme si lo hago.

Para dar nombre a la sesión:
Código PHP:
<?
$usuario
=$HTTP_POST_VARS["usuario"];
session_name('$usuario');
// Contenido; ?>
Para seguir con la misma sesión en diferentes páginas:

Código PHP:
<? 
session_start
(); ?>
Puede ser seguro de esta forma, y pasar varias formas con esto???
espero respuestas rapido
  #2 (permalink)  
Antiguo 04/01/2003, 21:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Pretendes usar un nombre de session diferente para cada usuario "longueado" en tu sistema?

Bueno, lo que es session_name() que define el nombre de la session en curso se ha de definir antes de un session_start() el cual debes usar para obtener el valor de alguna variable de session .. de session del nombre que se inició ..

Por lo tanto .. no veo lógica a tus pretensiones ya que si usas el nombre de session diferente al "por defecto de php.ini" .. el típico PHPSESID:

Código PHP:
<?php 
session_name
('misesion');
session_register('contador');
echo 
'<a href="'.$PHP_SELF.'?'.SID.'">Contador vale: '.++$contador.'</a><br>';
echo 
'Ahora el nombre es '.session_name().' y la sesión '.$misesion.'<br>';
?>
Esto ya sabras q el session_name() solo lo vas a ver a partir de la primera peticion que hagas de la pagina que inicies las sessiones .. En ese caso .. cuando pinches el link "contador vale: ...". A todo esto .. el SID lo estas propagando manualmente ok, es mas seguro pero acuerdate de propagarlo siempre .. en links, y tag hidden de formularios si los usas ..). Tambien recuerda que estas asumiendo globales las variables de sesion (ya que accedes solo con $sunombre .. ) esto no es nada recomendable usando sessiones .. usa los arrays asociados: $HTTP_SESSION_VARS['variable'] .. o si usas PHP 4.1.x en adelante $_SESSION['variable'].

Código PHP:
<? 
session_name
('aqui debe ir el nombre de la session que se inicio'); 
session_start(); // inicio de uso de sessiones para la session de nombre iniciado anteriormente.
echo $HTTP_SESSION_VARS['variable_de_session_bajo_name'];
?>
Así es como deberias acceder a las variables que tengas en la session .. Pero insisto, en la session de nombre que le distes anteriormente .. si le indicas otro .. será otra session no la misma en la que registrastes esas variables.

<?
$usuario=$HTTP_POST_VARS["usuario"];
session_name('$usuario');
// Contenido;
?>

Aquí viene el problema .. Si usas un formulario para dar nombre a una session .. está será valida solo en ese instante .. mejor dicho con este código das nombre a la session con el nombre del $usuario .. pero el las páginas que "salte" ese usuario han de tener ese mismo nombre $usuario .. ¿a caso piensas guardarte o leer constantemente de una BD/archivo de texto plano .. ese nombre de $usuario? .. Recuerda que ha de ser el mismo para las variables de session que guardes bajo ese nombre de session.

Lo normal es darle un nombre de la session que sea Unico para la aplicacion en curso (para tu sitio) ... o bien usar el por defecto de PHP .. (en mi script en la configuracion veras que te doy opcion a que pongas un nombre de session ..).

Luego, cada session que inicie un "login" se le asigna un SID (Identificador Unico de Session) que si lo asigna PHP es un numero aleatorio Unico para cada sesion iniciada .. Eso es lo que propagas por cada script para que se identifique todas las acciones de registrar/leer/modificar variables de session en la session activa bajo ese SID unico.

En la session puedes guardar Arrays e incluso Objetos (se pierden los metodos pero igual los puedes guardar) (todo serializado). Te lo comento por si quieres organizarte con arrays bidimensionales tipo $usuario['nombre']['propiedades'] ...

Un saludo,
  #3 (permalink)  
Antiguo 22/01/2007, 19:49
Avatar de Developmex  
Fecha de Ingreso: julio-2004
Mensajes: 33
Antigüedad: 19 años, 9 meses
Puntos: 0
Pregunta Nombre de variable de sesion dinamico

Que tal Cluster y demas "GURUS", hace tiempo que le pegoa estod e php y he investigado algunos detalles, soloq ue hoy me encuentro con uno algo recurrente.

Fijate que tengo un sistema de consultas, al que acceden varias personas con el mismo USUARIO, como utilize frames algunas variables o cadenas Query las meti a sesion, por ejemplo:

<?php
session_start();

$user="agus";
$cadena="SELECT * FROM CLIENTES where user=$user;";
$query = mysql_query($cadena) or die("No se ejecuto el query".mysql_error());
while($barrida_query = mysql_fetch_array($query)){
$cadena_query = $barrida_query['cadena_query'];
}

$_SESSION['query1']=$cadena_query;


Entonces cuando accesa algun usuario, la variable de sesion, siempre tiene el mismo nombre de variable, la bronca esta en que se me cruzan los reportes entre dichos usuarios , pues al parecer estan escribiendo en la misma sesion, aunque dichos usuariso esten distribuidos en 5 partes del mundo.

MI DUDA CONCRETA ES:

"COMO PUEDO ASIGNARLE UN NOMBRE DE SESION DIFERENTE A CADA VARIABLE DE SESION, DEPENDIENDO EL USUARIO QUE ESTE ACTIVO, HE LEIDO TU MENSAJE ANTERIOR A ESTE POST, PERO NO ME QUEDO MUY CLARO, RECUERDA QUE USO PHP5 Y EL ARREGLO SUPERGLOBAL
$_SESSION['CUALQUIER_NOMBRE']


EVIDENTEMENTE USANDO $_SESSION[$variable]=$cadena_query;
seria uan solucion, epro lo hice asi y como lo mencionas arriba, esa variable solo la puedes referir en esa misma pagina dodne la creaste , porque despues els istema ya no sabe que valor concreto tiene $variable y por consiguiente no sabe a que variable accesar.

AGRADECERIA MUCHO TU AYUDA, PUES CREO CON ESTE PLANTEAMIENTO EVITARIA EL CRUCE DE RESULTADOS AL EJECUTAR CONSULTAS EN MI SISTEMA, TE ENVIO UN SALUDO FRATERNAL.
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 06:20.