Comunidad PHPeros
Lenguajes => PHP => Mensaje iniciado por: -Pituko- en 07 de Agosto de 2011, 16:38:18 pm
-
Tengo un campo blob en una tabla MySQL donde subo imágenes.
Pero no se suben completas al campo blob y utilize el tutorial de naveda.
Código de subida:
<?php
if(isset($_SESSION['nick'])) {
?>
<form enctype="multipart/form-data" method="POST">
Selecciona una imagen para usar como avatar:<br />
<input type="file" name="imagen" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
if(isset($_POST['enviar'])) {
$tipos = array("image/gif","image/jpeg","image/bmp","image/pjpeg", "image/png");
$maximo = 102400; //100Kb
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
if (in_array($_FILES['imagen']['type'],$tipos) && $_FILES['imagen']['size'] <= $maximo) {
list($l, $a, $t, $attr) = getimagesize($_FILES['imagen']['tmp_name']);
if(($l <= 200 and $a <= 200)&&($l > 20 and $a > 20)) {
$fp = fopen($_FILES['imagen']['tmp_name'], 'r');
$imagen = fread($fp, filesize($_FILES['imagen']['tmp_name']));
$imagen = addslashes($imagen);
fclose($fp);
if(!get_magic_quotes_gpc())
$nombre = addslashes($_FILES['imagen']['name']);
else
$nombre = $_FILES['imagen']['name'];
$data = mysql_query("UPDATE usuarios SET avatar = '".$imagen."' WHERE nick = '".$_SESSION['nick']."'");
$data2 = mysql_query("UPDATE usuarios SET tipoavatar = '".$_FILES['imagen']['type']."' WHERE nick = '".$_SESSION['nick']."'");
if ($data and $data2)
echo 'Avatar cambiado correctamente.';
else
echo "Hubo un error al cambiar de avatar";
} else
echo "La Dimensión de la imagen es inapropiada";
} else
echo "El formato del archivo no es correcto o es mayor de 100Kb";
} else
echo "La imagen no ha sido subida";
}
} else
echo "Necesitas estar logueado para cambiar tu avatar";
?>
Código del visor:
<?php
//Conexión MySQL//
$query = mysql_query("SELECT * FROM usuarios WHERE id = '".$_GET['id']."'")or die(false);
if (!mysql_num_rows($query))
exit(header("HTTP/1.0 404 Not Found"));
else {
$datos = mysql_fetch_array($query);
header("Content-Type: ".$datos['tipoavatar']);
echo $datos['avatar'];
}
?>
Utilice mi imagen de perfil de acá a subir y así se ve:
(http://ildomeros.tk/verav.php?id=1)
¿Me pueden ayudar?, he buscado en google y nada que nada, he buscado y pensado a que se puede deber el error y tampoco se me ocurre nada.
Hice uno que otro cambio en el código pero aún así no encuentro error D:.
-
Puede que el campo no sea lo suficientemente grande, usa otro tipo de blob (bigblob puede ser, no recuerdo, solo recuerdo que hay smallblob, y mediumblob)
-
Puede que el campo no sea lo suficientemente grande, usa otro tipo de blob (bigblob puede ser, no recuerdo, solo recuerdo que hay smallblob, y mediumblob)
Probe con longblob y perfecto, estaba usando el blob normal.
K+
-
Yo, siempre que pueda elegir entre un campo que pueda albergar 255 caracteres (varchar) por ejemplo, y un campo que pueda albergar muchos mas carácteres (text) la mayoría de las veces voy a elegir el que más caracteres puede albergar, ya que nunca se sabe cuánto se va a ocupar.
No hay que pensar como administrador, si no como usuario.
Saludos!
-
Yo, siempre que pueda elegir entre un campo que pueda albergar 255 caracteres (varchar) por ejemplo, y un campo que pueda albergar muchos mas carácteres (text) la mayoría de las veces voy a elegir el que más caracteres puede albergar, ya que nunca se sabe cuánto se va a ocupar.
No hay que pensar como administrador, si no como usuario.
Saludos!
Eso no es diseñar correctamente una base de datos. Se debe especificar un máximo de caracteres conforme a los requerimientos del sistema que estés desarrollando.
Las cosas se deben analizar previamente.
-
Eso no es diseñar correctamente una base de datos. Se debe especificar un máximo de caracteres conforme a los requerimientos del sistema que estés desarrollando.
Las cosas se deben analizar previamente.
¿Quien dijo que no analizo las cosas previamente? Yo se perfectamente como he de estructurar mi base de datos. Ha sido un mero ejemplo.
Saludos.
-
¿Quien dijo que no analizo las cosas previamente? Yo se perfectamente como he de estructurar mi base de datos. Ha sido un mero ejemplo.
Saludos.
Me he basado en tu ejemplo para publicar lo que puse. Si tú sabes lo que se va a guardar, y conforme a los requerimientos se debe calcular más o menos cuanto ocupará, ya que poner siempre el de mayor capacidad pudiendo colocar uno menor no tiene sentido.
-
Re*****... yo se estructurar mis bases de datos... como leerás mas arriba, he dicho "la mayoría de las veces" pero eso no quiere decir un "siempre" y vuelvo a repetir, que yo se estructurar perfectamente mis bases de datos, y nunca, nunca me ha dado ningun problema.
-
Re*****... yo se estructurar mis bases de datos... como leerás mas arriba, he dicho "la mayoría de las veces" pero eso no quiere decir un "siempre" y vuelvo a repetir, que yo se estructurar perfectamente mis bases de datos, y nunca, nunca me ha dado ningun problema.
Te estás ahogando en un vaso de agua... Con calma, relájate un poco. Aquí vamos de nuevo:
la mayoría de las veces voy a elegir el que más caracteres puede albergar, ya que nunca se sabe cuánto se va a ocupar.
Me baso en esta cita para publicar esto:
"Eso no es diseñar correctamente una base de datos. Se debe especificar un máximo de caracteres conforme a los requerimientos del sistema que estés desarrollando.
Las cosas se deben analizar previamente."
No he dicho que seas malo diseñando bases de datos. He dicho que lo que has mencionado no es una buena práctica ya que si conoces lo que estás programando debes estipular un máximo aproximado del espacio que vas a necesitar en un campo determinado.
-
Te voy a poner un ejemplo:
Un campo: "password".
Un usuario normal puede poner una contraseña de 6 a 12 caracteres aprox.
Un usuario preocupado por la seguridad puede poner una contraseña de 40 a 255 aprox.
Es poco ético, pero es así. Una contraseña nunca sabes lo que pueden poner, no se si me entiendes.
Saludos.
-
Te voy a poner un ejemplo:
Un campo: "password".
Un usuario normal puede poner una contraseña de 6 a 12 caracteres aprox.
Un usuario preocupado por la seguridad puede poner una contraseña de 40 a 255 aprox.
Es poco ético, pero es así. Una contraseña nunca sabes lo que pueden poner, no se si me entiendes.
Saludos.
Permitir una contraseña de 255 caracteres es completamente inútil. Con 12 caracteres la contraseña ya es suficientemente segura. Además, si lo encriptas en md5 (que se debe hacer, o sha1, o lo que sea) bastarían 32 caracteres.
-
*****!! Vale! Pues he cometido un error! Lo reconozco :P Todo el mundo comete errores!!!
-
Te voy a poner un ejemplo:
Un campo: "password".
Un usuario normal puede poner una contraseña de 6 a 12 caracteres aprox.
Un usuario preocupado por la seguridad puede poner una contraseña de 40 a 255 aprox.
Es poco ético, pero es así. Una contraseña nunca sabes lo que pueden poner, no se si me entiendes.
Saludos.
¿No soy especialista en el tema de los hash de seguridad, pero existe alguno que codifique en 255 caracteres?
Sería buena idea que buscaras otro ejemplo para explicar tu punto.
*****!! Vale! Pues he cometido un error! Lo reconozco :P Todo el mundo comete errores!!!
No es por nada, pero siento que tu actitud se está tornando un poco infantil. Lo dices en plan: "AY CARAJO NO ME JODAN, QUE ACASO NO ME PUEDO EQUIVOCAR?". Él lo ha hecho en buen plan, al igual que yo.
Igual puede ser que me equivoque, es dificil entender qué intentan expresar las personas mediante texto.
-
Aveer... para el que no lo ha entendido Physlet. Lo he dicho con todo el amor hacia vosotras ^^ Soy humano, cometo *****eces y tengo errores.
Un error de programación/maquetación siempre tiene solución.
Saludos!
-
Aveer... para el que no lo ha entendido Physlet. Lo he dicho con todo el amor hacia vosotras ^^ Soy humano, cometo *****eces y tengo errores.
Un error de programación/maquetación siempre tiene solución.
Saludos!
Los de programación tienen solución, al igual que los de actitud.
Saludos.