Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Recoger variables con $_SESSION

Estas en el tema de Recoger variables con $_SESSION en el foro de Bases de Datos General en Foros del Web. Buenas tardes, Una consulta: tengo un sistema de registro e inicio de sesión funcionando perfectamente, ahora quiero crear una sección de actualización de perfil. Primeramente ...
  #1 (permalink)  
Antiguo 31/01/2011, 11:28
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Pregunta Recoger variables con $_SESSION

Buenas tardes,

Una consulta: tengo un sistema de registro e inicio de sesión funcionando perfectamente, ahora quiero crear una sección de actualización de perfil.

Primeramente en el script de logeo tomo la variable nick, por medio de $_session para limitar el acceso a la sección de edición de pefil solo a usuarios registrados y logeados.

Esa misma función me sirve para agregar en el formulario de actualización de perfil la variable nick. En el campo value del input agrego:

Código:
<?php echo "$_SESSION[nick]" ?>"
Y satisfactoriamente el formulario muestra la variable nick. El problema se me presenta al querer mostrar en pantalla más datos. Los agrego en el script de logeo pero en el formulario no se muestran.

A continuación, agregaré el script de logeo y el formulario para que me orienten a agregar por medio de la variable global $_SESSION datos ya registrados en un formulario de actualización.

Código:
<?php
		
         session_start();// Iniciamos sesión
		 
		 //variables para base de datos        
         $dbhost = 'localhost';
         
		 $dbusername = 'prueba'; 
         
		 $dbuserpass = 'prueba'; 
         
		 $dbname = 'prueba'; 
         
		 mysql_connect($dbhost, $dbusername, $dbuserpass) or die(mysql_error());
         
		 mysql_select_db($dbname) or die (mysql_error());
		 
		 
		 $nick = trim($_POST['nick']);
		 
         $password = trim($_POST['password']);
		 
		 
		 /*Validamos si el nick y el pass fueron escritos*/
		 if( $nick == "" || $password == "" ) 
		 {
		 
		 echo '<script>alert("Tanto Nick como Password son necesarios"); history.go(-1);</script>';
		 
		 exit;
		 
		 }
		 
         $query = mysql_query("SELECT password FROM registro WHERE nick = '".$nick."'") or die(mysql_error());
         
		 $data = mysql_fetch_array($query);

        
		 /*Validamos si ese nick es correcto*/
		 if( mysql_num_rows($query) == 0 )
		 {
		 
		 echo '<script>alert("El nick proporcionado no existe en la base de datos"); history.go(-1);</script>';
		 
		 exit;
		 
		 }

         /*validamos si el pass que se dio es igual al de la BD*/
         if( $data['password'] != $password )
		 {
		 
		 echo '<script>alert("El password proporcionado es incorrecto"); history.go(-1);</script>';
		 
		 $result = mysql_query("SELECT email, nombre, email FROM registro WHERE nick = '".$nick."'") or die(mysql_error());
		  
		 exit;
		 
		 }
		 
		 /*Si todo va bien generamos la sesion*/
		 $_SESSION["nick"] = $nick;
		 $_SESSION["password"] = $password;
		 $_SESSION["email"] = $email;
		 $_SESSION["nombre"] = $nombre;
		 $_SESSION["apellido"] = $apellido;
		 
		 echo '<script>alert("Bienvenido"); location.href = "prueba.php";</script>';
		 
?>
Código:
<?php


session_start();

if( $_SESSION["nick"] == "" ) 
{
echo '<script>alert("Zona solo para usuarios logueados."); location.href="index.php";</script>';
exit;
}

		$_SESSION["email"] = $email;
		$_SESSION["nombre"] = $nombre;
		$_SESSION["apellido"] = $apellido;
		$_SESSION["password"] = $password;

?> 

<body>


