Foros del Web » Programando para Internet » PHP »

problemas con SESSION

Estas en el tema de problemas con SESSION en el foro de PHP en Foros del Web. Hola! Soy nueva aki pero he visto ke este foro puede ser muy util para mi. A ver..tengo el siguiente problema. Tengo una pagina de ...
  #1 (permalink)  
Antiguo 30/07/2007, 04:29
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
problemas con SESSION

Hola! Soy nueva aki pero he visto ke este foro puede ser muy util para mi.
A ver..tengo el siguiente problema.
Tengo una pagina de inicio donde pido al usuario ingresar su login y password (está registrado previamente). Pasa por control.php donde hace un query a la bdd y redirecciona, si todo es correcto, a menu.php. Pues bien, me gustaría poder hacer un saludo a este usuario, pe: ¡Hola Pepita Gomez!
¿Como le asigno una variable de sesion para poder utilizarla en distintas paginas?

¡gracias por adelantado!
  #2 (permalink)  
Antiguo 30/07/2007, 05:49
Avatar de zaida  
Fecha de Ingreso: noviembre-2006
Ubicación: Madrid (España)
Mensajes: 266
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: problemas con SESSION

Prueba con ésto;

Código PHP:
$nombre_usuario=$_SESSION['nombre_sesión']; 
Bienvenido
Código PHP:
<?php echo $nombre:usuario;?>//dónde quieras que aparezca
Espero que te sirva, saludos
  #3 (permalink)  
Antiguo 30/07/2007, 06:27
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: problemas con SESSION

Hola, pasa por aqui que te va a servir seguro.
Sesiones
Saludos Espero que te sirva.

PD: bienvenida al foro setram
__________________
->Aprender es un proceso que incluye el error..
  #4 (permalink)  
Antiguo 01/08/2007, 03:55
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Gracias a los dos pero sigue sin funcionarme...

El probado a ejecutar el codigo del link que me mandabas y me sale el siguiente error:

Notice: Use of undefined constant test - assumed 'test'
(de la linea 16 de index.php)

He probado codigos de otra gente y me sale el error:
-->Warning: Cannot modify header information - headers already sent by... <---

estoy pensando que alomejor tengo algo mal en el archivo php.ini
tengo: session.save_path = /tmp
y session.use_cookies = 1
eso está bien??

ayuda por favooooor!!!
  #5 (permalink)  
Antiguo 01/08/2007, 04:17
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Lo que te ha puesto zaida debería funcionar salvo porque hay un pequeño fallo, el
<?php echo $nombre:usuario;?>, eso te dirá uso de constante no definida ya que anteriormente la ha definido como $nombre_usuario y no $nombre.usuario.

El headers already sent by suele ocurrir cuando haces el session_start(); debajo de algun otro trozo de código, deberías meter el session_start(); arriba de todo, incluso vigilando que no haya espacios en blanco.
  #6 (permalink)  
Antiguo 01/08/2007, 04:50
Avatar de zaida  
Fecha de Ingreso: noviembre-2006
Ubicación: Madrid (España)
Mensajes: 266
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: problemas con SESSION

Cita:
Lo que te ha puesto zaida debería funcionar salvo porque hay un pequeño fallo, el
<?php echo $nombre:usuario;?>
Upss se me colaron los dos puntos.

Código PHP:
<?php echo $nombre_usuario;?>
Saludos!!!
__________________
-- Cuando sientas miedo y no tengas un hombro dónde apoyarte, no te hundas en la soledad, pues si lo haces fracasarás --
  #7 (permalink)  
Antiguo 01/08/2007, 05:19
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Siisiis eso ya me habia dado cuenta.
Pero sigue sin funcionar...

