Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] foto de perfil de usuarios registrados

Estas en el tema de foto de perfil de usuarios registrados en el foro de PHP en Foros del Web. como pueden los usuarios de mi web anadir una foto de perfil tengo un login de rejestro pero le falta anadir un formulario para que ...
  #1 (permalink)  
Antiguo 11/11/2013, 09:57
all7
Invitado
 
Mensajes: n/a
Puntos:
foto de perfil de usuarios registrados

como pueden los usuarios de mi web anadir una foto de perfil
tengo un login de rejestro pero le falta anadir un formulario para que los usuarios pueden agregar foto de perfil que hago una tabla a parte de la tabla de usuarios
o hago solo una columna para fotos de perfil en la tabla de usuarios estoy perdido
este es el registro de usuarios

<?php
include('acceso_db.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 (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-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 "No haz ingresado tu usuario ._.<a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
echo "No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>";
}elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(!valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
echo "El email ingresado no es válido. <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."'");
if(mysql_num_rows($sql) > 0) {
echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
}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_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', NOW())");
if($reg) {
echo "Datos ingresados correctamente.";
}else {
echo "ha ocurrido un error y no se registraron los datos.";
}
}
}
}else {
?>

<html>

<head>

<title>Registro de Usuarios</title>



</head>

<body>

<h1>Formulario de Registro!</h1>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" maxlength="15" /><br />
<label>Contraseña:</label><br />
<input type="password" name="usuario_clave" maxlength="15" /><br />
<label>Confirmar Contraseña:</label><br />
<input type="password" name="usuario_clave_conf" maxlength="15" /><br />
<label>Email:</label><br />
<input type="text" name="usuario_email" maxlength="50" /><br

<input type="submit" name="enviar" value="Registrar" />
<input type="reset" value="Borrar" />
</form>
<br />
<br />
<br />
<?php
}
?>

</body>

</html>










<?php


//conexion a la base de datos
require 'acceso_db.php';

//comprobamos si ha ocurrido un error.
if ( ! isset($_FILES["imagen"]) || $_FILES["imagen"]["error"] > 0){
echo "ha ocurrido un error";
} else {
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
//y que el tamano del archivo no exceda los 16mb
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
$limite_kb = 16384; //16mb es el limite de medium blob

if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024){

//este es el archivo temporal
$imagen_temporal = $_FILES['imagen']['tmp_name'];
//este es el tipo de archivo
$tipo = $_FILES['imagen']['type'];
//leer el archivo temporal en binario
$fp = fopen($imagen_temporal, 'r+b');
$data = fread($fp, filesize($imagen_temporal));
fclose($fp);
//escapar los caracteres
$data = mysql_escape_string($data);

$resultado = mysql_query("INSERT INTO imagenes (imagen, tipo_imagen) VALUES ('$data', '$tipo')");
if ($resultado){
echo "el archivo ha sido copiado exitosamente";
} else {
echo "ocurrio un error al copiar el archivo.";
}
} else {
echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
}
}
?>




gracias pot todo
  #2 (permalink)  
Antiguo 11/11/2013, 10:48
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: foto de perfil de usuarios registrados

Holas, all7.

Antes que nada, recuerda que si vas a colocar código fuente en tus posts, encapsúlalos en las etiquetas de código, que así como lo colocas es ilegible y pocos querrán ayudarte.

Respecto a tu duda, yo te sugiero estas 3 posibilidades (y sin leer tu código fuente):

a) Agregar un campo tipo binario a la tabla de usuarios, donde cargues el archivo de la foto.

b) Agregar un campo tipo varchar a la tabla de usuarios, donde puedas escribir la ruta al archivo de la foto en la carpeta del servidor donde se guardan dichas fotos; si la foto no está en el servidor, igual esto te sirviría, ya que puedes almacenar la ruta absoluta del archivo, por ejemplo, "http://otrositio.com/lafoto.jpg".

c) No agregar ningún campo a la base de datos, pues harás que el nombre de cada foto sea exactamente el mismo que el del campo que es la PK de la tabla (el típico "id de usuario"). De este modo, tu aplicación va a buscar a la carpeta destinada a las fotos, el archivo que se llame "juanito.jpg" del usuario con identificador "juanito".

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 11/11/2013, 11:49
all7
Invitado
 
Mensajes: n/a
Puntos:
gracias por tu respuesta

esta es mi tabla tengo que anadir un binario aqui como


CREATE TABLE IF NOT EXISTS `usuarios` (
`usuario_id` int(4) NOT NULL AUTO_INCREMENT,
`usuario_nombre` varchar(15) NOT NULL DEFAULT '',
`usuario_clave` varchar(32) NOT NULL DEFAULT '',
`usuario_email` varchar(50) NOT NULL DEFAULT '',
`usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`tipo` enum('2','1') NOT NULL DEFAULT '2',
`facebook` varchar(250) NOT NULL,
`twitter` varchar(250) NOT NULL,
`avatar` varchar(500) NOT NULL,
PRIMARY KEY (`usuario_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  #4 (permalink)  
Antiguo 11/11/2013, 12:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: foto de perfil de usuarios registrados

pero si tienes el campo avatar, por que no lo usas?
  #5 (permalink)  
Antiguo 12/11/2013, 02:13
all7
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: foto de perfil de usuarios registrados

gracias por la respuesta como puedo utilizar el campo avatar es dicir hay que tener un formulario para subir los avatares de los usuarios ayudame te lo agradesco

Etiquetas: formulario, foto, html, mysql, perfil, registro, select, sql, tabla, 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 19:50.