<div id="contenedor" #contenedor>

	<div id="logo" #logo></div>
    
    <div id="menu">
	    
    <div id="content_center" #content_center class="scroll">
    
    	<div id="personales" #personales>
		
		<h2>Datos Personales</h2>
		
    	<form id="form" #form action="registrar.php" method="post" target="_top" >
    	
        	<div id="div" #div>
        		<fieldset>
            	<label for="nick"> Nick </label> 
            	<input 	type="text" 
            				name="nick" 
            				size="20" 
            				maxlength="25"
                            value="<?php echo "$_SESSION[nick]" ?>"
            				onkeyup="checkNickForLength(this);"/> 
            		<span class="hint">El Nick, debe tener m&aacute;s de ocho caracteres.</span>          
         </div>
         <div id="div" #div>
         	<fieldset>
            	<label for="password">Contraseña </label> 
            	<input 	type="password" 
            				name="password" 
            				size="20" 
            				maxlength="50"
            				onkeyup="checkPassword(this);" />
            		<span class="hint">Por seguridad no se muestra la contrase&ntilde;a actual. Se recomienda generar una contraseña mayor a quince caracteres con la finalidad de mejorar su seguridad.</span>
         </div>
            <div id="div" #div>
            <fieldset>
            	<label for="email">Email </label> 
            	<input 	type="text" 
            				name="email" 
            				size="20" 
            				maxlength="80"
                            value="<?php echo "$_SESSION[email]" ?>"
            				onkeyup="checkEmail(this);"/>
            		<span class="hint">Debe ingresar una direcci&oacute;n de Correo electr&oacute;nico v&aacute;lido.</span>          
         </div>
         <div id="div" #div>
            <fieldset>
            	<label for="nombre">Nombre </label> 
            	<input 	type="text" 
            				name="nombre" 
            				size="20" 
            				maxlength="40"
                            value="<?php echo "$_SESSION[nombre]" ?>"
            				onkeyup="checkNombre(this);"/>
            		<span class="hint"> Escriba su Nombre. Se recomienda colocar datos reales ya que al momento de acreditar alg&uacute;n premio se necesitan los verdaderos datos personales.</span>         
         </div>
</div>
		
    		            
       	</form>
En el segundo código solo coloque la parte que nos incumbe ya que sería demasiado código y muy fastidioso de leer.

Gracias de antemano, espero una pronta ayuda.
  #2 (permalink)  
Antiguo 31/01/2011, 11:54
 
Fecha de Ingreso: mayo-2007
Mensajes: 47
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Recoger variables con $_SESSION

Si lo que quieres es imprimir mas datos podrias hacerlo con una consulta a la tabla registros que tienes y asi imprimir los demas campos, por que tu session ya fue establecida anteriormente con $_SESSION["nick"];
  #3 (permalink)  
Antiguo 31/01/2011, 11:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

En ningun lado estas asignando los valores que regresa tu query a una variable, nada mas tienes datos en nick and password, pero los demas campos estan vacios porque no les asignas ningun valor..

Saludos!
  #4 (permalink)  
Antiguo 31/01/2011, 13:10
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Gracias a ambos por comentar.

Bueno, y como podría asignar los valores a las variables que estan en cero? se que posiblemente sea una pregunta super tonta, pero es que no tengo mucho tiempo con php y mis conocimientos son bastante escasos.

Gracias de antemano.
  #5 (permalink)  
Antiguo 31/01/2011, 13:13
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Si no quieren ponerme la cosa super fácil, al menos coloquen una url donde pueda encontrar información sobre ello.

Nuevamente, muchísimas gracias.
  #6 (permalink)  
Antiguo 31/01/2011, 13:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

http://www.webtaller.com/construccio...-con-mysql.php

Espero esto te ayude :)

Saludos!
  #7 (permalink)  
Antiguo 31/01/2011, 14:09
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Gracias por la ayuda!

Logre que mostrara los datos con el link que dejaste. Pero, ahora se me presenta otro inconveniente... al realizar la consulta, muestra los datos de todos los usuarios registrados.

