Foros del Web » Programando para Internet » PHP »

Sistema de Usuarios Perfiles AVATARES

Estas en el tema de Sistema de Usuarios Perfiles AVATARES en el foro de PHP en Foros del Web. Hola amigos nuevamente saludando por aca y con unas dudas. Tengo mi sistema de usuarios que incluye Avatar, el primero problema que tengo es el ...
  #1 (permalink)  
Antiguo 14/02/2012, 05:18
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 12 años, 10 meses
Puntos: 0
Sistema de Usuarios AVATARES

Hola amigos nuevamente saludando por aca y con unas dudas.

Tengo mi sistema de usuarios que incluye Avatar, el primero problema que tengo es el siguiente en el area del registro yo puse que los usuarios puedan poner un avatar, pero como mi sistema no es tan avanzado tu foto de perfil no la puedes subir desde tu pc, sera la url de una imagen de google, este es mi codigo:

Código PHP:
<?php
    
include('config.php'); // incluimos el archivo de conexión a la Base de Datos
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email
        
function valida_email($correo) {
        if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$correo)) return true;
        else return 
false;
        } 
        
// Procedemos a comprobar que los campos del formulario no estén vacíos
        
$sin_espacios count_chars($_POST['usuario_nombre'], 1);
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "".text_register_username."";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "".text_register_password."";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "".text_register_password_match."";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
            
echo "".text_register_email_used."";
        }elseif(empty(
$_POST['usuario_avatar'])) { // validamos que el email ingresado sea correcto
            
echo "SE TE OLVIDO PONER EL AVATAR MEN! <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']);
            
$usuario_avatar mysql_real_escape_string($_POST['usuario_avatar']);
            
// comprobamos que el usuario ingresado no haya sido registrado antes
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre = '$usuario_nombre'"
            or die (
mysql_error());
            if(
mysql_num_rows($sql) > 0) {
                echo 
"".text_register_user_used."";
            }else {
                
$usuario_clave md5($usuario_clave); // encriptamos la contraseña ingresada con md5
                // ingresamos los datos a la BD
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())");
                if(
$reg) {
                    echo 
"".text_register_successfully."";
                }else {
                    echo 
"".text_register_error."";
                }
            }
        }
    }else {
?>
    <form action="index.php?page_id=registro" method="post">
        <label><?php echo text_register_username?></label><br />
        <input type="text" name="usuario_nombre" maxlength="15" /><br />
        <label><?php echo text_register_password?></label><br />
        <input type="password" name="usuario_clave" maxlength="15" /><br />
        <label><?php echo text_register_password_repeat?></label><br />
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
        <label><?php echo text_register_email?></label><br />
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <label>AVATAR</label><br />
        <input type="text" name="usuario_avatar" maxlength="250" /><br />
        <input type="submit" name="enviar" value="<?php echo text_button_account_create?>" />
        <input type="reset" value="<?php echo text_button_register_cleaner?>" />
    </form>
<?php
    
}
?>
Pero yo dije y si la persona no tiene una imagen en ese momento pues que mi sistema le ponga una imagen de vatar por default y mi sistema me quedo de la siguiente forma:

Código PHP:
<?php
    
include('config.php'); // incluimos el archivo de conexión a la Base de Datos
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email
        
function valida_email($correo) {
        if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$correo)) return true;
        else return 
false;
        } 
        
// Procedemos a comprobar que los campos del formulario no estén vacíos
        
$sin_espacios count_chars($_POST['usuario_nombre'], 1);
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "".text_register_username."";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "".text_register_password."";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "".text_register_password_match."";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
            
echo "".text_register_email_used."";
        }elseif(empty(
$_POST['usuario_avatar'])) { // validamos que el email ingresado sea correcto
            
echo "SE TE OLVIDO PONER EL AVATAR MEN! <a href='javascript:history.back();'>Reintentar</a>";
        }else {            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']);
            
// comprobamos que el usuario ingresado no haya sido registrado antes
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre = '$usuario_nombre'"
            or die (
mysql_error());
            if(
mysql_num_rows($sql) > 0) {
                echo 
"".text_register_user_used."";
            }else {
                
$usuario_clave md5($usuario_clave); // encriptamos la contraseña ingresada con md5
                // ingresamos los datos a la BD
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', 'images/no_avatar.jpg', NOW())");
                if(
$reg) {
                    echo 
"".text_register_successfully."";
                }else {
                    echo 
"".text_register_error."";
                }
            }
        }
    }else {
?>
    <form action="index.php?page_id=registro" method="post">
        <label><?php echo text_register_username?></label><br />
        <input type="text" name="usuario_nombre" maxlength="15" /><br />
        <label><?php echo text_register_password?></label><br />
        <input type="password" name="usuario_clave" maxlength="15" /><br />
        <label><?php echo text_register_password_repeat?></label><br />
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
        <label><?php echo text_register_email?></label><br />
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <label>AVATAR</label><br />
        <input type="text" name="usuario_avatar" maxlength="250" /><br />
        <input type="submit" name="enviar" value="<?php echo text_button_account_create?>" />
        <input type="reset" value="<?php echo text_button_register_cleaner?>" />
    </form>
<?php
    
}
?>
El problema que se sucita esque si la persona SI tiene una imagen de avatar y la pone el sistema de registra pero no te agarra tu imagen, registra la imagen que el sistema pone por default que se llama no_avatar.jpg pero yo quiero que la persona tenga la posibilidad de poner la url de su imagen, espero me puedan ayudar con esto.
  #2 (permalink)  
