Autor
|
Tema: DUDA plataforma con muchos usuarios, gestion de imagenes (Leído 2,415 veces)
|
Pirat3net
Desconectado
Mensajes: 270
|
buenas, supongamos que estoy haciendo una plataforma en la que van a existir un numero muy grande de usuarios, y a estos, les voy a dar la posibilidad de que pongan una imagen en su pagina de usuario, a demas, les voy a dar la opcion de que puedanescribir , como en un foro vamos, y de que puedan subir imagenes para que se muestre en es articulo.
la pregunta es, cual es la mejor manera de tratar estas imagenes. es decir, les doy la opcion a que las suban por ftp, y las dejo en una carpeta en objetos/imagenes por ejemplo, o por ejemplo adapto la base de datos para que coja imagenes.....
como lo suelen hacer los foros?
|
|
|
En línea
|
|
|
|
-Joserra-
Desconectado
Mensajes: 25
|
es decir, les doy la opcion a que las suban por ftp, y las dejo en una carpeta en objetos/imagenes por ejemplo, o por ejemplo adapto la base de datos para que coja imagenes..... Tienes que hacer ambas, subir tu foto a algún directorio (ftp) y después guardar en la base de datos en un campo del usuario el path a la imagen. como lo suelen hacer los foros? Suelen usar este sistema, claramente añadiendo restricciones de resolución, de formatos etc. Aún así, cualquiera que conozca el directorio puede ver las imágenes, y aunque la restringas siempre lo podrán ver por url, pero mientras no sea una red social lo que pretendes hacer no te tienes que comer mucho la cabeza con eso. Te adjunto un código que tuve que desarrollar, es una modificación de un código en php que encontré por internet para subir imágenes: <?php ini_set("memory_limit", "200000000"); // for large images so that we do not get "Allowed memory exhausted"?>
<?php //$imageDirectory = "images_recent"; // slide directorio e intervalo // conexion $dbhost="localhost"; $dbusuario=""; $dbpassword=""; $db=""; $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword); mysql_select_db($db, $conexion); ?>
<script type="text/javascript">
<?php $uploaddir = 'images_recent/'; $uploaddirok = 'images/'; if ($handle = @opendir($imageDirectory)) { $i = 0; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $path = $imageDirectory; if(is_file($path.DIRECTORY_SEPARATOR.$file)) { $info = $path_parts = pathinfo($file); if ( (strtolower($info['extension']) == 'jpg') || (strtolower($info['extension']) == 'jpeg') || (strtolower($info['extension']) == 'pjpeg') || (strtolower($info['extension']) == 'gif') || (strtolower($info['extension']) == 'bmp') || (strtolower($info['extension']) == 'x-png')) { $file = addslashes($file); echo "picList[$i] = '$path/$file';\r\n"; $i++; } } } } } ?>
</script>
<?php //SQL INYECTION!!!!!!!!!!
if(!is_nan($_GET['nolike'])) { $query = mysql_query("SELECT * FROM imagennoveri"); $datos = mysql_fetch_array($query); while($datos){ if($datos[id]==$_GET['nolike'] && strcmp($datos[ip],$_SERVER['REMOTE_ADDR'])==0){ unlink($uploaddir.$_GET['nolike'].".jpg"); $numero=$_GET['nolike']; $query = mysql_query("DELETE FROM imagennoveri WHERE id = '$numero'"); echo "HA SIDO ELIMINADA"; } $datos = mysql_fetch_array($query); } } if (($_GET['silike'])>0) { $query = mysql_query("SELECT * FROM contadorsubidas WHERE yo='hola'"); $datos = mysql_fetch_array($query); $numerodefoto=$datos[contador]; copy("images_recent/".$_GET['silike'].".jpg","images/".$numerodefoto.".jpg"); //creamos la foto 100x100 //copy("images/".$numerodefoto.".jpg","imagesmini/".$numerodefoto.".jpg"); $new_image = imagecreatetruecolor(100, 100); //imagecreatetruecolor() returns an image identifier representing a black image of the specified size. list($image_width, $image_height) = getimagesize("images/".$numerodefoto.".jpg"); imagecopyresampled($new_image, imagecreatefromjpeg("images/".$numerodefoto.".jpg"), 0, 0, 0, 0, 100, 100, $image_width, $image_height); imagejpeg($new_image,"imagesmini/".$numerodefoto.".jpg",100); $numerodefoto=$numerodefoto+1; $fecha = time(); $sql = "UPDATE contadorsubidas SET contador = '$numerodefoto' WHERE yo = 'hola'"; mysql_query ($sql); $sql = sprintf("INSERT INTO imagen (fecha,extension,denunciado) VALUES ('%d','.jpg',0)",$fecha); mysql_query($sql); echo "HA SIDO SUBIDA"; } // upload the file if ((isset($_POST["submitted_form"])) && ($_POST["submitted_form"] == "image_upload_form")) { // file needs to be jpg,gif,bmp,x-png and 7 MB max if (($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg" || $_FILES["image_upload_box"]["type"] == "image/gif" || $_FILES["image_upload_box"]["type"] == "image/x-png") && ($_FILES["image_upload_box"]["size"] < 7000000)) { // tamano maximo de la foto $max_upload_width = 700; $max_upload_height = 400;
$query = mysql_query("SELECT * FROM contador1 WHERE soy='hola'"); $datos = mysql_fetch_array($query); $numerodefoto=$datos[contador];//obtener numero de la base de datos // JPG/JPEG if($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg"){ $image_source = imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]); //imagecreatefromjpeg() returns an image identifier representing the image obtained from the given filename. $uploadfile = $uploaddir . $numerodefoto.".jpg"; } //GIF if($_FILES["image_upload_box"]["type"] == "image/gif"){ $image_source = imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]); $uploadfile = $uploaddir . $numerodefoto.".gif"; } // BMP doesn't seem to be supported so remove it form above image type test (reject bmps) // if uploaded image was BMP if($_FILES["image_upload_box"]["type"] == "image/bmp"){ $image_source = imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]); $uploadfile = $uploaddir . $numerodefoto.".bmp"; } // if uploaded image was PNG if($_FILES["image_upload_box"]["type"] == "image/x-png"){ $uploadfile = $uploaddir . $numerodefoto.".png"; $image_source = imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]); } //AKI HAY QUE CAMBIAR EL ORIGEN DE DESTINO CON EL ID INDICADO //CAMBIAdO!!!!
move_uploaded_file($_FILES['image_upload_box']['name'], $uploadfile); $remote_file =$uploadfile; //"image_files/".$_FILES["image_upload_box"]["name"]; imagejpeg($image_source,$remote_file,100); //imagejpeg() creates a JPEG file from the given imag chmod($remote_file,0644);
// obtenemos la longitud de la imagen list($image_width, $image_height) = getimagesize($remote_file); // si las proporciones no coinciden redimensionar if($image_width != $max_upload_width || $image_height != $max_upload_height){ $proportions = $image_width/$image_height; if($image_width>$image_height){ $new_width = $max_upload_width; $new_height = round($max_upload_width/$proportions); } else{ $new_height = $max_upload_height; $new_width = round($max_upload_height*$proportions); } $new_image = imagecreatetruecolor($new_width , $new_height); //imagecreatetruecolor() returns an image identifier representing a black image of the specified size. $image_source = imagecreatefromjpeg($remote_file); imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height); imagejpeg($new_image,$remote_file,100); imagedestroy($new_image); } imagedestroy($image_source); $ip = $_SERVER['REMOTE_ADDR']; $fecha = time(); $sql = sprintf("INSERT INTO imagennoveri (fecha,extension,ip) VALUES ('%d','.jpg','%s')",$fecha,$ip); mysql_query($sql); $numerodefoto=$numerodefoto+1; $sql = "UPDATE contador1 SET contador = '$numerodefoto' WHERE soy = 'hola'"; mysql_query ($sql);
// hasta aqui hace bien $ok=1; } else{ // NO SE HA PODIDO SUBIR! $ok=0; } } mysql_close($conexion); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>BOOZINGA!!!!</title> <style type="text/css"> <!-- body,td,th { font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: 12px; }
.upload_message_success { padding:4px; background-color:#009900; border:1px solid #006600; color:#FFFFFF; margin-top:10px; margin-bottom:10px; }
.upload_message_error { padding:4px; background-color:#CE0000; border:1px solid #990000; color:#FFFFFF; margin-top:10px; margin-bottom:10px; }
--> </style></head>
<body onload="setCountDown();"> <!-- hasta div poner la galeria --> <div id="container"> <div id="header"><div id="header_left"></div> <div id="header_main">FOTOS RECIENTES!!!</div><div id="header_right"></div></div> <!--<div id="content"> <img src="<?php echo $path.'/'.$file; ?>" alt="pic" id="pic" border="1" /> </div>--> </div>
<h1 style="margin-bottom: 0px">OO</h1>
<form action="submit.php" method="post" enctype="multipart/form-data" name="image_upload_form" id="image_upload_form" style="margin-bottom:0px;"> <label>Image file, maximum 7MB. it can be jpg, gif, png:</label><br /> <input name="image_upload_box" type="file" id="image_upload_box" size="40" /> <input type="submit" name="submit" value="Upload image" /> <br /> <br />
<input name="submitted_form" type="hidden" id="submitted_form" value="image_upload_form" /> </form>
<?php if($ok==1){?> <p> <img src="/subir/<?php echo $remote_file;?>" /> <p><a href="/subir/submit.php?silike=<?php echo $numerodefoto-1;?>">PAGAR!</a></p> <p><a href="/subir/submit.php?nolike=<?php echo $numerodefoto-1;?>">NO ME GUSTA!</a></p> </p> <?php }?>
</body> </html>
|
|
|
En línea
|
|
|
|
Pirat3net
Desconectado
Mensajes: 270
|
waw, muy extenso tu codigo, nada mas lo empiezo a leer leo sql inyection conectado y me acojono xD, supongo sea para evitarla, voy a echarle un ojo, gracias por el codigo
|
|
|
En línea
|
|
|
|
Pirat3net
Desconectado
Mensajes: 270
|
por cierto, no se trata de una red social, seria un poco de loco competir con las actuales xD, los usuarios unicos seriamos yo y mi madre si acaso xD
|
|
|
En línea
|
|
|
|
Pirat3net
Desconectado
Mensajes: 270
|
while (false !== ($file = readdir($handle)))
¿¿ !== ?? primera vez que lo veo 0.o
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Como crear un .DLL con funciones de Logueo para muchos usuarios?
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Brian1511
|
11
|
6,207
|
12 Noviembre 2012, 19:52 pm
por seba123neo
|
|
|
Plataforma de intercambio de favores entre usuarios
Noticias
|
wolfbcn
|
0
|
1,733
|
6 Noviembre 2012, 02:32 am
por wolfbcn
|
|
|
We2 : La nueva plataforma para que los usuarios compartan su red WiFi
Noticias
|
wolfbcn
|
0
|
1,529
|
3 Noviembre 2013, 22:05 pm
por wolfbcn
|
|
|
Muchos de los usuarios de Windows XP no van a cambiar nada
Noticias
|
wolfbcn
|
0
|
1,897
|
18 Abril 2014, 12:54 pm
por wolfbcn
|
|
|
Facebook desvelará una plataforma de publicidad que rastreará a los usuarios
Noticias
|
wolfbcn
|
0
|
1,448
|
23 Septiembre 2014, 13:59 pm
por wolfbcn
|
|