Entonces, quiero por medio de la variable $_SESSION limitar a un usuario específico. Creo el código debería ser algo parecido a esto que les presento a continuación:

$result = mysql_query('SELECT email, nombre, apellido FROM registro WHERE $nick = $_SESSION[nick];', $link);

El problema es que así tira un error.

Gracias de antemano.
  #8 (permalink)  
Antiguo 31/01/2011, 15:47
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Si alguien presenta el mismo problema que mi persona, ya logre solucionarlo y a continuación colocaré donde estaba el error en la consulta.

Codigo anterior:

$result = mysql_query('SELECT dato1, dato2, dato3 FROM registro WHERE $nick = $_SESSION[nick];', $link);

Nuevo:

$result = mysql_query("SELECT dato1, dato2, dato3 FROM registro WHERE nick='$nick' ", $link);

Se puede apreciar claramente, que faltaban comillas y una buena declaración de la variable nick.

Saludos y gracias a todos lo que me ayudaron.
  #9 (permalink)  
Antiguo 01/02/2011, 15:54
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Reavivo el post,

Como les comenté ayer, conseguí mostrar los datos de la bd gracias al enlace del amigo Libras. Pero, se me presento un segundo problema, al realizar el script de actualización, los datos actualizados no se muestran en la bd. A continuación colocaré el script.

Actualizar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.     session_start();
  4.    
  5.                 //Evitar que se cuelen signos extraños y espacios
  6.                 function quitar($mensaje)
  7.                 {
  8.                 $mensaje = str_replace("<","&lt;",$mensaje);
  9.                 $mensaje = str_replace(">","&gt;",$mensaje);
  10.                 $mensaje = str_replace("\'","'",$mensaje);
  11.                 $mensaje = str_replace('\"',"quot;",$mensaje);
  12.                 $mensaje = str_replace("\\\\","\\",$mensaje);
  13.                 return $mensaje;
  14.                 }
  15.  
  16.                 //conexión con bd
  17.                 $dbh=mysql_connect ("localhost", "nombre", "pass")
  18.                 or die ('problema conectando porque :' . mysql_error());
  19.                 mysql_select_db ("nombre",$dbh);
  20.  
  21.                
  22.                 //convertir en variables los datos del formulario
  23.                 $password = $_POST["password"];
  24.                 $email = $_POST["email"];
  25.                 $nombre = $_POST["nombre"];
  26.                 $apellido = $_POST["apellido"];
  27.                 $Aniversario = $_POST["Aniversario"];
  28.                 $sexo = $_POST["sexo"];
  29.                 $nacionalidad = $_POST["nacionalidad"];
  30.                 $ciudad = $_POST["ciudad"];
  31.                 $banco = $_POST["banco"];
  32.                 $tcuenta = $_POST["tcuenta"];
  33.                 $ncuenta = $_POST["ncuenta"];
  34.                 $dni = $_POST["dni"];
  35.                 $tdni = $_POST["tdni"];
  36.                
  37.                 //variable $_SESSION de nick
  38.                 $nick = $_SESSION["nick"];
  39.                
  40.                 //Actualizar datos
  41.                 $sql = "UPDATE registro WHERE nick='$nick'  set (password, nombre, apellido, Aniversario, email, nacionalidad, ciudad, sexo, banco, ncuenta, tcuenta, dni, tdni) VALUES" . "('" . quitar($_POST['password']) . "', '" . quitar($_POST['nombre']) . "', '" . quitar($_POST['apellido']) . "', '" . quitar($_POST['Aniversario']) . "', '" . quitar($_POST['email']) . "', '" . quitar($_POST['nacionalidad']) . "', '" . quitar($_POST['ciudad']) . "', '" . quitar($_POST['sexo']) . "', '" . quitar($_POST['banco']) . "', '" . quitar($_POST['ncuenta']) . "', '" . quitar($_POST['tcuenta']) . "', '" . quitar($_POST['dni']) . "', '" . quitar($_POST['tdni']) . "')";
  42.  
  43.                 // ejecutando el query
  44.                 echo "$sql";
  45.                 mysql_query($sql, $dbh);
  46.  
  47.                 // avisando
  48.                 echo "REGISTRO EDITADO";
  49.  
  50.  
  51. ?>