Antiguo 14/02/2012, 05:26
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 12 años, 10 meses
Puntos: 0
Sistema de Usuarios Perfiles AVATARES

Hola abro otro post porque el anterior iva a ser demasiado largo y el foro no me dejo xD.

El otro Problema que tengo es del mismo tema de los Avatares pero en el editor de perfil de los usuarios, tengo un modulo que se llama: edit_avatar.php y este es el codigo:
Código PHP:
<?php
    session_start
();
    include(
'config.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
     
    
// Recogemos el usuario en un Array($usuario)
    
$result mysql_query('SELECT * FROM usuarios WHERE usuario_id= "' $_SESSION['usuario_id'] . '"')
      or die(
mysql_error());
    
$usuario mysql_fetch_array($result);
    
mysql_free_result($result);
     
    
?>
     
    <h1>Editando Mi Perfil</h1>
     
    <p>Mostramos los campos de formulario para que editen las cosas.</p>
    <p>Fíjate especialmente en que nick y otros ya están rellenados mientras que la
      contraseña por seguridad NO.</p>
     
    <form action="index.php?page_id=avatar_save" method="post">
     <br>
     <img src="<?php echo $usuario['usuario_avatar']; ?>" width="48" height="42" />
      <b>Avatar: </b>
      <input type="text" name="usuario_avatar" id="usuario_avatar" value="">
     
      <br><br>
      <input type="submit" value="Guardar datos">
    </form>
     
    <br />
    <i>En una situación perfecta aquí debería haber dos campos de contraseña para que el usuario
      la reescribiese para confirmarla.</i>
     
    <br><br>
     
    <a href="index.php?page_id=perfil">Cancelar</a>
    <?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='index.php?page_id=login'>Ingresar</a> / <a href='index.php?page_id=registro'>Regitrarme</a>"
;
    }
?>
y este es el de avatar_save.php donde hace la consulta sql y todo:
Código PHP:
<?php
    session_start
();
    include(
'config.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
     
    
// Recogemos el usuario en un Array($usuario)
    
$result mysql_query('SELECT * FROM usuarios WHERE usuario_nombre = "' $_SESSION['usuario_nombre'] . '"')
      or die(
mysql_error());
    
$usuario mysql_fetch_array($result);
    
mysql_free_result($result);
     
    
// Ahora tenemos que recoger las variables que ha enviado el formulario
    // Puedes hacerlo con el método que quieras. Yo por experiencia suelo usar
    // este porque en caso de que haya fallos en el envio, protege de errores en el servidor
     
    
$nuevo_avatar = empty($_POST['usuario_avatar']) ? '' $_POST['usuario_avatar'];
     
     if(!empty(
$nuevo_avatar)) { // Si el usuario ha escrito alguna contraseña...
      
mysql_query('UPDATE usuarios SET usuario_avatar = "' $nuevo_avatar '" WHERE usuario_nombre = "' $_SESSION['usuario_nombre'] . '"')
        or die(
mysql_error());
      echo 
'Se Cambio el Avatar correctamente.<br>';
    }
     
    
?>
    <br><br>
    <a href="index.php?page_id=perfil">Volver a Mi Perfil</a>
<?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='index.php?page_id=login'>Ingresar</a> / <a href='index.php?page_id=registro'>Regitrarme</a>"
;
    }
?>
Pero, yo quise incluir la posibilidad de que el usuario pueda suvir una foto desde su computadora usando el boton de examinar y asi me quedaron mis codigos:

edit_avatar.php
Código PHP:
<?php
    session_start
();
    include(
'config.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
     
    
// Recogemos el usuario en un Array($usuario)
    
$result mysql_query('SELECT * FROM usuarios WHERE usuario_id= "' $_SESSION['usuario_id'] . '"')
      or die(
mysql_error());
    
$usuario mysql_fetch_array($result);
    
mysql_free_result($result);
     
    
?>
     
    <h1>Editando Mi Perfil</h1>
     
    <p>Mostramos los campos de formulario para que editen las cosas.</p>
    <p>Fíjate especialmente en que nick y otros ya están rellenados mientras que la
      contraseña por seguridad NO.</p>
     
    <form action="index.php?page_id=avatar_save" method="post">
     <br>
     <img src="<?php echo $usuario['usuario_avatar']; ?>" width="48" height="42" />
      <b>Avatar: </b>
      <input type="file" name="usuario_avatar" id="usuario_avatar" />
     
      <br><br>
      <input type="submit" value="Guardar datos">
    </form>
     
    <br />
    <i>En una situación perfecta aquí debería haber dos campos de contraseña para que el usuario
      la reescribiese para confirmarla.</i>
     
    <br><br>
     
    <a href="index.php?page_id=perfil">Cancelar</a>
    <?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='index.php?page_id=login'>Ingresar</a> / <a href='index.php?page_id=registro'>Regitrarme</a>"
;
    }
