Foros del Web » Programando para Internet » PHP »

Rellenar una variable de sesión a través de un link

Estas en el tema de Rellenar una variable de sesión a través de un link en el foro de PHP en Foros del Web. Hola! Llevo unos días pegándome cabezazos contra la pared intentando guardar un valor en una variable de sesión... y no lo consigo. El caso es ...
  #1 (permalink)  
Antiguo 02/11/2011, 12:08
 
Fecha de Ingreso: noviembre-2011
Ubicación: Barcelona
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Rellenar una variable de sesión a través de un link

Hola!

Llevo unos días pegándome cabezazos contra la pared intentando guardar un valor en una variable de sesión... y no lo consigo.

El caso es que tengo una base de datos en la que tengo una serie de usuarios, y cada usuario tiene una serie de perfiles. Una vez logado, el usuario ve el listado de sus perfile y debería ser capaz de cambiar de perfil haciendo simplemente 'click' en uno de ellos.

El php es como sigue:

Código:
$usuario = $_SESSION["user"];
	
	//establecer conexión con la base de datos y seleccionar schema	
	$link = conectar();
	
	//determinar el id del usuario logado
	$result = mysql_query("select iduser from user where correo='" . $usuario . "'", $link);		
	if(!($row_user = mysql_fetch_array($result)))
		printf("<p>Mmmm, están pasado cosas chungas y no podemos averiguar cual es el user_id de %s</p>", $usuario);
	mysql_free_result($result);
	
	//determinar los perfiles de cada usuario
	$result = mysql_query("select * from perfil where user_id='" . $row_user['iduser'] . "'", $link);
	
	//pintar cabecera -------------------------------------------------------------------
	printf("<p class='usuario_perfil'><a href='#'>Usuario</a> ", $usuario);
	while($row_perfil = mysql_fetch_array($result))
		printf("| <a href='#' onclick=\"seleccionar_perfil();\">%s</a> ",$row_perfil['nombre']);
	printf("</p>");
	//fin de cabecera----------------------------------------------------------------------
	
	//pintar cuerpo de la zona de usuario--------------------------------------------
	if ($_SESSION['perfil'])
		printf("<p>Información del perfil %s</p>",$_SESSION['perfil']);
	else	//caso por defecto --> información básica del usuario
		printf("<p>Información básica del usuario</p>");
	
	//fin zona de usuario-----------------------------------------------------------------
	
	//liberar la información de la query y cerrar la conexión de la base de datos
	mysql_free_result($result);
	mysql_close() or die ('Error al cerrar la conexión: '.mysql_error());
Lo suyo es hacer una llamada desde el enlace del perfil (la línea en rojo del código) a una función escrita en php o javascript que meta el valor en ese momento de $row_perfil['nombre'] en la variable $_SESSION['perfil']. Pero claro, como podeis deducir, no me sirve recoger el valor con formulario.

¿Alguna idea?
  #2 (permalink)  
Antiguo 02/11/2011, 12:30
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: Rellenar una variable de sesión a través de un link

Esto es lo que quieres hacer?


Código PHP:
Ver original
  1. $_SESSION["perfil"]=$row_perfil["nombre"];
  2.   echo $_SESSION["perfil"];
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #3 (permalink)  
Antiguo 02/11/2011, 12:36
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 6 meses
Puntos: 29
Respuesta: Rellenar una variable de sesión a través de un link

no veo por ningun lado de tu codigo la linea

Código PHP:
Ver original 

mira este ejemplo lo que hace es poner un link que reenvia a la pagina crea la variable user con un valor que le doy y me reenvia de nuevo a la pagina mostrandome la variable $_SESSION[user]

Código HTML:
Ver original
  1. <?php
  2. session_start();
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>Documento sin título</title>
  8. </head>
  9.  
  10. <?php
  11.  
  12.     echo "<a href='mostrar_foto.php?perfil=jose'>Perfil</a>";
  13.     echo "<br>Session: ".$_SESSION[user];
  14.  
  15. ?>
  16. </body>
  17. </html>


Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $_SESSION[user]= $_GET[perfil];
  4.     header("location:perfil.php");
  5. ?>
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #4 (permalink)  
Antiguo 02/11/2011, 18:11
 
Fecha de Ingreso: noviembre-2011
Ubicación: Barcelona
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Rellenar una variable de sesión a través de un link

CesarHC, no es eso lo que pretendo exactamente, pero gracias de todos modos.

Tomark4, olvidé decir que el código php que puse está incluído con un include(archivo.php) en el index.php.

Por otro lado, lo que pretendo hacer es lo que me propones tú, pero lo ideal sería hacerlo sin recargar la página ni pasar variables por GET o POST.

¿Se os ocurre alguna manera de hacerlo?

Lo último que probé fue tratando de usar una función Javascript para cambiar el código de la web en tiempo de ejecución (rollo AJAX), pero claro, ese código ya no pasa por el server, así que el navegador no lo entiende.

Estoy viendo que voy a tener que bajarme de la burra y usar el GET.
  #5 (permalink)  
Antiguo 03/11/2011, 07:37
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 6 meses
Puntos: 29
Respuesta: Rellenar una variable de sesión a través de un link

para hacerlo sin recargar tendrias que usar ajax.
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #6 (permalink)  
Antiguo 03/11/2011, 07:44
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 6 meses
Puntos: 29
Respuesta: Rellenar una variable de sesión a través de un link

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.         var xmlhttp=false;
  3.         try {
  4.                 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.         } catch (e) {
  6.                 try {
  7.                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.                 } catch (E) {
  9.                         xmlhttp = false;
  10.                 }
  11.         }
  12.  
  13.         if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.                 xmlhttp = new XMLHttpRequest();
  15.         }
  16.         return xmlhttp;
  17. }
  18.  
  19. function perfil(datos){
  20.         divResultado = document.getElementById('resultado');
  21.         ajax=objetoAjax();
  22.         ajax.open("GET", datos);
  23.         ajax.onreadystatechange=function() {
  24.                 if (ajax.readyState==4) {
  25.                         divResultado.innerHTML = ajax.responseText
  26.                 }
  27.         }
  28.         ajax.send(null)
  29. }

y en tu link pondrias algo como esto

Código HTML:
Ver original
  1. < a href='javascript:perfil(procesaperfil.php)'>Perfil</a>


algo parecido en google hay varios ejemplos de esto
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com

Etiquetas: formulario, link, mysql, rellenar, sesión, variables, usuarios
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:30.