Agradecería me ayudaran.
  #10 (permalink)  
Antiguo 01/02/2011, 16:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION


$sql = "UPDATE registro set (password, nombre, apellido, Aniversario, email, nacionalidad, ciudad, sexo, banco, ncuenta, tcuenta, dni, tdni) VALUES" . "('" . quitar($_POST['password']) . "', '" . quitar($_POST['nombre']) . "', '" . quitar($_POST['apellido']) . "', '" . quitar($_POST['Aniversario']) . "', '" . quitar($_POST['email']) . "', '" . quitar($_POST['nacionalidad']) . "', '" . quitar($_POST['ciudad']) . "', '" . quitar($_POST['sexo']) . "', '" . quitar($_POST['banco']) . "', '" . quitar($_POST['ncuenta']) . "', '" . quitar($_POST['tcuenta']) . "', '" . quitar($_POST['dni']) . "', '" . quitar($_POST['tdni']) . " WHERE nick='$nick'
')";


Saludos!
  #11 (permalink)  
Antiguo 01/02/2011, 16:29
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Gracias por la pronta respuesta, acomodé ese pedazo de código... pero, sigue sin guardar los cambios en la bd.

Que podrá ser?

Gracias de antemano.
  #12 (permalink)  
Antiguo 01/02/2011, 16:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

Que error te manda?

antes de ejecutar tu query inprime tu variable $sql en pantalla y muestranos el resultado

Saludos!
  #13 (permalink)  
Antiguo 01/02/2011, 16:47
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Ningún error.

Le hice un echo al sql para ver si encontraba algo raro y nada.

Lo unico es que no actualiza los datos en la bd.
  #14 (permalink)  
Antiguo 01/02/2011, 17:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

cual es tu echo? lo puedes poner?

y ponle un
mysql_query($sql, $dbh) or die ('update fail');
  #15 (permalink)  
Antiguo 01/02/2011, 17:13
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Se me olvido colocar el resultado del echo a $sql. Aqui va:

UPDATE registro set (password, nombre, apellido, Aniversario, email, nacionalidad, ciudad, sexo, banco, ncuenta, tcuenta, dni, tdni) VALUES('', 'manu', 'gonzo', '', '[email protected]', '', 'caracas', '', '', '01122236654987987946', '', '', '18003223 WHERE nick='manuel' ')REGISTRO EDITADO
  #16 (permalink)  
Antiguo 01/02/2011, 17:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

Tendria que ser asi

UPDATE registro set (password, nombre, apellido, Aniversario, email, nacionalidad, ciudad, sexo, banco, ncuenta, tcuenta, dni, tdni) VALUES('', 'manu', 'gonzo', '', '[email protected]', '', 'caracas', '', '', '01122236654987987946', '', '', '18003223') WHERE nick='manuel'

Trata de acomodarlo para que quede de esa manera :)

Saludos!
  #17 (permalink)  
Antiguo 01/02/2011, 17:21
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Disculpa la ignorancia, pero no encuentro la diferencia entre el código que colocaste y el mio. Puedes aclarar, gracias.
  #18 (permalink)  
Antiguo 01/02/2011, 17:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

jajajaja se me paso :P

el update es asi:

Update registro
set password=$_POST['password'],
nombre=$_POST['nombre']......
where nick=$nick


Saludos!
  #19 (permalink)  
Antiguo 01/02/2011, 17:48
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

