Foros del Web » Programando para Internet » PHP »

como crear un perfil de usuario?

Estas en el tema de como crear un perfil de usuario? en el foro de PHP en Foros del Web. Hola. Miren estoy trabajando con php y mysql, ya tengo el sistema de login con su respectiva validacion de usuario, pero lo que nesecito y ...
  #1 (permalink)  
Antiguo 07/09/2010, 13:39
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
como crear un perfil de usuario?

Hola.

Miren estoy trabajando con php y mysql, ya tengo el sistema de login con su respectiva validacion de usuario,
pero lo que nesecito y no me sale por mas que investigo e intento es que los usuarios que de mi web puedan tener su perfil de usuario.
osea que cuando se logean estos tengan su pagina (cuenta) con sus detalles de perfil, sus comentarios, etc,
me entienden pero eso es lo que no consigo, eh intentado con el id de la tabla de usuarios, pero nada por favor si me entienden y me quieran ayudar muy agradecido

Fernando
  #2 (permalink)  
Antiguo 07/09/2010, 14:16
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Hola,
Necesitas hacer una página, igual que hiciste con la de login en su momento, que recoja el id del usuario por ejemplo y construya una lista con su nombre, apellidos, etc para "ver" el perfil. Otra página que muestre un formulario que permite editar esas cosas.
EJEMPLO => www.pagina.com/perfiles/ver.php?id=...
EJEMPLO => www.pagina.com/perfiles/editar.php?id=...

Si quieres hacer comentarios eso es algo un poco más dificil pero igual. Creas la tabla en la base de datos, el formulario en la página para enviarlos y donde quieras mostrar puedes coges todos los resultados de la tabla comentarios que correspondan a ese perfil y los muestras.

La verdad es que tu pregunta es bastante poco concreta y por eso no te puedo dar un código concreto, pero si tienes alguna duda preguntala.
  #3 (permalink)  
Antiguo 07/09/2010, 14:32
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

hola mira lo que quiero es poder crear un panel de control para mis usuarios? ahora me entiendes, quiero algo sencillo donde ellos tengan la informacion de ellos como por ejemplo si escriben algun comentario le aparesca por ejemplo al usuario 1 lo que el escribio y no lo que escribieron todos me entiendes, quiero eso que cada usuario tenga su propio perfil?

Me entiendes
  #4 (permalink)  
Antiguo 07/09/2010, 14:50
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Si, creo que te entiendo. Pero separa en dos cosas para poder seguir con el proyecto bien:
Una cosa es el sistema que te enseña los datos del usuario(nombre, apellidos, nick o lo que sea) y que le permite al usuario (y puede que también a un administrador) editarlos.
Y otra cosa es el sistema de comentarios.

Dos preguntas: Cual de las dos cosas tienes dudas (o las dos)? El sistema de comentarios sería algo así como el tuenti o el facebook que son como "tablones de comentarios" donde otros usuarios pueden escribir y responderse entre si o una especia de mini-blog donde los usuarios escriben sus cosas?

Cuando me respondas puedo centrar un poco más mi ayuda. =D
  #5 (permalink)  
Antiguo 07/09/2010, 14:54
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

este es el tema

"el sistema que te enseña los datos del usuario(nombre, apellidos, nick o lo que sea) y que le permite al usuario (y puede que también a un administrador) editarlos."

es eso lo que deseo es que cada usuario tenga sus detalles y pueda editarlos, agregar o borrar.

gracias por responder
  #6 (permalink)  
Antiguo 07/09/2010, 15:03
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

OK. Dos partes: el sistema para verlo, y para editarlo.

PARA VERLO:
1. Poner el vínculo que quieras tipo "Mi Perfil" o cosas así apuntando a una dirección tipo:
www.pagina.com/perfil.php "perfil.php" sería la dirección completa a la página que administrar tus perfiles, ya como tu lo tengas organizado.
2. Ahora ya vamos a crear la página. Lo primero es obtener el usuario. Supongo que lo guardaras en $_SESSION o algo así en la página del login, asi que lo obtienes.
3. La página HTML que muestre los disintios campos con los estilos que quieras. Además supongo que querrás añadir un vínculo o un botón o algo así para editarlos.