?>
save_avatar.php

Código PHP:
<?php
    session_start
();
    include(
'config.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
     
    
// Recogemos el usuario en un Array($usuario)
    
$result mysql_query('SELECT * FROM usuarios WHERE usuario_nombre = "' $_SESSION['usuario_nombre'] . '"')
      or die(
mysql_error());
    
$usuario mysql_fetch_array($result);
    
mysql_free_result($result);
     
    
// Ahora tenemos que recoger las variables que ha enviado el formulario
    // Puedes hacerlo con el método que quieras. Yo por experiencia suelo usar
    // este porque en caso de que haya fallos en el envio, protege de errores en el servidor
     
    
$nuevo_avatar = empty($_POST['usuario_avatar']) ? '' $_POST['usuario_avatar'];
     
     if(!empty(
$nuevo_avatar)) { // Si el usuario ha escrito alguna contraseña...
      
mysql_query('UPDATE usuarios SET usuario_avatar = "images/users/' $nuevo_avatar '" WHERE usuario_nombre = "' $_SESSION['usuario_nombre'] . '"')
        or die(
mysql_error());
      echo 
'Se Cambio el Avatar correctamente.<br>';
    }
     
    
?>
    <br><br>
    <a href="index.php?page_id=perfil">Volver a Mi Perfil</a>
<?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='index.php?page_id=login'>Ingresar</a> / <a href='index.php?page_id=registro'>Regitrarme</a>"
;
    }
?>
El problema esque no me sube las imagenes al directorio que le puse ahi, y cuando voy a mi perfil no me aparece la imagen pero cuando veo la direccion de la imagen me la da pero la carpeta donde deveria de subirse las imagenes siempre esta vacia, osea que no funciona, yo se que deve ser más complejo que esto que yo hize pero ya no se como hacerlo, espero puedan ayudarme nuevamente y se los agradesco de antemano...
  #3 (permalink)  
Antiguo 14/02/2012, 06:59
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Sistema de Usuarios Perfiles AVATARES

http://www.desarrolloweb.com/articulos/1307.php
__________________
Fere libenter homines, id quod volunt, credunt.
  #4 (permalink)  
Antiguo 14/02/2012, 13:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Sistema de Usuarios Perfiles AVATARES

Cita:
Iniciado por repara2 Ver Mensaje
[url]http://www.desarrolloweb.com/articulos/1307.php[/url]
Hola gracias por el link me parece que ya lo avia visto, creo que este me puede servir para la edición del avatar ya que en el registro no sabria como adaptarlo ya que no soy tan experto...
  #5 (permalink)  
Antiguo 17/02/2012, 08:10
 
Fecha de Ingreso: agosto-2006
Ubicación: Girardot
Mensajes: 27
Antigüedad: 18 años, 4 meses
Puntos: 2
De acuerdo Respuesta: Sistema de Usuarios Perfiles AVATARES

Cita:
Iniciado por J0RG325 Ver Mensaje
parece que en este foro casi no ayudan, solo dan links, quiza podrian ayudarnos más a los que savemos menos!
Mira te doy el siguiente código que utilizo:

#Obtenemos el número total de registros
$sql = "SELECT Count(id) AS numero FROM tabla"; #Contamos cuántos hay
$qry = mysql_query($sqlInm,$conexion);
$row = mysql_fetch_object($qry);
$num = $row->numero + 1; #Sumamos 1 al total de registros


#Nombre de la imagen con respecto al inmueble
$prefijo = $num. "_avatar.jpg";


#Directorio destino de las imágenes
$carpeta = '../fotosinmu/';


#Captura de imágenes desde el formulario y
#Reemplazamos el nombre original del archivo de la imágen
$_FILES['img']['name'] = $prefijo;


#Copia el archivo de la imágen a la carpeta de destino
if($_FILES['img']['name'] != ""){
if(@copy($_FILES['img']['tmp_name'], $carpeta.$_FILES['img']['name'])){
$avatar = $_FILES['img']['name'];
}else{
$avatar = NULL;
}
}


Y si quieres después modificar el avatar, guardar el actual avatar en un hidden
<input hidden name="hdnAvatar" values="<?php echo $row->campo del avatar"; ?>


$avatar = $_POST['hdnAvatar'];

#Modifica el archivo de la imágen a la carpeta de destino
if($_FILES['img']['name'] != ""){
if(@copy($_FILES['img']['tmp_name'], $carpeta.$_FILES['img']['name'])){
$avatar = $_FILES['img']['name'];
}else{
$avatar = $avatar /*Acá irá el registro del actual avatar (el original)*/;
}
}

Etiquetas: formulario, imagenes, mysql, perfiles, registro, sistema, sql, usuarios, variables, avatar
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 12:55.