Editar informacion de usuario al logear en el panel

  • Autor Autor ChronoMX
  • Fecha de inicio Fecha de inicio
C

ChronoMX

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Tengo un sistema de registro para una gestion de base de datos personalizada de un proyecto que estoy organizando junto con unos grupos, todo funciona de maravilla, pero necesito hacer editable el registro de cada usuario al estar logeado en su panel (Es decir, el enlace para editar sera mostrado solo cuando esten logeados en su panel)

Los datos que el usuario podra actualizar seran nombre, email, link, mensaje... Siendo que link y mensaje no estan en el registro de la pagina, pero si forman parte de la base de datos (la idea es que puedan agregar un link y mensaje una vez registrados)

El codigo del registro es el siguiente:

Insertar CODE, HTML o PHP:
<?php
include("conexion.php");

if(isset($_POST['registro']))//Vallidamos que el formulario fue enviado
{    /*Validamos que todos los campos esten llenos correctamente*/
    if(($_POST['name'] != '') && ($_POST['mail'] != '') && ($_POST['pass'] != '') && ($_POST['conf_pass'] != ''))
    {
        if($_POST['pass'] != $_POST['conf_pass'])
        {
            echo '<br />Las contrase&ntilde;as no coinciden';
        }
        else
        {
            $date= time(); 
            $name= limpiar($_POST['name']);
            $mail= limpiar($_POST['mail']);
            $pass= md5(md5(limpiar($_POST['pass'])));
            $ipuser= $_SERVER['REMOTE_ADDR'];            

            $b_user= mysql_query("SELECT name FROM usuarios WHERE name='$name'");
            if($user=@mysql_fetch_array($b_user))
            {
                echo '<br />El nombre de usuario o el email ya esta registrado.';
                mysql_free_result($b_user); //liberamos la memoria del query a la db
            }
            else
            {
                if(validar_email($_POST['mail']))
                {
                    mysql_query("INSERT INTO usuarios (fecha,name,mail,pass,ip) values ('$date','$name','$mail','$pass','$ipuser')");
                    echo '<br />Te has registrado Correctamente, ahora podras iniciar sesi&oacute;n como usuario registrado.';
                }
                else 
                {
                    echo '<br />El email no es valido.';
                }
            }
        }
    }
    else
    {
        echo '<br />Deberas llenar todos los campos.';
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Registro de Usuarios</title>
</head>
<body>
<div align="center">
	<table border="0" width="810" cellspacing="0" cellpadding="0">
		<tr>
			<td>
<img src='xbn.jpg'></td>
		</tr>
		<tr>
			<td>
			<p align="center"><b>Sistema de Registro</b></td>
		</tr>
	</table>
</div>
<div align="center">
<form name="registrar" action="registro.php" method="post" onsubmit="return validar()" />
        <dt>
          <label>Nombre:</label></dt>
        <input type='text' name='name' /><br /><br />

        <dt><label>E-mail:</label></dt>
        <input type='text' name='mail' /><br /><br />

        <dt>
<label>Contraseña:</label></dt>
        <input type="password" name='pass' /><br /><br />

        <dt>
<label>Confirmar Contraseña:</label></dt>
        <input type="password" name='conf_pass' /><br /><br /><br /><br />
        
        <input type="submit" name="registro" style="width:100px;" tabindex="6" value="Registrar" />
        <input type="reset" name="Limpiar" style="width:100px;" tabindex="6" value="Limpiar" />
    </form>
    <a href="login.php">Identificarse</a>
</div>    
</body>
</html>

La idea es que el usuario tenga que confirmar su contraseña para poder hacer la edicion... El codigo condicional para proteger una plantilla de usuarios no logeados es

Insertar CODE, HTML o PHP:
user_login();

De la manera que intente editar fue cambiando unas lineas por lo siguiente:

Insertar CODE, HTML o PHP:
{    /*Validamos que todos los campos esten llenos correctamente*/
    if(($_POST['name'] != '') && ($_POST['mail'] != '')&& ($_POST['link'] != '')&& ($_POST['msg'] != ''))
                {
                    mysql_query("UPDATE usuarios SET name='$name',mail=$mail,link=$link,msg='$msg' where pass='$pass'");
                    echo '<br />Los datos han sido actualizados correctamente.';
                }
            }

Pero obviamente no obtengo resultado alguno... Alguien podria auxiliarme con esta funcion que necesito?
 
Pon entre comillas simples las variables &mail y $link de tu UPDATE.

Usa mysql_error() para conocer que errores arrojan tus consultas.
 
No manejas una llave primaria de usuario? Para que no hagas el WHERE con la contraseña. Que pasaría si dos usuarios tienen la misma contraseña? xD
 
Sigo sin poder... Algo he de tener mal, acabo de resumir el codigo lo mas que puedo para que me actualize solo el nombre, sin condicion where quedando de la siguiente manera

Insertar CODE, HTML o PHP:
<?php
		include("conexion.php");
    $Consulta="UPDATE usuarios SET name='$name'";
    mysql_query($Consulta) or die(mysql_error());
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>

<h2>Actualizar Registros</h2>
<div align="center">
<form name="Consulta" action="actualizar.php" method="post" onsubmit="return validar()" />
        <dt>
          <label>Nombre:</label></dt>
        <input type='text' name='name' /><br /><br />

				<br /><br />
        
        <input type="submit" name="Consulta" style="width:100px;" tabindex="6" value="Actualizar" />
    </form>
    <a href="login.php">Regresar al panel</a>
</div>    
</body>
</html>

Pero lo unico que logre, es que el nombre me lo deje en blanco... Se supone que el usuario queda conectado a la base de datos mientras este logeado con conexion.php hasta que da click en desconectar y para esta accion aplica el comando session_destroy();

EDITO---------------------------------

Verificado, algo tengo mal, cambie el comando update por insert into con los parametros correspondientes... No me esta jalando los datos del formulario :S
 
Última edición:
Quieres realizar un panel donde el usuario pueda cambiar todos sus datos incluyendo su usuario con el cual se identifica( que tiene que ser UNICO).

Bueno si es eso... el usuario tiene iniciar sesion y despues con tu codigo que as puesto...

PHP:
<?php
    include("conexion.php");
    if(isset($_POST["Consulta"])&&isset($_POST["name"])&&isset($_SESSION["WXY"])){// en la variable WXY pones tu variable de sesion que as creado despues que inicia sesion
     $name=$_POST["name"];
      if($res= @mysql_query("SELECT name FROM usuarios WHERE name='".$name."'")){//verificamos que el nuevo usuario no exista
		  if(!@mysql_fetch_array($b_user)){
			$Consulta="UPDATE usuarios SET name='".$name."' where name='".$name."'";
			mysql_query($Consulta) or die(mysql_error());
		  }else echo "El usuario existe.";
	  }
	}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>

<h2>Actualizar Registros</h2>
<div align="center">
<form name="Consulta" action="actualizar.php" method="post" onsubmit="return validar()" />
        <dt>
          <label>Nombre:</label></dt>
        <input type='text' name='name' /><br /><br />

				<br /><br />
        
        <input type="submit" name="Consulta" style="width:100px;" tabindex="6" value="Actualizar" />
    </form>
    <a href="login.php">Regresar al panel</a>
</div>    
</body>
</html>

Este código modifica solo el name de un usuario, que como dije debe ser unico. Para que sea valido para un usuario.
Espero que te ayude.
 
Es que no estas recibiendo el $_POST por eso actualiza en blanco.
 
Intente con el sugerido junto con otros que me he topado por la web pero no me ha funcionado... Podrian sugerirme un script? Mi base de datos esta de la siguiente manera

Base de datos: _reg
Tabla: usuarios

1 id int(5) auto_increment
2 fecha int(10)
3 name varchar(100)
4 pass varchar(32)
5 mail varchar(40)
6 link varchar(180)
7 ip varchar(15)
8 msg varchar(300)
9 extras varchar(80)

Los archivos con los que funciona que jale de otra web que dejo a continuacion: Enlace eliminado
 
Última edición:

Temas similares

Atrás
Arriba