Os mando el codigo
--> control.php
Código PHP:
<? session_start(); 
$link mysql_connect("localhost""mysql_user""mysql_password");
mysql_select_db("acc",$link); 
$user=$_POST["usuari"];
$pass=$_POST["password"];
$ssql "SELECT * FROM usuaris WHERE login='$user' and password='$pass'"
$rs mysql_query($ssql,$link);
if (
mysql_num_rows($rs)!=0){ 
    
$nombre_usuario=$_SESSION['nombre_usuario'];  
    
header ("Location: menu.php"); 
}else { 
    
header("Location: registre.php"); 

mysql_free_result($rs); 
mysql_close($link); 
?>
--> menu.php

Código PHP:
<? session_start();
$link mysql_connect("localhost""mysql_user""mysql_password");
mysql_select_db("acc",$link); 
echo 
$nombre_usuario//dónde quieras que aparezca
?>

gracias de nuevo!
  #8 (permalink)  
Antiguo 01/08/2007, 06:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

En el control.php haces:

$nombre_usuario=$_SESSION['nombre_usuario']; lo cual no tiene mucho sentio pues asignas a la variable $nombre_usuario un valor que no existe, además de que la variable que debes "llenar" es la de SESSION y no $nombre_usuario.

No sería $_SESSION['nombre_usuario'] = resultado obtenido por la consulta ?
  #9 (permalink)  
Antiguo 01/08/2007, 06:29
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: problemas con SESSION

Hola setram, coloca esta parte asi:
Código PHP:
if (mysql_num_rows($rs)!=0){  
$_SESSION['nombre_usuario']=$_POST["usuari"]; 
Hechale otra mirada al codigo que te deje en el enlace.
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #10 (permalink)  
Antiguo 01/08/2007, 06:30
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

buf! es que he probado ya tantas cosas que estoy liadisima!!

a ver, es que ahora que lo pienso, lo que intento hacer no está muy bien explicado.
Cuando el usuario registrado entra en la pagina menu:
1- me gustaria mostrar un saludo con su nombre y apellido, nada de login ni password. es decir, que tendría que hacer una consulta a la bdd no? pero como hago para que se guarde?
2- cuando el usuario introduzca un comentario, quiero que en la pagina principal aparezca quien lo ha escrito. Por eso tanto lío con las sesiones..

Entiendes lo que quiero hacer?

no se si funciona asi pero la idea que tengo yo en la cabeza es que una vez comprobado que login y password esten en la bdd, $_SESSION sea el id del usuario (campo incluido en la tabla usuaris)

lo siento por todas mis dudas...es que ya no se k hacer!!!
  #11 (permalink)  
Antiguo 01/08/2007, 06:33
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Cita:
Iniciado por cala932 Ver Mensaje
Hola setram, coloca esta parte asi:
Código PHP:
if (mysql_num_rows($rs)!=0){  
$_SESSION['nombre_usuario']=$_POST["usuari"]; 
Hechale otra mirada al codigo que te deje en el enlace.
Saludos
cala esto que me has dicho funcionó!!!! gracias
pero me va a servir para identificar al usuario cuando inserte algo?

merci!
  #12 (permalink)  
Antiguo 01/08/2007, 06:46
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: problemas con SESSION

Hola, claro, cuando el usuario introduzca un comentario, deberas guardar tambien su nombre. Y listo, acuerdate de colocar el session_start(); al principio de tus paginas para que puedas reconocer a ese usuario.
Saludos.
__________________
->Aprender es un proceso que incluye el error..
  #13 (permalink)  
Antiguo 01/08/2007, 07:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Hay algo que no entiendo... para qué es esa consulta si luego el valor $_SESSION['usuario'] lo rellanas con el valor usuario que te han pasado por POST ?

Edit: Vale... creo que es para ver si el usuario esta registrado o no (si devuelve alguna fila de la BD o no), si devuelve algo quieres guardar su nombre para luego saludarlo en la página inicial, vale. Entonces mi anterior post me confundí, y sencillamente era girar las dos variables como te ha indicado cala932.


PD: Si solo es para comprobar eso no estaría mejor hacer un Select nombre (o algun campo existente de la base de datos) en lugar de un select * ? Así le ahorramos un poco de trabajo al servidor.
  #14 (permalink)  
Antiguo 01/08/2007, 07:55
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: problemas con SESSION

Cita:
Iniciado por xequet Ver Mensaje
Hay algo que no entiendo... para qué es esa consulta si luego el valor $_SESSION['usuario'] lo rellanas con el valor usuario que te han pasado por POST ?

Edit: Vale... creo que es para ver si el usuario esta registrado o no (si devuelve alguna fila de la BD o no), si devuelve algo quieres guardar su nombre para luego saludarlo en la página inicial, vale. Entonces mi anterior post me confundí, y sencillamente era girar las dos variables como te ha indicado cala932.


PD: Si solo es para comprobar eso no estaría mejor hacer un Select nombre (o algun campo existente de la base de datos) en lugar de un select * ? Así le ahorramos un poco de trabajo al servidor.
Efectivamente xequet, si la consulta es exitosa, entonces quiere decir que hemos encontrado al usuario en nuestra base. Y el nombre que trae por post es el mismo que estara almacenado en la base, por lo tanto es lo mismo asignarle a la variable de sesion cualquiera de los dos. Y si puede optimizarce la consulta haciendo una seleccion de los campos que se necesitan nada mas y no todos.
Saludos.
__________________
->Aprender es un proceso que incluye el error..
  #15 (permalink)  
Antiguo 01/08/2007, 08:25
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Y otra cosa..

si quisiera ademas mostrar el campo e-mail de la misma tabla, debería hacer una consulta a la Bdd justo después de

if (mysql_num_rows($rs)!=0){

o como?

Muchas graciaaaas
  #16 (permalink)  
Antiguo 01/08/2007, 08:30
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: problemas con SESSION

Cita:
Iniciado por setram Ver Mensaje
Y otra cosa..

si quisiera ademas mostrar el campo e-mail de la misma tabla, debería hacer una consulta a la Bdd justo después de

if (mysql_num_rows($rs)!=0){

o como?

Muchas graciaaaas
Buenas nuevamente setram, bueno, si el e-mail se encuentra en la misma tabla donde se encuentra el nombre de usuario, debes hacer asi:
Código PHP:
if (mysql_num_rows($rs)!=0){ 
$row=mysql_fetch_array($rs);
$_SESSION['mail']=$row['nombredelcampoquetieneelmail']; 
Sino si esta en otra tabla, entonces debes realizar otra consulta buscando el mail de ese usuario.
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #17 (permalink)  
Antiguo 01/08/2007, 08:46
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: problemas con SESSION

Muchisiiiiimas gracias!! funciona a la perfección
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:00.