La verdad es que mostrar los datos es algo trivial, pero como no se tu nivel de conocimiento pues te lo explico un poco. Tienes alguna duda hasta aquí? Si no la tienes te envio ahora la otra parte, la de editar los perfiles.
  #7 (permalink)  
Antiguo 07/09/2010, 15:10
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

mirá yo hasta aquí eh echo eso que tu me dices acerca de poner el vínculo que quieras tipo "Mi Perfil" o cosas así apuntando a una dirección tipo:
www.pagina.com/perfil.php "perfil.php" hasta aquí vamos igual pero hay algo que hago mal, lo que yo hago es poner "perfil.php?id=...." pero siempre me sale la informacion del mismo usuario aunque me loguee con otro nombre. ?

me entiendes aqui es donde creo que le estoy errando en algo eso es elocuente pero no me doy cuenta en que, sinceramente.

gracias por tu tiempo
  #8 (permalink)  
Antiguo 07/09/2010, 15:17
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: como crear un perfil de usuario?

intenta con sesiones, al momeno de cerrar la pagina mata la sesion, de esta manera cuando ingreses nuevamente inicia una nueva sesión y te aparecerán los datos del nuevo usuario con el cual ingresaste

saludos
  #9 (permalink)  
Antiguo 07/09/2010, 15:20
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

Cita:
Iniciado por perryjr Ver Mensaje
OK. Dos partes: el sistema para verlo, y para editarlo.

PARA VERLO:
1. Poner el vínculo que quieras tipo "Mi Perfil" o cosas así apuntando a una dirección tipo:
www.pagina.com/perfil.php "perfil.php" sería la dirección completa a la página que administrar tus perfiles, ya como tu lo tengas organizado.
2. Ahora ya vamos a crear la página. Lo primero es obtener el usuario. Supongo que lo guardaras en $_SESSION o algo así en la página del login, asi que lo obtienes.
3. La página HTML que muestre los disintios campos con los estilos que quieras. Además supongo que querrás añadir un vínculo o un botón o algo así para editarlos.

La verdad es que mostrar los datos es algo trivial, pero como no se tu nivel de conocimiento pues te lo explico un poco. Tienes alguna duda hasta aquí? Si no la tienes te envio ahora la otra parte, la de editar los perfiles.
Hola sabes te queria preguntar si tienes la parte esa que me comentaste?
  #10 (permalink)  
Antiguo 07/09/2010, 15:20
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Vigila dos cosas para tu problema:
1. En el login asignas bien los usuarios?
2. En un principio, si es solo para editar mi perfil no necesitarías el ?id=...
Piénsalo, en cada página que visitan sabes si es un usuario registrado o no, para poder
saber si tiene permisos o no, o para saber si mostrarle el "Mi Perfil" o no.

Como sabes si el usuario es registrado o no? Supongo que grabarás algo en $_SESSION, si no es mucha molestia necesito saber como haces eso del login/logout.


=======================================

PARA EDITAR:
0. Crear la página, ej: editar.php
1. De nuevo, obtener el usuario.
2. Mostrar un formulario en HTML que además tenga los valores de la base de datos. EJ:
<input type="text" ... value="<?php echo $nick; ?>"
3. Los usuario verán el formulario y se lo descargarán con sus datos. Cambiarán lo que quieran y le darán a enviar.
4. Cuando detectes el envio, ya sea esa misma página editar.php u otra que se llame por ejemplo guardar.php deberás obtener todos los campos que te interesen $_GET['nick'] por ejemplo y guardarlos en la base de datos.
5. Por útlimo una vez que lo tengas hecho faltarían las comprobaciones de seguridad. Por ejemplo, si el nick es demasiado largo, le salga un mensaje diciendo "El nick es demasiado largo. Pulse Atrás en su navegador para modificarlo."