UPDATE registro set password=$_POST['password'], email=$_POST['email'], nombre=$_POST['nombre'], apellido=$_POST['apellido'], Aniversario=$_POST['Aniversario'], sexo=$_POST['sexo'], nacionalidad=$_POST['nacionalidad'], ciudad=$_POST['ciudad'], banco=$_POST['banco'], tcuenta=$_POST['tcuenta'], ncuenta=$_POST['ncuenta'], dni=$_POST['dni'], tdni=$_POST['tdni']; WHERE nick=$nick

Coloco así, pero me da error de sintaxis... probé comillas simples y dobles abriendo en password y cerrando en nick, pero nada.
  #20 (permalink)  
Antiguo 01/02/2011, 19:50
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Coloco de la siguiente manera y tira error de sintaxis:
Código PHP:
Ver original
  1. $sql="UPDATE registro set password=$_POST['password'], email=$_POST['email'], nombre=$_POST['nombre'], apellido=$_POST['apellido'], Aniversario=$_POST['Aniversario'], sexo=$_POST['sexo'], nacionalidad=$_POST['nacionalidad'], ciudad=$_POST['ciudad'], banco=$_POST['banco'], tcuenta=$_POST['tcuenta'], ncuenta=$_POST['ncuenta'], dni=$_POST['dni'], tdni=$_POST['tdni'] WHERE nick=$nick";

El error: Parse error: syntax error, unexpected T_STRING in line 45.

La linea 45 es donde comienza el código que coloqué.

Gracias de antemano.
  #21 (permalink)  
Antiguo 02/02/2011, 08:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

Podrias imprimir tu query de nuevo, ese error quizas se deba a que quieres meter un dato "string" en una columna "int", revisa bien los valores y los tipos de datos que estas queriendo actualizar :)

saludos!
  #22 (permalink)  
Antiguo 02/02/2011, 12:42
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

La intentar imprimir el query con echo, no lo permite. Sigue enviandome el mismo error:

Parse error: syntax error, unexpected T_STRING on line 53
  #23 (permalink)  
Antiguo 02/02/2011, 13:35
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recoger variables con $_SESSION

Ya logré que me funcionará la actualización... era error de sintaxis en el UPDATE.

Pero, ahora se me presenta un último inconveniente... si en dicho registro solo quiero realizar un cambio y mantener todo lo demás intacto al darle en actualizar y dejarlos en blanco dichos campos se borran... hay posibilidad de que solo se actualicen los campos editados y los que queden en blanco mantengan la información anterior?

Muchas gracias de antemano.
  #24 (permalink)  
Antiguo 02/02/2011, 16:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

Podrias hacer esto:

Código SQL:
Ver original
  1. UPDATE tabla
  2. SET
  3.   dato=t1.dato,
  4.   dato1=t1.dato1,
  5.   dato2=t1.dato2
  6.  FROM
  7.  (
  8.     SELECT
  9.     CASE
  10.         WHEN $variable1='' THEN dato ELSE $variable1 END AS dato,
  11.     CASE
  12.         WHEN $variable2='' THEN dato1 ELSE $variable1 END AS dato1,
  13.     CASE
  14.         WHEN $variable3='' THEN dato2 ELSE $variable2 END AS dato2
  15.     FROM tabla WHERE nick=$nick
  16.  ) AS t1 WHERE tabla.nick=$nick


Saludos!
  #25 (permalink)  
Antiguo 04/02/2011, 10:13
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Pregunta Respuesta: Recoger variables con $_SESSION

gracias por el código que me pasaste.

No entiendo que es el T1. es un dato que debo colocar o lo pusiste de ejemplo; en caso de ejemplo, que debo colocar luego del

AS (al final) ya que colocas seguidamente el t1.

Gracias de antemano.
  #26 (permalink)  
Antiguo 04/02/2011, 17:13
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recoger variables con $_SESSION

Es el alias de la tabla o el nombre con el cual va a reconocer toda la sentencia encerrada en parentesis.

Saludos!

Etiquetas: mysql, php
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 23:03.