Foros del Web » Programando para Internet » PHP »

Con usuarios y sesiones

Estas en el tema de Con usuarios y sesiones en el foro de PHP en Foros del Web. Hola a todos! He estado buscando sin éxito lo siguiente: Cuando creo una sesion, lo hago de esta forma: Código PHP: session_start (); session_name ( ...
  #1 (permalink)  
Antiguo 02/06/2005, 15:24
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Sonrisa Con usuarios y sesiones

Hola a todos!
He estado buscando sin éxito lo siguiente:
Cuando creo una sesion, lo hago de esta forma:
Código PHP:
session_start();
session_name('usuario');
$_SESSION['usuario']=$nivel
Pero como se puede ver, le asigno a la variable usuario el valor del nivel de acceso que posee. Lo que quiero es, cargar en la misma sesion, el nombre del usuario, para que cuando se haga una modificación cualquiera en la base de datos, el dato de quién realizó la modificación quede guardado automáticamente.
Puede que sea muy obvio lo que pregunto, pero no encuentro nada parecido y soy novata en esto....
Mil gracias de antemano a quienes me contesten...
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 02/06/2005, 16:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Estas confundido ..

Una sesión es como un "contenedor" de variables (de cualquier tipo) .. el nombre que le puedas dar a la "sesión" en si (su "contenedo") da igual en principio (de hecho PHP si no se lo indicas le dá uno por defecto: PHPSESSID o similar, se configura en tu php.ini)

Si quieres darle un nombre de sesión a tu "sesión" (valga la rebundancia) .. OK, pero se usa la función session_name() -antes- de session_start().

$_SESSION será un array (asociativo) donde cada elemento de esta será equivalente a tu "variable de sesión" para que metas valores en el .. Ejemplo:

Código PHP:
<?
session_name
('usuarios');
session_start();
$nivel="blablabla";
$_SESSION['nivel_usuario']=$nivel
// redireccionar a donde sea ..
?>
<a href="dos.php">pasar a dos.php</a>
En los sub-siguientes scripts que desees usar esa variable de sesión: "nivel_usuario" tienes (ya que en tu caso defines nombre de sesión) usar el mismo:

dos.php
Código PHP:
<?
session_name
('usuarios');
session_start();
echo 
$_SESSION['nivel_usuario']; 
// redireccionar a donde sea ..
?>
Un saludo,
  #3 (permalink)  
Antiguo 03/06/2005, 07:25
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
.

Hola Cluster!
Ok, Si antes estaba mareada... bueno ahora lo estoy peor.
Es que mi ejemplo está funcionando, no era un post de "NO FUNCIONAAAAA", sino que lo que pregunto, que obviamente no se ha comprendido es:
Puedo, ya que el código que puse funciona y lo puedo usar en cualquier página para, por ejemplo, habilitar un link de esta forma:
Código PHP:
 if( $_SESSION['usuario']=="Admin"){ 
<
a href="pag.php">Entrar</a>
} else
<
p>entrar</p>

Pero como en la sesion usuario guardo el nivel, quisiera que esa misma sesion contuviera dos valores: el nombre y el nivel.
Es justamente eso lo que preguntaba... es decir.....
Puedo hacer por ejemplo esto:?
Código PHP:
 session_start(); 
session_name('usuario');
$_SESSION['usuario']=$nivel;
$_SESSION['nombre']=$nombre
No lo probé porque me parece que estoy haciendo macana... pero ahora lo pruebo y veo que pasa...
Aviso por si o por "Por favor... Qué hice mal????" El clásico novato jaja
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 03/06/2005, 08:43
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Bueno....
Me salió. Efectivamente probé el código que se me ocurrió tal cual está y en la pagina de bienvenida muestro el contenido de la sesion nivel y nombre de usuario y funciona lo mas bien....
Gracias por la sugerencia... si en algun momento no me llega a funcionar como lo estoy usando de todos modos guardé el código de Cluster para tenerlo de referencia....
Miles de gracias por responder.... hasta pronto!!!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #5 (permalink)  
Antiguo 03/06/2005, 08:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te digo ya que el uso de session_name() donde lo usas no está haciendo lo que esperas . .de hecho NO está poniendo el nombre de la sesión que tu ahí defines. (por qué se hace antes de session_Start() ..)

www.php.net/session_name()

Código PHP:
Código PHP:
if( 
$_SESSION['usuario']=="Admin"){ 
<
a href="pag.php">Entrar</a>
} else
<
p>entrar</p>

No sé si ese código está fuera de contexto (hay algo más que no veamos?) por qué te falta antes de eso usar: session_start() (tal cual el ejemplo que te dí anteriormente)

Cita:
Pero como en la sesion usuario guardo el nivel, quisiera que esa misma sesion contuviera dos valores: el nombre y el nivel.
Es justamente eso lo que preguntaba... es decir.....
Puedo hacer por ejemplo esto:?

Código PHP:
session_start();
session_name('usuario');
$_SESSION['usuario']=$nivel;
$_SESSION['nombre']=$nombre;
Si, .. la explicación que te daba en parte no era que tu código "no funcione" .. no lo entendí así .. pero si que ví que no "comprendistes" que es una sesión. Intenté explicarlo de la forma más simple para que veas por ejemplo que el nombre de la "sesión" en sí .. es lo de menos y que en función de eso, puedes hacer lo que pretendes; eso sí .. donde quieras leer tus variables de sesión usa session_start() antes de pretender acceder a $_SESSION ... (y no uses session_name() hasta que estés segura de lo que hace .. es opcional como ya te mencioné).

Un saludo,
  #6 (permalink)  
Antiguo 03/06/2005, 08:58
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Si, el session_start(); está en la cabecera de todas las páginas, ya que si expiró por alguna razón lo mando nuevamente a login.
Ahora el tema es que no te comprendo para nada... por qué decís que no va a hacer lo que quiero que haga si efectivamente lo está haciendo.
Yo quiero tener bien dividido el nombre y el nivel porque necesito que según el usuario que sea se guarde su nombre automáticamente en cada modificación que haga.... y además que acceda solo a los sectores que tiene permitido ingresar.
No quiero tener siempre el nombre por ejemplo, y buscar el nivel en la base de datos cada vez que carga... me parece raro....
El tema es que lo que tengo está funcionando tal y como lo puse... y muestra lo que tiene que mostrar no cualquier cosa... no entiendo por qué me decís que no funciona.
En fin. lo que decís de las sesiones si, entiendo lo que son... relativamente... me falta pulir bastante pero mas o menos lo comprendo. El tema era que no me imaginaba como cargar en la misma sesion dos valores absolutamente diferenciables entre si. poder rescatar para algunas ocasiones el nombre y para otras el nivel... pero lo que hice en serio que lo probé y lo hace perfectamente.
Por qué no probás a ver si a vos tambien te funciona en una de esas.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #7 (permalink)  
Antiguo 03/06/2005, 09:14
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
.

Ok. Mil disculpas por mi terquedad.....
Entendeme que es viernes y aún no estoy del todo despierta (es mas, no creo que llegue a despertarme del todo hasta mañana al mediodía )
Bie, el tema entonces es darle un solo nombre a la sesión, y colocar varios elementos dentro. entonces, al llamar a $_SESSION ['elemento'] por ejemplo para mostrarlo, ya estaría.
Bueno, ahora si millones de gracias por no insultarme de tan terca que estoy!
En lo subsiguiente me fijo mas correctamente antes de hablar, y trato de tomar unos cuantos litros de café al iniciar el viernes.
Te mando un saludo grande, hasta prontito
Ah! y muchas gracias nuevamente por tu respuesta.
__________________
Why can't we not be sober?
www.partitorium.com.ar
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 16:50.