Como no se que datos tienen o no los usuarios pues no te puedo orientar exactamente que campos usar, pero en general es esto. El campo de las contraseñas que supongo tendrán los usuarios evidentemente se descargará en blanco(vamos, que ese no lo rellenas con el nick actual del usuario o con el nombre y apellidos del usuario como en los demás campos) y solo se cambiará la contraseña si detecta que el usuario ha escrito algo en el input password.
  #11 (permalink)  
Antiguo 07/09/2010, 15:28
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

este es el formulario de login.php :
Cita:
<form action="validar_usuario.php" method="post">
<p>Usuario:
<input type="text" name="usuario" size="10" maxlength="20" />
<br />
Contraseña :
<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" />
</p>
<p><a href="registrar.php">Registrarse</a> <a href="index.php">Inicio</a></p>
</form>
este es el logut.php :

Cita:
<?php
session_start();
// Borramos toda la sesion
session_destroy();
echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
este es validar_usuario.php
Cita:
<?php
session_start();
?>
<?php
mysql_connect('localhost','root');
mysql_select_db('casuringa');
$usuario = strtolower($_POST["usuario"]);
$password = $_POST["password"];
if($usuario!= "" && $password!= "")
{
$sql = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario="'.$usuario.'"');
if($f= mysql_fetch_array($sql)){
if($f["password"] == $password){
$_SESSION["k_username"] = $f['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="perfil.php">Ir a mi Perfil</a></p>';

}else{
echo 'Password incorrecto';
echo '<a href="index.php">Index</a></p>';
}
}else{
echo 'Usuario no existente en la base de datos ';
echo '<a href="registrar.php">Registrarse</a></p>';
}

}

?>
y este el index.php
Cita:
<?php
echo 'Bienvenido, ';
if (isset($_SESSION['k_username'])) {
echo '<b>'.$_SESSION['k_username'].'</b>.';
echo '<p><a href="logout.php">Cerrar Sesión</a></p>';
}else{
echo '<p><a href="http://www.localhost/perfil.php?">Ingresar</a></p>
<p><a href="login/registrar.php">Registrarse</a></p>';
}
?>
  #12 (permalink)  
Antiguo 07/09/2010, 15:44
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Por lo que veo guardas el nick del usuario en $_SESSION
El código SQL que necesitas para obtener el usuario, a partir del cual sacar los datos para el perfil es:
mysql_query('SELECT * FROM usuarios WHERE nick = "' . $_SESSION['k_username'] . '");
así obtienes el usuario, luego listas los datos que quieres en el perfil: supongo que nick, nombre, etc.

te funciona ahora?
  #13 (permalink)  
Antiguo 07/09/2010, 15:51
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

y si no como tendria que hacerlo? como guardarias tu el nick del usuario ?
  #14 (permalink)  
Antiguo 07/09/2010, 15:57
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Está perfectamente hecho con el nick. Quizás te falta algo con la contraseña: nunca se guarda en texto plano.
Hay una función que sirve para codificar en una sola dirección (es decir, una vez que codificas, no puedes volver a trás) y además tiene la propiedad de que dos cadenas distintas dan dos cosas distintas, pero dos iguales dan la misma cosa. haz esto:

Cuando se registren en vez de guardar la contraseña guardas md5($password); y en el login.php en vez de $f["password"] == $password pones esto: $f["password"] == md5($password) y ya tienes las contraseñas100% seguras a la hora de guardarlas, por lo demás es muy bueno el sistema.

Ya has podido hacer la página para ver el perfil? y para editarlo?
  #15 (permalink)  
Antiguo 07/09/2010, 16:00
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

en cuanto la tenga pronta le aviso

la verdad muchisimas gracias por tu interes en mi problema
  #16 (permalink)  
Antiguo 07/09/2010, 16:26
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

el codigo sql <?php mysql_query('SELECT * FROM usuarios WHERE nombre = "' . $_SESSION['k_username'] . '"); me da error (Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in C:\xampp\htdocs\perfil.php on line 1)
  #17 (permalink)  
Antiguo 07/09/2010, 17:18
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

yeah! perdón pero se me olvido un apóstrofe justo al final. el código es este:
Código PHP:
Ver original
  1. mysql_query('SELECT * FROM usuarios WHERE nombre = "' . $_SESSION['k_username'] . '"');
al final debe haber un apóstrofe-comillas-apóstrofe y ahora solo hay apóstrofe.
  #18 (permalink)  
Antiguo 07/09/2010, 17:37
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

Cita:
Iniciado por perryjr Ver Mensaje
yeah! perdón pero se me olvido un apóstrofe justo al final. el código es este:
Código PHP:
Ver original
  1. mysql_query('SELECT * FROM usuarios WHERE nombre = "' . $_SESSION['k_username'] . '"');
al final debe haber un apóstrofe-comillas-apóstrofe y ahora solo hay apóstrofe.
esto va en la pagina perfil.php verdad ¿?

mira hice todo tal cual como tu me dices pero no ha salido nada sale la pagina en blanco.

bueno disculpa no te molesto mas
Muchisimas gracias
  #19 (permalink)  
Antiguo 07/09/2010, 18:06
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Preguntar no es molestar. Pero me temo que me voy a retrasar un poco en darte una respuesta. Voy a hacer las páginas y ahora después pego el código entero aquí.
  #20 (permalink)  
Antiguo 07/09/2010, 19:25
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Vale, ya los tengo. Son muy básicos y podrían mejorarse en muchos sentidos, pero te servirán para que puedas aprender a hacerlo. Me copie tus archivos y simule el mismo entorno que tienes tu. A mi me funcionaban sin problemas.

perfil.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. ?>
  13.  
  14. <h1>Ejemplo de Perfil</h1>
  15.  
  16. <b>Nick: </b><?php echo $usuario['usuario']; ?>
  17.  
  18. <br><br>
  19.  
  20. <a href="editar.php">Editar Mi Perfil</a>

editar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. ?>
  13.  
  14. <h1>Editando Mi Perfil</h1>
  15.  
  16. <p>Mostramos los campos de formulario para que editen las cosas.</p>
  17. <p>Fíjate especialmente en que nick y otros ya están rellenados mientras que la
  18.   contraseña por seguridad NO.</p>
  19.  
  20. <form action="guardar.php" method="post">
  21.   <b>Nick: </b>
  22.   <input type="text" name="nick" id="nick" value="<?php echo $usuario['usuario']; ?>">
  23.  
  24.   <br>
  25.  
  26.   <b>Contraseña: </b>
  27.   <input type="password" name="password" id="password" value="">
  28.  
  29.   <br><br>
  30.   <input type="submit" value="Guardar datos">
  31. </form>
  32.  
  33. <br />
  34. <i>En una situación perfecta aquí debería haber dos campos de contraseña para que el usuario
  35.   la reescribiese para confirmarla.</i>
  36.  
  37. <br><br>
  38.  
  39. <a href="perfil.php">Cancelar</a>

guardar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. // Ahora tenemos que recoger las variables que ha enviado el formulario
  13. // Puedes hacerlo con el método que quieras. Yo por experiencia suelo usar
  14. // este porque en caso de que haya fallos en el envio, protege de errores en el servidor
  15.  
  16. $nuevo_nick = empty($_POST['nick']) ? '' : $_POST['nick'];
  17.  
  18. // Traducción: comprobamos si $_POST['nick'] está vacío, si lo está ponemos una cadena
  19. // vacia para evitar errores, si no ponemos lo que nos hayan enviado.
  20.  
  21. $nueva_password = empty($_POST['password']) ? '' : $_POST['password'];
  22.  
  23. if(empty($nuevo_nick)) {
  24.   echo 'Debes escribir un nick o dejar el que tenías.';
  25.   die();
  26. }
  27.  
  28. if($nuevo_nick != $usuario['usuario']) { // Si el nick ha cambiado....
  29.   mysql_query('UPDATE usuarios SET usuario = "' . $nuevo_nick . '" WHERE usuario = "' . $_SESSION['k_username'] . '"')
  30.     or die(mysql_error());
  31.   echo 'El nick se ha guardado. No te olvides de actualizar $_SESSION para que ';
  32.   echo 'refleje los cambios y podamos seguir encontrando al usuario mediante su nick.<br>';
  33.   $_SESSION['k_username'] = $nuevo_nick;
  34. }
  35.  
  36. if(!empty($nueva_password)) { // Si el usuario ha escrito alguna contraseña...
  37.   mysql_query('UPDATE usuarios SET password = "' . $nueva_password . '" WHERE usuario = "' . $_SESSION['k_username'] . '"')
  38.     or die(mysql_error());
  39.   echo 'La contraseña se ha guardado correctamente.<br>';
  40. }
  41.  
  42. ?>
  43. <br><br>
  44. <a href="perfil.php">Volver a Mi Perfil</a>


Uno de los grandes cambios que deberías hacerle es como ya te dije el md5();
- Registro: en vez de grabar la contraseña graba el md5.
- validar_usuario: en vex de $f["password"] == $password pon $f["password"] == md5($password)
- en guardar.php: SET password = "' . $nueva_password . '" WHERE usuario lo sustituyes por
SET password = "' . md5($nueva_password) . '" WHERE usuario

Con eso tus contraseñas estarán protegidas a la hora de guardarlas.

Si tienes alguna duda más sobre la implementación o te da error no dudes en preguntar.
  #21 (permalink)  
Antiguo 08/09/2010, 11:51
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

muy bien la verdad excelente, muchas gracias me diste una gran ayuda.

ahora vere como hacer para que los usuarios puedan hacer comentarios estilo el facebook y que pueda elejir quien verlo
  #22 (permalink)  
Antiguo 08/09/2010, 12:36
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

uf! te queda un montón de trabajo por delante pero es fácil si te lo planteas bien.

Haz una tabla comentarios con el usuario que ha hecho el comentario, a quién se lo ha hecho, el contenido del comentario y yo personalmente la "visibilidad" (todos, mis amigos, extraños, etc.)
la haría con varias columnas bool. Así, si un registrado entra vería solo los que corresponde a extraños. si además es mi amigo al WHERE le añadimos los que tiene la columna amigos en Verdadero, y así.
  #23 (permalink)  
Antiguo 08/09/2010, 13:00
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: como crear un perfil de usuario?

una sugerencia sehun lo poco que vi del codigo puedes cambiar el usuario eso creo q no es muy optimo xq imagina que yo soy el usuario carlos_belisario cometo infracciones a tu pagina cosas que no deberia de hacer cualkiera como ya me tienes pillado cambio mi nick y paresco un usuario diferente o no?? el usuario deberia de ser unico y poder modificar todos sus datos menos el nick que se le ocurrio ingresar o es mi opinion ve en otras paginas por darte un ejemplo el correo de hotmail tu puedes cambiar todos tus datos menos tu correo incluso intenta cambiar el usuario en este foro y dime si te lo permite el codigo no lo revise mucho solo eso me llamo la atencion y por eso doy mi opinion noc ustedes que opinan saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #24 (permalink)  
Antiguo 08/09/2010, 13:16
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

muchas gracias por tu comentario tienes razon no me habia dado cuenta de ese punto es verdad.
  #25 (permalink)  
Antiguo 08/09/2010, 14:03
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

Te puedo hacer una pregunta ? mira tengo este codigo :

formulario.php

Cita:
<?php
if (isset($_GET['proceso'])){
echo $_GET['proceso']."<br>";
}
?>
<FORM enctype="multipart/form-data" method="post" action="insertar.php">
Archivo: <INPUT type="file" name="archivo" size="30">
<INPUT type="submit" name="submit" value="Subir archivo">
</FORM>
insertar.php
Cita:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['archivo']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","root") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("casuringa",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php"); // si ha ido todo bien
exit;
?>
listar_imagen.php
Cita:
<?php
mysql_connect("localhost","root") or die ("no se ha podido conectar a la BD");

mysql_select_db("casuringa") or die ("no se ha podido seleccionar la BD");

$sql = "SELECT id,archivo_nombre,archivo_tipo,archivo_peso FROM archivos";
$consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");

While ($registro=mysql_fetch_assoc($consulta)){
echo "<img src=\"ver.php?id=".$registro['id']."\">";
echo "<br> Nombre archivo: ".$registro['archivo_nombre'];
echo "<br> Tipo archivo (MIME formato): ".$registro['archivo_tipo'];
echo "<br> Peso: ".$registro['archivo_peso']." bytes.<br><br>";
}

?>
ver.php
Cita:
<?php
if(isset($_GET['id'])) {

// you may have to modify login information for your database server:
$conexion=mysql_connect("localhost","root") or die ("no se ha podido conectar a la BD");

mysql_select_db("casuringa") or die ("no se ha podido seleccionar la BD");

$sql = "SELECT archivo_nombre,archivo_binario,archivo_tipo,archiv o_peso FROM archivos WHERE id='".$_GET['id']."'";

$consulta = mysql_query($sql,$conexion);

$datos = mysql_result($consulta,0,"archivo_binario");
$tipo = mysql_result($consulta,0,"archivo_tipo");
$nombre = mysql_result($consulta,0,"archivo_nombre");
$peso = mysql_result($consulta,0,"archivo_peso");


header("Content-type: $tipo");
header("Content-length: $peso");
header("Content-Disposition: inline; filename=$nombre");

echo $datos;

}
?>
bien como veras este script funciona bien pero tengo una duda y es que no me doy cuenta como hacer para que las imagenes que se suben tengan que ver con el perfil del usuario osea que la foto sea su thumbnail? me entiendes, o complique mucho la pregunta?

gracias amigo
  #26 (permalink)  
Antiguo 08/09/2010, 15:07
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Yo también hice un sistema igual de avatares en su momento. Te falta dos cosas:

1. Para solucionar tu problema añade una columna más a la tabla archivos y le pones de nombre id_usuario por ejemplo. Cuando lo grabas no tienes más que grabar el id del usuario
y al recuperar la imagen solo tienes que añadir un filtro más con el id del usuario (que previamente habrás pasado a la página mediante $_GET), no se si me explico bien.

2. Deberías tener cuidado por si un usuario mete una imagen demasiado grande. En muchos servidores está habilitada la extensión GD. Consulta la documentación de PHP porque hay una función muy útil para hacer thumbnails de un tamaño concreto que te sería muy útil.
  #27 (permalink)  
Antiguo 08/09/2010, 15:17
Usuario no validado
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: como crear un perfil de usuario?

diras que pesado este tipo? jeje pero me has ayudado de verdad muchisimo

te puedo replicar la pregunta : me podrias esplicar tu como lo hiciste?

digo yo se hacerlo asi como esta en la pregunta anterior pero no entiendo lo que me haz querido decir en el primer punto (1. Para solucionar tu problema añade una columna más a la tabla archivos y le pones de nombre id_usuario por ejemplo. Cuando lo grabas no tienes más que grabar el id del usuario
y al recuperar la imagen solo tienes que añadir un filtro más con el id del usuario (que previamente habrás pasado a la página mediante $_GET), no se si me explico bien.)


disculpa mi ignorancia
  #28 (permalink)  
Antiguo 08/09/2010, 16:51
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Ya se que no me explique muy bien, perdona. Es que ahora mismito no tenía a mano los archivos que hice para los avatares. En cuanto pueda subo el código que yo usaba.
  #29 (permalink)  
Antiguo 08/09/2010, 21:24
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Sonrisa Respuesta: como crear un perfil de usuario?

bueno, yo puse el guardar y el ver el avatar en el mismo archivo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. define('THUMBNAIL_SIZE', 100);
  4.  
  5. ob_start(); // previene enviar nuevas lineas o espacios que corromperian la imagen y que provienen de otros archivos que incluyo
  6.  
  7.   require_once(...);
  8.  
  9.  
  10. $func = empty($_GET['func']) ? '' : $_GET['func'];
  11. $id = empty($_GET['id']) ? 0 : $_GET['id'];
  12.   settype($id, 'integer'); // me aseguro de que id es un integer
  13.  
  14. switch($func) {
  15.   case 'view':
  16.    // si especifica usuario
  17.     if($id > 0) {
  18.       // $db es una clase mia que me sirve para agrupar las funciones y ponerles tratamiento de errores
  19.       // aunque sus nombres son transparentes de sus equivalencias en mysql
  20.       $result = $db->query('SELECT * FROM avatars WHERE user = ' . $id);
  21.       $row = $db->fetch($result);
  22.       $db->free($result);
  23.      
  24.      // si tiene avatar lo envio y exit
  25.       if($row) {
  26.         header( 'Content-Type: ' . $row['mime'] );
  27.         echo $row['avatar'];
  28.         exit;
  29.       }
  30.     }
  31.    
  32.     // si no tiene o no especifica (usuario anónimo) abro y envio el predeterminado
  33.     $filename = 'images/sample-gravatar.jpg';
  34.     header('Content-Type: image/jpeg');
  35.     echo file_get_contents($filename);
  36.    
  37.     break;
  38.    
  39.   case 'save':
  40.    // $user es otra clase que controla las sesiones
  41.     if(!$user->isUser()) trigger_error('USER-RIGHTS-REQUIRED');
  42.  
  43.    // dos if's para comprobar que no hay errores
  44.     if(empty($_FILES['avatar']))
  45.       $err = 'AVATAR-UPLOAD-NO-FILE';
  46.     elseif($_FILES['avatar']['error'] == UPLOAD_ERR_FORM_SIZE) {
  47.       $err = 'AVATAR-UPLOAD-TOO-LARGE';
  48.     } elseif(is_uploaded_file($_FILES['avatar']['tmp_name'])) {
  49.       // mime types permitidos
  50.       $mimetypes = array('image/jpeg', 'image/pjpeg', 'image/gif', 'image/png');
  51.      
  52.       $size = $_FILES['avatar']['size'];
  53.       $type = $_FILES['avatar']['type'];
  54.       $tmp_name = $_FILES['avatar']['tmp_name'];
  55.      
  56.       // reviso el mime type y el tamaño
  57.       if(!in_array($type, $mimetypes)) $err = 'AVATAR-UPLOAD-BAD-MIMETYPE';
  58.       elseif($size < 200) $err = 'AVATAR-UPLOAD-TOO-SMALL';
  59.       elseif($size > 100000) $err = 'AVATAR-UPLOAD-TOO-LARGE';
  60.       else {
  61.         // si es correcta uso la extensión de PHP llamada GD para crear una copia
  62.         // de la imagen en memoria
  63.         switch($type) {
  64.           case $mimetypes[0]:
  65.           case $mimetypes[1]:
  66.             $img = imagecreatefromjpeg($tmp_name);
  67.             break;
  68.            
  69.           case $mimetypes[2]:
  70.             $img = imagecreatefromgif($tmp_name);
  71.             break;
  72.            
  73.           case $mimetypes[3]:
  74.             $img = imagecreatefrompng($tmp_name);
  75.             break;
  76.         }
  77.  
  78.         // si la libreria no ha tenido problemas, hago el avatar al tamaño que a mi me interesa      
  79.         if(!$img) $err = 'AVATAR-UPLOAD-BAD-FORMAT';
  80.         else {
  81.           $imgSize = getimagesize($tmp_name);
  82.          
  83.           $thumb = imagecreatetruecolor(THUMBNAIL_SIZE, THUMBNAIL_SIZE);
  84.           imagecopyresized($thumb, $img, 0, 0, 0, 0, THUMBNAIL_SIZE, THUMBNAIL_SIZE, $imgSize[0], $imgSize[1]);
  85.          
  86.           // Esto es un pequeño truco porque GD no permite obtener el binario
  87.           // de la imagen para guardarlo en la base de datos, así que lo que hago es
  88.          // escribir la imagen como si fuera a enviarse al cliente, pero activo el buffer para recuperar
  89.          // mñás tarde todo el código que se ha enviado.
  90.           ob_start(); // start buffering the output
  91.           switch($type) {
  92.             case $mimetypes[0]:
  93.             case $mimetypes[1]:
  94.               imagejpeg($thumb);
  95.               break;
  96.              
  97.             case $mimetypes[2]:
  98.               imagegif($thumb);
  99.               break;
  100.              
  101.             case $mimetypes[3]:
  102.               imagepng($thumb);
  103.               break;
  104.           }
  105.           $imgContents = ob_get_contents(); // Get the buffer and clean it.
  106.           ob_end_clean();
  107.          
  108.           // quito caracteres raros que puedan afectar a la hora de guardar
  109.           $imgContents = str_replace( '##', '\#\#', $db->escape($imgContents) );
  110.          
  111.           // inserto el nuevo avatar en la base de datos
  112.           $sql = 'INSERT INTO avatars(`user`, `mime`, `avatar`) VALUES
  113.            (' . $user->getId() . ', "' . $type . '", "' . $imgContents . '")
  114.            ON DUPLICATE KEY UPDATE mime = "' . $type . '", avatar = "' . $imgContents . '";';
  115.           $db->query($sql);
  116.  
  117.           // le digo al usuario que todo va bien
  118.           $template->addRedirect('/accounts/avatars.php');
  119.           trigger_error('AVATAR-UPLOADED');
  120.         }
  121.       }
  122.     } else
  123.       $err = 'AVATAR-UPLOAD-NO-FILE';
  124.    
  125.     // si el usuario llega aquí significa que ha ocurrido algún error
  126.     $template->assignVar('UPLOAD-ERROR', getPageMessage($err));
  127.     $template->load('accounts/avatars/profile-change');
  128.     $template->send();
  129.  
  130.     break;
  131. }
  132.  
  133.  
  134. ?>


EXPLICACIONES:

1. Junte dos páginas en una: la de ver, y la de guardar. de ahí el switch para diferenciarlas (de hecho en la versión original tenías muchas más secciones que no vienen a cuento). Si lo haces por primera vez mejor hacerlo separadas como lo tienes tu.

2. Las direcciónes para los avatares quedarían algo así:
VER -> /avatar.php?func=view&id=...
GUARDAR -> /avatar.php?func=save

3. Hay millones de maneras de hacerlo, yo te muestro la solución que usé. Seguramente no es la más elegante.

4. Hasta hace poco algunos de mis proyectos usaban el trigger_error(); intensivamente, y este código es ejemplo de ello. No te recomiendo que sigas el ejemplo y te insto en cambio a poner en vez de mi trigger_error este código:
Código PHP:
Ver original
  1. echo '...';
  2.   exit;
Es mucho más intuitivo.

5. Como ya te he dicho no es un código de ejemplo, es un pequeño recorte de un proyecto mio, que tiene variables que no están definidas en este archivo: $db, $template, $user, etc. pero espero sinceramente que te sirva para coger ideas y pequeños snnipets de código para tu sistema.

Y bueno, que cualquier pregunta más que no tengas problema en decirlo porque yo tampoco tengo problema en contestarte. =D
  #30 (permalink)  
Antiguo 08/11/2013, 09:01
 
Fecha de Ingreso: noviembre-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Respuesta: como crear un perfil de usuario?

Buenas!! Pfff estoy usando vuestros codigos porque quiero hacer algo similar y de entrada me tira

Cita:
Undefined index: k_username in C:\wamp\www\proyectolog\registrar.php on line 9
Hace tiempo que no toco nada de programacion web y quiero retomarlo haciendo un pequeño proyecto y uff me cuesta xD

Muchas gracias.

-> Era porque Ingresar me llevaba directamente al perfil y no a login y claro no habia sesion iniciada xD

De momento eso esta bien... falta todo lo demás xD

Gracias

Última edición por rafatroll123; 08/11/2013 a las 09:26 Razón: Fallo encontrado

Etiquetas: perfil, 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

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 08:15.